gpt4 book ai didi

perl 哈希 - 比较键和值

转载 作者:行者123 更新时间:2023-12-04 23:00:48 26 4
gpt4 key购买 nike

我一直在阅读 perl 文档,但我不太了解哈希。我正在尝试查找哈希键是否存在,如果存在,则比较其值。让我感到困惑的是,我的搜索结果表明您可以通过 if (exists $files{$key}) 找到键是否存在。 , 但那 $files{$key}还给出了值?我正在处理的代码是:

foreach my $item(@new_contents) {
next if !-f "$directory/$item";
my $date_modified = (stat("$directory/$item"))[9];

if (exists $files{$item}) {
if ($files{$item} != $date_modified {
$files{$item} = $date_modified;
print "$item has been modified\n";
}
} else {
$files{$item} = $date_modified;
print "$item has been added\n";
}
}

最佳答案

$files{$key}确实会返回该键的值。但是如果该值在 bool 上下文中恰好为 false 呢,例如 0'' (空字符串)?

考虑这样的哈希:

my %foo = ( red => 42, blue => 0, green => '', yellow => undef );

如果我说 if ( $foo{blue} )条件会失败。即使 blue散列中存在,条件为假,因为 $foo{blue}的值为零。与 green 相同和 yellow键 -- 空字符串和 undef是假值。

exists ,将没有(简单的)方法来确定散列键是否确实存在且其值为假,或者根本不存在。 (你可以先调用 keys 然后再调用 grep 结果列表,但这很荒谬。)

你的代码在我看来非常好。您正在使用 exists正确。

关于perl 哈希 - 比较键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com