perl - perl中单个foreach循环中多个数组的语法

标签 perl

我需要知道在单个 foreach 循环中多个数组的正确语法。

在 TCL 中,我们可以在一个 foreach 循环中有多个列表。但是如何用 perl 做到这一点呢?

#TCL eg:
foreach i $a j $e {

}

最佳答案

List::MoreUtils 的当前版本模块提供了一个 zip_unflatten 命令,它将两个(或更多)数组组合成一个数组,其中包含对每个列表的第一个元素的数组的引用,然后是第二个,依此类推:

#!/usr/bin/env perl    

use strict;
use warnings;
use 5.010;

use List::MoreUtils 'zip_unflatten';

my @a = 1 .. 4;
my @e = 5 .. 9;

my @z = zip_unflatten(@a, @e);

for my $pair (@z) {
  my $i = $pair->[0] // '-';
  my $j = $pair->[1] // '-';

  say "$i\t$j";
}

(我在这里使用的//运算符是“defined-OR”,它与||基本相同,只是它作用于变量是否与其相关left 有一个定义的值,而不是它是否有一个真实的值。)

关于perl - perl中单个foreach循环中多个数组的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54528381/

相关文章:

string - 转换字符串中的字符

perl - 使用 File::Path 创建目录,但所有者和组设置不正确

perl 一行脚本获取带路径的最后一条记录

arrays - 如何迭代多个 Perl 数组

regex - (相当于) "backreferences within character class"的一般方法?

perl - 如何在perl中通过变量值按名称调用方法?

perl - 为什么 Mojolicious 嵌套我的路由?

sql-server - 在 Ubuntu 上使用 perl 的 undefined symbol SQLAllocHandle

regex - perl 在正则表达式中使用常量

windows - 为什么当文件更改时 Perl 的 Win32::ChangeNotify 会触发两个事件?