我正在调用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};
导致问题的行是最后一行。它说全局符号%counterhash需要显式包名。我不确定为什么它会给我错误。否则,没有任何问题,如果我评论脚本运行的那一行。散列被设置为键的错误代码和作为值的描述。我试图在$ countershash中获取特定键的值,因此我可以将错误描述添加到输出哈希。
答案 0 :(得分:0)
答案 1 :(得分:0)
代码success: function (response) {
orderId = response;
if (response != null) {
orderStatus = "Order has been placed successfully.";
}
}
表示"在哈希$counterhash{$counter}
"中查找密钥$counter
。您没有名为%counterhash
的哈希,您在名为%counterhash
的标量变量中有哈希引用。 $counterhash
和%counterhash
是两个完全不同的变量。
为了在哈希引用中查找元素,您需要使用不同的语法。
$counterhash
请不要使用其他答案中使用的my $counterdesc = $countershash->{$counter};
语法(以前)。这只会混淆六个月内需要维护代码的人(可能是你)。