我在写我的第一个perl脚本,无法编译它。我想读入一个文件并将每条与正则表达式匹配的行输出到一个新文件中。我得到一个“全局符号需要显式包名”的错误,这似乎与我读过的变量作用域有关。我无法弄清楚我的代码有什么问题。
代码:
#!/usr/bin/perl -w
use strict;
use warnings;
print "Stripping lines from data dump where WREN column is FFF\n"
my $infilename = "./test_in.txt";
my $outfilename = "./test_out.txt";
my $in = undef;
open($in, "<", $infilename) or die "Can't open $infilename: $!";
open(my $out, ">", $outfilename) or die "Can't open $outfilename: $!";
while (<$in>) { # assigns each line in turn to $_
if (/.{73}FFF/){
print $out $_;
}
}
错误消息:
syntax error at strip_nonwrites.pl line 8, near "my "
Global symbol "$infilename" requires explicit package name at strip_nonwrites.pl line 8.
Global symbol "$infilename" requires explicit package name at strip_nonwrites.pl line 12.
Global symbol "$infilename" requires explicit package name at strip_nonwrites.pl line 12.
Execution of strip_nonwrites.pl aborted due to compilation errors.
在第5行的print语句中添加一个分号';'。当您使用'use warnings'时,不需要在'shebang'行中添加'-w',它们都有相同的含义。 – serenesat
@serenesat,'-w'也会影响模块(假设它们没有'使用警告')。 – ikegami
[全局符号需要显式包名称](http:// stackoverflow。COM /问题/ 3141412 /全局符号需要显式包名) –