0

我的 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.

请问有什么想法吗?

谢谢你

4

1 回答 1

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;
于 2013-09-21T15:26:28.980 回答