【发布时间】:2011-07-11 15:10:37
【问题描述】:
我已经编写了以下 perl 脚本,但问题是它总是进入 else 部分并且报告不是文件。我在输入的目录中确实有文件。我在这里做错了什么?
我的要求是递归访问目录中的每个文件,打开它并以字符串形式读取它。但是逻辑的第一部分失败了。
#!/usr/bin/perl -w
use strict;
use warnings;
use File::Find;
my (@dir) = @ARGV;
find(\&process_file,@dir);
sub process_file {
#print $File::Find::name."\n";
my $filename = $File::Find::name;
if( -f $filename) {
print " This is a file :$filename \n";
} else {
print " This is not file :$filename \n";
}
}
【问题讨论】:
-
这段代码对我来说似乎工作得很好(XP 上的 ActiveState Perl 5.10)。你怎么称呼你的脚本? “但是逻辑的第一部分失败了。”究竟是什么意思?
-
您使用的是哪个平台?哪个 perl 版本?
-
“我的要求是递归访问目录中的每个文件,打开它并以字符串的形式读取它。但是逻辑的第一部分失败了。”我的意思是逻辑的第一部分,访问目录中的每个文件。我的文件检查失败。
-
@TopCoder: 那是
which的版本,你只需要perl --version或perl -V,或者$(which perl) --version或$(which perl) -V如果perl不在你的PATH中. -
抱歉,这是正确的版本:perl, v5.8.8 built for x86_64-linux-thread-multi