我有一些數據應該可以輕鬆拆分爲散列。Perl拆分並丟棄一行中的第一個元素
以下代碼旨在將字符串拆分爲相應的鍵/值對並將輸出存儲在散列中。
代碼:
use Data::Dumper;
# create a test string
my $string = "thing1:data1thing2:data2thing3:data3";
# Doesn't split properly into a hash
my %hash = split m{(thing.):}, $string;
print Dumper(\%hash);
然而在檢查輸出很顯然,作爲打算在代碼不起作用。
輸出:
$VAR1 = {
'data3' => undef,
'' => 'thing1',
'data2' => 'thing3',
'data1' => 'thing2'
};
爲了進一步研究我的輸出分割成一個陣列,而不是與打印結果的問題。
代碼:
# There is an extra blank element at the start of the array
my @data = split m{(thing.):}, $string;
for my $line (@data) {
print "LINE: $line\n";
}
輸出:
LINE:
LINE: thing1
LINE: data1
LINE: thing2
LINE: data2
LINE: thing3
LINE: data3
正如你所看到的問題是,split
是在陣列開始返回一個額外的空元素。
有,我可以從分割輸出丟掉的第一個元素,並將其存儲在一個散在一行什麼辦法?
我知道我可以輸出存儲在一個數組,然後只是推卸的第一個值,並存儲在一個哈希數組...但我只是好奇,這是否可以在一個完成步。
非常感謝!這麼簡單和優雅... – tjwrona1992
不,除非數據是非常可預測的,每個鍵看起來像'data \ d'這是一個荒謬的解決方案 – Borodin
對於問題「是否有任何方法可以拋棄第一個元素分裂的輸出?「我認爲這是正確的答案。 – bolav