Perl 如何打印没有值的哈希键?

Perl 如何打印没有值的哈希键?,perl,Perl,我想打印散列中没有值的键。如何在perl中实现这一点 e、 g 我只想打印柠檬和莱姆钥匙。grep适合您喜欢的任何条件。你所有的键都有值,所以我假设你的意思是“那些值都是空字符串” grep适用于您喜欢的任何情况。你所有的键都有值,所以我假设你的意思是“那些值都是空字符串” 循环遍历键,用空白/undef值打印每个键: $hash{$_} || say for keys %hash; 如果您不想要undef: $hash{$_} eq '' && say for keys %h

我想打印散列中没有值的键。如何在perl中实现这一点

e、 g


我只想打印柠檬和莱姆钥匙。

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”来检查它们的键是否包含值&如果不包含值,则打印它们。现在就可以这样做了(请参阅更改)