2015-04-02 39 views
-4

在Shell脚本这样如何在Perl脚本

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

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

我想在Perl中执行相同类型的操作执行for循环数组我通常通过数组循环。请建议。

+2

这是我见过的第一个问题,如果你刚才自己研究过,询问和阅读答案需要付出更多努力。你将不得不在谷歌输入较少的字符来立即获得相同的结果。 – DeVadder 2015-04-02 11:00:45

回答

1

即语法:由索引键值

foreach my $value (@something) 
{ 
    do something 

} 
do 
+0

嗨,这里有什么值?它与“我”相似吗? – ramaswamy 2015-04-02 09:27:28

+0

@ramaswamy是的,这是一样的。它是阵列中的条目。 – Jens 2015-04-02 09:28:25

+1

从技术上讲,这里的'$ value'是'@ something'数组中元素的_alias_。所以你可以打印它,但你也可以改变它。 – Sobrique 2015-04-02 12:38:47

0
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]在for循环

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

abc 所以这里$#something是阵列的最后一个元素。 ..在该范围操作者

而且也为此

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

就我个人而言,我可以考虑使用'for'循环进行数组迭代的很少很好的理由。 – Sobrique 2015-04-02 12:34:02

0

下面是一个例子:

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

@allNames的每个元素被依次分配给$name,并在大括号中的代码被执行。

+1

我会建议一个小修改 - 它不会被分配到,'$ name'就是一个_alias_。所以你可以做'$ name =〜s/[ae]/x/g;'并且它会修改数组。 – Sobrique 2015-04-02 12:33:29

0
#! /bin/perl 
$something[0]="abc"; 
$something[1]="bcd"; 
$something[2]="def"; 

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

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

这是一个非常基本的Perl问题。我建议你得到Llama Book的副本,并学习一些Perl。