# file: find_file.pl
# author: zby
# descript: with module File::Find to get the files your wanted
# date: 2016-11-16
#!/usr/bin/perl
use strict;
use utf8;
use File::Find (); # 调用File::Find模块,注意这里后面的()表示不导入名称空间,即不能使用find简写来调用File::Find::find()
no warnings 'File::Find'; # 使用File::Find模块时不报错
our @dirs = @ARGV; # 取外部参数作为目录列表
our $pat = '\.tar$|\.txt$|\.pl$'; # 匹配模式
open FH,'>','1.txt' or die "1.txt can not open :$!\n"; # 打开文件句柄
sub wanted {
if ($_ =~ /$pat/) { # 匹配模式绑定$_
print FH "$File::Find::name logged!\n"; # 打印匹配文件名到文件句柄
}
}
File::Find::find({wanted=>\&wanted,no_chdir=>1},@dirs); # 注意这里wanted是个回调函数,相当于把find的结果作为wanted的输入,
# 即$_,$File::Find::name,$File::Find::dir动态发给了wanted
# no_chdir 使$_=$File::Find::name
close FH; # 关闭文件句柄
exit; # 退出程序
perl源码:find_file.pl
最新推荐文章于 2023-12-26 17:10:29 发布