2011-11-22 30 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"; 
} 
相關問題