【发布时间】:2011-05-31 22:23:33
【问题描述】:
当我尝试最后一个示例时 perlfaq5: How-do-I-count-the-number-of-lines-in-a-file? 我收到一条错误消息。 我应该怎么做才能让脚本正常工作?
#!/usr/local/bin/perl -T
use warnings;
use 5.012;
$ENV{PATH} = undef;
my $filename = 'perl2.pl';
if( $filename =~ /^([0-9a-z_.]+)\z/ ) {
my $lines = `/usr/bin/wc -l $1`;
print $lines;
}
输出:
Insecure $ENV{ENV} while running with -T switch at ./perl1.pl line 10.
【问题讨论】:
-
好问题。但是顺便说一句,即使
wc -l可能是大文件中最快的,尝试使用这样的正则表达式获取文件名将在包含异常字符的文件名上失败(如果您放松正则表达式,则需要添加引用 shell 命令,你永远无法确定你引用的所有内容都完全正确......) -
是否有其他方法可以清除文件名?
-
Mastering Perl 中的安全章节汇集了您需要了解的有关污染的所有信息。