2012-02-24 90 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

相关问题