2011-11-22 33 views
3

这里是我的字符串:
NANA TEKA KAOE FLASK LSKK如何将字符串拆分为带有undef值的散列键?

如何让这个它会是这样的:
HASH = {NANA => undef, TEKA => undef, KAOE => undef, ...

当然,我随时可以分成数组第一
然后依次通过这每个值然后分配他们作为散列
键...但如果有一个更简单的方法来做到这一点?

在此先感谢!

+0

感谢大家的答案!尽管@DavidO的答案是最简单的。 :) – cr8ivecodesmith

回答

6

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

+0

谢谢!只是我错过了:'@' – cr8ivecodesmith

+0

@DavidO:你碰巧知道是否存在一个普遍的解决方案(即没有显式的'map'等),而不是'undef'的常量值? – musiKk

+1

musiKk,分配一个涉及['x'重复操作符](http://p3rl.org/op#Multiplicative-Operators)的表达式:'... =('foobar')x 5' – daxim

7

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

my $string = "NANA TEKA KAOE FLASK LSKK"; 
my %hash = map { $_ => undef } split(/\s/, $string); 
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"; 
} 
相关问题