如何将字符串拆分为带有undef值的哈希键?

时间:2011-11-22 07:51:16

标签: perl

这是我的字符串:
    NANA TEKA KAOE FLASK LSKK

如何制作它看起来像这样:
    HASH = {NANA => undef, TEKA => undef, KAOE => undef, ...

当然,我总是可以将它分成一个数组 然后遍历每个值,然后将它们分配为散列
键...但是如果有更短/更简单的方法吗?

提前致谢!

3 个答案:

答案 0 :(得分:7)

您可以拆分字符串并使用地图生成输出哈希值。

my $string = "NANA TEKA KAOE FLASK LSKK";
my %hash = map { $_ => undef } split(/\s/, $string);

答案 1 :(得分:6)

@hash{ split /\s+/, $string } = ();

答案 2 :(得分:2)

我怀疑这是否是最简洁的方法,但似乎有效:

use warnings;
use strict;

my $string = "NAN TEKA KAOE FLASK LSKK";
my %hash = map { ($_ => undef) } split /\s+/, $string;

foreach my $key (keys %hash)
{
    printf "$key => %s\n", (defined($hash{$key})) ? $hash{$key} : "undef";
}