在Perl中,如何迭代数组的多个元素?

前端之家收集整理的这篇文章主要介绍了在Perl中,如何迭代数组的多个元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个CSV文件,我使用拆分解析成N个项目的数组,其中N是3的倍数.

有没有办法可以做到这一点

  1. foreach my ( $a,$b,$c ) ( @d ) {}

类似于Python?

解决方法

您可以使用 List::MoreUtils::natatime.从文档:
  1. my @x = ('a' .. 'g');
  2. my $it = natatime 3,@x;
  3. while (my @vals = $it->()) {
  4. print "@vals\n";
  5. }

natatime在XS中实现,因此您应该更喜欢它以提高效率.仅用于说明目的,以下是如何在Perl中实现三元素迭代器生成器:

  1. #!/usr/bin/perl
  2.  
  3. use strict; use warnings;
  4.  
  5. my @v = ('a' .. 'z' );
  6.  
  7. my $it = make_3it(\@v);
  8.  
  9. while ( my @tuple = $it->() ) {
  10. print "@tuple\n";
  11. }
  12.  
  13. sub make_3it {
  14. my ($arr) = @_;
  15. {
  16. my $lower = 0;
  17. return sub {
  18. return unless $lower < @$arr;
  19. my $upper = $lower + 2;
  20. @$arr > $upper or $upper = $#$arr;
  21. my @ret = @$arr[$lower .. $upper];
  22. $lower = $upper + 1;
  23. return @ret;
  24. }
  25. }
  26. }

猜你在找的Perl相关文章