我的perl脚本出了问题:
use strict;
use warnings;
use autodie;
my $out = "result2.txt";
open outFile, ">$out" or die $!;
my %permitted = do {
open my $fh, '<', 'f1.txt';
map { /(.+?)\s+\(/, 1 } <$fh>;
};
open my $fh, '<', 'f2.txt';
while (<$fh>) {
my ($phrase) = /(.+?)\s+->/;
if ($permitted{$phrase}) { print outFile $phrase ;}
}
close outFile;
错误是:
Name "main::outFile" used only once: possible typo at teeest.pl line 14.
请问好吗?
谢谢
答案 0 :(得分:3)
print
有一个非常特殊的语法。没有use autodie
,
print outFile $phrase;
装置
print *outFile $phrase;
但print
替换use autodie;
创建的内容无法完全重现。它可能最终成为
print "outFile" $phrase;
仍然做正确的事情,但隐藏了“仅使用过一次”警告检查程序中outFile
的使用。
在这种情况下,警告是假的,无害的。您可以通过避免无端使用全局变量来阻止它被发射。
open my $outFile, ">$out" or die $!;
print $outFile $phrase;
close $outFile;