我有一个在for循环之外定义的哈希变量说
my %sports = (); #hash variable defined
my $count = 0; #key for the hash variable which will be used to populate the hash
在for循环中,我通过一些逻辑说明
填充了这个变量$sports{$count} = "cricket"
$count++;
现在当我尝试在循环外打印映射到此哈希变量的所有值时,我收到错误
我进入了
print $count." --> ".$sports{$count} ;
我收到错误
在连接(。)或中使用%sports中的未初始化值
的字符串
答案 0 :(得分:1)
而不是,
$sports{$count} = "cricket"
$count++;
尝试
$count++;
$sports{$count} = "cricket"
因此,$count
将保留%sports
哈希的最后一次使用密钥。
答案 1 :(得分:0)
在最后一次分配后,您增加了$ count的值。因此,%sports散列中不存在新值。使用
print $count - 1, ' --> ', $sports{ $count - 1 };
此外,如果您使用一系列数字作为哈希键,则可以切换到数组。
答案 2 :(得分:0)
要打印映射到散列的所有值,请遍历键:
for my $count (keys %sports) {
print $count." --> ".$sports{$count};
}
答案 3 :(得分:0)
错误是因为您正在尝试访问未分配的哈希值。
您的迭代就像这样
$count = 0
# Lets say loop goes from 0 to 5.
# So, when $count = 5
$sports{$count} = "cricket"
$count++; # Here $count becomes 6 and loop ends
print $sports{$count} # Outside loop, Here $count is still 6, you are
# trying to print $sports{6}, which is unassigned
您需要先移动$count++
$count++;
$sports{$count} = "cricket"