2015-04-02 78 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。