+ -
当前位置:首页 → 问答吧 → [求助]在perl中如何n个n个地去遍历一个array?

[求助]在perl中如何n个n个地去遍历一个array?

时间:2011-04-26

来源:互联网

rt,如果有一个array:
my @list = (1,2,3,4,5,6,7,8,9,10);

我希望三个三个地遍历它:
for $a, $b, $c (@list) { print "$a, $b, $c\n"; } #伪代码
输出:
1,2,3
4,5,6
7,8,9
10

在perl里面有没有什么比较好的办法?

作者: starwing83   发布时间: 2011-04-26

你说的太好了!我也一直这么认为。

Perl6 是有这个功能的

for @list -> $a, $b, $c { say "$a $b $c" }

Perl5 的话,我能想到的就只有这样了:

while( my ($a, $b, $c) = splice @list, 0, 3 ){
    print "$a $b $c\n";
}

逊了 N 条街

作者: flw   发布时间: 2011-04-26

希望 Perl 5.20 之前能加入这个功能。
照目前的激进程度,未来 3 年还是有可能的。

作者: flw   发布时间: 2011-04-26

回复 flw


    好办法!谢啦,等会儿去perldoc翻翻splice,还是对perl不熟呀。

有时间得全面了解一下perl6了,虽然一直认为她是一门新语言,可能会水土不服,不过看来还的确是有了解的必要的~~

作者: starwing83   发布时间: 2011-04-26

  1. my @list =(1,2,3,4,5,6,7,8,9,10);
  2. my $_=join ",",@list;
  3. s/(\d+,\d+,\d+),/$1\n/g;
  4. print;
复制代码

作者: x9x9   发布时间: 2011-04-26