我打电话一个Perl子的Perl - 全局符号需要明确包名
&ProcessInput($line, \%txcountershash, \%txhash);
我有这样的定义:
sub ProcessInput() {
my $word;
my $counterkey;
my $line = $_[0];
my $countershash = $_[1];
my $outputhash = $_[2];
# remove all the blanks from the line
$line =~ s/\s+//g;
my ($port,$counter,$value,$datetime) = split('\|',$line,4);
my $counterdesc = $countershash{$counter};
引起该问题的行是最后一行。它表示全局符号%countershash需要显式包名称。我不知道为什么它给了我这个错误。如果我在脚本运行时注释该行,则没有任何其他问题。哈希被设置为密钥的错误代码和作为值的描述。我试图获取$ countershash中特定键的值,以便将错误描述添加到输出哈希。
此外,不再需要在函数调用的前面加上'&'。 – xxfelixxx
对不起。澄清。它抱怨%反击。我意识到我已经删除了错误定义$ counter的行 –
将它称为'$ countershash - > {$ counter}' – xxfelixxx