2012-05-19 66 views
0

是否有可能在Perl中有foreach循環條件?帶條件perl的foreach循環?

我不得不通過字符處理做很多字符 - 其中foreach循環非常方便。請注意,我無法使用一些圖書館,因爲這是爲了上學。

如果需要,我可以使用substr寫一個for環路,但有一個條件,但我想避免這種情況!

回答

6

你應該向我們展示了一些代碼,包括排序,你會喜歡做的事情

foreach my $l (@something) { 
    last if (condition); 
    # ... 
} 

將退出循環。

一般來說,字符一個字符的字符串的處理將在Perl寫

for my $ch (split //, $string) { ... } 

完成,或者,如果它是更方便

my @chars = split //, $string; 
for (@chars) { ... } 

my $i = 0; 
while ($i < @chars) { my $char = $chars[$i++]; ... } 

和後一種形式可以支持while條件中的多個表達式。 Perl非常豐富,有不同的方式去做類似的事情,不知道更多關於你的問題,不可能說出哪一種最適合你。


編輯

需要注意的是這些方法中沒有允許修改原始字符串是很重要的。如果這是意圖,那麼你必須使用s///tr///substr

請注意substr有第四個參數,將替換爲原始字符串的指定部分。另請注意,它可以作爲左值,因此可以進行分配。換句話說

substr $string, 0, 1, 'X'; 

可以等效寫成

substr($string, 0, 1) = 'X'; 

如果split用來將字符串轉換成字符(實際上一個字符字符串)的列表,然後它可以在該狀態下被修改並使用join重組爲一個字符串。例如

my @chars = split //,$ string; $ chars [0] ='X'; $ string = join'',@chars;

和上面的代碼使用substr做類似的事情。

+0

非常感謝。分割然後做while循環對我來說是最好的選擇。 – CPlayer

2

例如:如果條件爲真

+0

這肯定會工作。我試圖遠離「最後」或休息:) – CPlayer