【问题标题】:How to perform a for loop array in perl scripting如何在 perl 脚本中执行 for 循环数组
【发布时间】:2015-04-02 09:21:14
【问题描述】:

在 Shell 脚本中,我通常以这种方式循环遍历数组

something[0]="abc"
something[1]="bcd"
something[2]="def"

for i in "${something[@]}"
do
   do something
done

我想在 perl 中执行同样的操作。请提出建议。

【问题讨论】:

  • 这是我见过的第一个问题之一,如果你自己研究过,那么询问和阅读答案需要更多的努力。您必须在谷歌中输入更少的字符才能立即获得相同的结果。

标签: perl shell


【解决方案1】:

这是语法:

foreach my $value (@something)
{
  do something

}
do

【讨论】:

  • 嗨,这里的 $value 是什么?类似于“我”?
  • @ramaswamy 是的,那是一样的。它是数组中的条目。
  • 从技术上讲,$value@something 数组中元素的别名。所以你可以打印它,但你也可以改变它。
  • @Sobrique 提出了一个重要的观点。一不小心,它就会咬你!
【解决方案2】:

这是一个例子:

my @allNames = ('Lee', 'Coo', 'Bee');
foreach my $name (@allNames)
{
    print "$name\n";
}

@allNames中的每个元素依次赋值给$name,花括号中的代码被执行。

【讨论】:

  • 我建议做一个小的修改——它没有被分配给,就像$name 是一个别名一样。所以你可以做$name =~ s/[ae]/x/g;,它会修改数组。
【解决方案3】:
use warnings;
use strict;

my @something = ('abc','bcd','def');

foreach (@something){
    print "$_\n"; #$_ is default varaible for print the each element of array
}

按索引键值打印数组。喜欢$something[0]abc 所以在forloop中

for my $i(0..$#something){ 
print "$something[$i]\n"; 
}

这里$#something 是数组的最后一个元素。 .. 是范围运算符

也这样做

for(my $i = 0; $i <= $#something; $i++){
    print "$something[$i]\n";
}

【讨论】:

  • 就个人而言,我认为使用for 循环进行数组迭代的理由很少。
【解决方案4】:
#! /bin/perl
$something[0]="abc";
$something[1]="bcd";
$something[2]="def";

for $i (@something) {
   print "do something with $i\n";
}

这与您在 BASH 脚本中的内容一样接近 Perl。在 Perl 中,@something 是一个数组变量。 $something[0]@something 中的第一项。

这是一个非常基本的 Perl 问题。我建议您获取一份Llama Book 的副本并自己学习一些 Perl。

【讨论】:

    猜你喜欢
    • 2017-05-11
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多