Perl 如何打印没有值的哈希键?
我想打印散列中没有值的键。如何在perl中实现这一点 e、 gPerl 如何打印没有值的哈希键?,perl,Perl,我想打印散列中没有值的键。如何在perl中实现这一点 e、 g 我只想打印柠檬和莱姆钥匙。grep适合您喜欢的任何条件。你所有的键都有值,所以我假设你的意思是“那些值都是空字符串” grep适用于您喜欢的任何情况。你所有的键都有值,所以我假设你的意思是“那些值都是空字符串” 循环遍历键,用空白/undef值打印每个键: $hash{$_} || say for keys %hash; 如果您不想要undef: $hash{$_} eq '' && say for keys %h
我只想打印柠檬和莱姆钥匙。
grep
适合您喜欢的任何条件。你所有的键都有值,所以我假设你的意思是“那些值都是空字符串”
grep
适用于您喜欢的任何情况。你所有的键都有值,所以我假设你的意思是“那些值都是空字符串”
循环遍历键,用空白/
undef
值打印每个键:
$hash{$_} || say for keys %hash;
如果您不想要undef
:
$hash{$_} eq '' && say for keys %hash;
循环遍历键,用空白/
undef
值打印每个键:
$hash{$_} || say for keys %hash;
如果您不想要undef
:
$hash{$_} eq '' && say for keys %hash;
或者就像一个小循环:
#!/usr/bin/perl
use warnings;
use strict;
my %hash = ( Lemon => "",
Orange => "orange",
Lime => "" );
for my $key (sort keys %hash) {
if ($hash{$key} eq "") {print "$key\t$hash{$key}\n"}
}
输出:
Lemon
Lime
或者就像一个小循环:
#!/usr/bin/perl
use warnings;
use strict;
my %hash = ( Lemon => "",
Orange => "orange",
Lime => "" );
for my $key (sort keys %hash) {
if ($hash{$key} eq "") {print "$key\t$hash{$key}\n"}
}
输出:
Lemon
Lime
可以看到,perl中的空字符串是假等价的(perl hasnt bool类型)。 因此: 结果将是错误的。 您可以使用以下代码解决问题:
my %hash = (
Lemon => "",
Orange => "orange",
Lime => ""
);
foreach (keys %hash) {
print 'empty key: ', $_, "\n" if !$hash{$_};
}
它还将处理undf。您可以看到,perl中的空字符串是假等价的(perl hasnt bool类型)。 因此: 结果将是错误的。 您可以使用以下代码解决问题:
my %hash = (
Lemon => "",
Orange => "orange",
Lime => ""
);
foreach (keys %hash) {
print 'empty key: ', $_, "\n" if !$hash{$_};
}
它还将处理undef。遍历散列,放入条件并打印键,或者使用grep执行此操作如果您有
Tangerine=>undef
?您是否还想打印“Tangerine”?遍历散列,放入条件并打印键,或者使用grep来执行此操作如果您有Tangerine=>unde
?您是否还想打印“Tangerine”?grep$散列{$},键%hash代码>在5.10+中为grep说话$散列{$},键%hash代码>在5.10+中,输出是否也包含键名空的“值:?”空的'value:?我想用“Existing”或“Defined”来检查它们的键是否包含值&如果不打印它们的话。现在就可以了(请参见更改)输出是否也包含键名空的“值:?”空的'value:?我想用“Existing”或“Defined”来检查它们的键是否包含值&如果不包含值,则打印它们。现在就可以这样做了(请参阅更改)