2012-02-24 112 views
1

這是我的源陣列:只需要數組字符串的一部分複製到另一個陣列

my @raw_stack = (
    'a1~a2~a3~a4~a5', 
    'b1~b2~b3~b4~b5', 
    'c1~c2~c3~c4~c5', 
    'd1~d2~d3~d4~d5', 
    'e1~e2~e3~e4~e5', 
); 

我想獲得「〜」模式的第3個值然後再將這個 到另一個陣列。

其他陣列現在應該是這樣的:

my @other_stack = (
    'a3', 
    'b3', 
    'c3', 
    'd3', 
    'e3', 
); 

我能去通過堆疊陣列循環再拆
推到另一個陣列,但是我正在尋找一種方式精益
爲此編碼。

任何想法?

回答

3
my @other_stack = map {(split/~/)[2]} @raw_stack; 
2

使用map列出改造,而不是push。如果項目是固定寬度,則使用index/substrunpack。這通常比使用正則表達式的split更快。

+1

在一個明顯的,明確的解決方案被證明是不夠的前追求效率是錯誤的。在任何其他事情之前總是要求可讀性和優雅。 – Borodin 2012-02-24 11:17:23

+0

如果OP詢問優化問題,我會誠心誠意地進行處理。你怎麼想責怪我? – daxim 2012-02-24 14:50:01

+0

啊我明白了。我不認爲*精益*可能意味着*快*。我認爲他更有可能想要更簡潔的*,他認爲他想象的是'for'/'split'/'push'方法。我想我們永遠不會知道。 – Borodin 2012-02-24 17:19:09

相關問題