arrays - 旧版 Perl 中的警告消息

标签 arrays perl hash warnings

我的脚本中有以下代码:

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/

相关文章:

java - 我想删除数组中的所有重复项,然后将结果写入空数组

jquery - 如何根据 jQuery 中对象数组的比较来更改键值?

java - 在 Java 中从数组中获取时出错

javascript - 哪个哈希函数更适合在小型哈希表中表示 128 位随机 id

javascript - 了解哈希表和冲突检测

python - 在 numpy 数组中前向填充 NaN 值的最有效方法

perl - 有没有办法在 Perl 中使用 Net::SMTP 附加 PDF 文件

perl - 好的 IDE 或 Mason 语法高亮编辑器?

perl - 在需要均匀大小的列表的地方找到引用

ruby - 从/到 JSON API 对象化 Ruby 哈希