【发布时间】:2010-10-05 02:17:34
【问题描述】:
我最近开始学习 Perl,我最近的一项任务是在一堆文件中搜索特定的字符串。用户提供目录名称作为参数,程序在该目录中的所有文件中搜索模式。使用readdir(),我设法构建了一个包含所有可搜索文件名的数组,现在需要搜索每个文件的模式,我的实现看起来像这样 -
sub searchDir($) {
my $dirN = shift;
my @dirList = glob("$dirN/*");
for(@dirList) {
push @fileList, $_ if -f $_;
}
@ARGV = @fileList;
while(<>) {
## Search for pattern
}
}
我的问题是 - 是否可以像上面那样手动加载 @ARGV 数组并使用 操作符扫描单独的行,或者我应该单独打开/扫描/关闭每个文件?如果这个处理存在于子程序中而不存在于主函数中,会有什么不同吗?
【问题讨论】:
-
我强烈建议你不要在你的函数中使用原型。原因见stackoverflow.com/questions/297034/…