错误:名称“main :: outFile”仅使用一次

时间:2013-09-21 15:19:24

标签: perl

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

请问好吗?

谢谢

1 个答案:

答案 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;