如何通过列在Perl

任务。 在代码的Perl程序有一系列 @arr (第一三个字母的单词"阵列"). 在这个阵有一些价值观。 你需要去通过的所有阵元和执行一些行动与各个项目。

通过列使用 foreach

建议的方式来解决这个问题是使用 foreach. 这样品的程序:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

foreach my $el (@arr) {
    warn $el;
}

这是所有的非常简单。 有一阵列。 接下来我们创造一个可变 $el (缩写词 element). 周期 foreach 的地方在于可变的第一个元件阵列(在我们的实例这一数字为1)。 执行循环体 warn $el; —这个带来了 值在屏幕上。 循环 foreach 投入变量 $el 的下一个值阵列 再执行的循环体。 这是重复,直到环身体不执行对所有阵列的要素。

通过阵列,使用一个循环 for

这里是一样的程序怎样走在Perl阵列,使用一个循环中的类似的环C语言:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

for (my $i = 0; $i < @arr; $i++) {
    warn $arr[$i];
}

这是怎么回事。 有一系列@务。 然后我们创建了一个新的变量 $i 和分配它的价值0(0索引 第一个元素在Perl阵列)。 然后执行的循环体 warn $arr[$i];. 在这之后,可变 $i操作员 ++ 增加一个。 它随后检查的条件 $i < @arr. 如果 条件返回的真实的,那么所有的重复。

这种解决方案是有点复杂得多的解决方案使用 foreach. 你需要仔细的工作与边界值。 如果它是错误的 写支票,你可以跳过去的价值 或访问一个不存在的元素超出了最后一个元素(这种治疗会回 undef).

这是一个示例的程序,工作方式相同,但使用不同的条件 for:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

for (my $i = 0; $i <= $#arr; $i++) {
    warn $arr[$i];
}

for 列有意义的使用如果你是在循环体不应仅值的元件,并且其数量。 但在这种情况下 你可以使用 foreach 循环、手动暴露出变量和指数:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);
my $i = 0;

foreach my $el (@arr) {
    warn "index: $i value: $el";
    $i++;
}

这一选择更容易察觉的人,这是不容易受到巴哈马与边界值。 但有一个更简便的方式说同样的事情 each.

通过列使用 whileeach

关键字 each 不是用于经常,但几乎总是在使用它 它用于工作与Hesham. 鲜为人知,但 each 可以使用 经过数组,与指数的元素和元素本身。 这里是 以前编写的代码使用 each:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

while (my ($i, $el) = each @arr) {
    warn "index: $i value: $el";
}

each 可以应用到阵列从Perl5.12. 如果你跑这个代码的更多 早期版本的Perl,它将错误:

Type of arg 1 to each must be hash (not private array) at script.pl line 5, near "@arr) "
Execution of script.pl aborted due to compilation errors.

相关的主题

其他文章