我的脚本中有以下代码:
while (my ($key, $value) = each @values) {
if ( $key < $arraySize-1) {
if ( $values[$key+1] eq "user") {
$endcon=1;
}
}
if ( ( $startcon == 1 ) && ( $endcon != 1 ) ) {
$UptimeString .= $value;
}
if ( $value eq "up") {
$startcon=1;
}
if ( $value eq "average:") {
$LoadMinOne=$values[$key+1];
}
}
在 perl 5.14 中编译它时,我没有任何警告,但在 perl 5.10.1 中,我收到此警告:每个参数 1 的类型必须是散列(不是私有(private)数组),位于 ./uptimep。 pl 第 21 行,靠近“@values)”
第 21 行是 while (my ($key, $value) = every @values) {
这是什么意思?
最佳答案
正如错误消息中所述,每个
必须有一个参数的哈希值,但你给它一个数组。
您可以替换此行:
while (my ($key, $value) = each @values) {
作者:
for my $key(0 .. $#values) {
my $value = $values[$key];
根据doc each
接受来自 perl 5.12.0 的数组作为参数
关于arrays - 旧版 Perl 中的警告消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18356328/