是否可以在Perl中使用条件foreach
循环?
我必须通过字符处理做很多字符 - 其中foreach
循环非常方便。请注意,我不能使用某些库,因为这是为了学校。
如果有必要,我可以使用for
写一个substr
循环,但是我想避免这种情况!
答案 0 :(得分:6)
你应该向我们展示一些代码,包括你喜欢做的事情。
通常,字符串的逐个字符处理将通过编写
在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
重新组合成字符串。例如
我的@chars = split //,$ string; $ chars [0] ='X'; $ string = join'',@ chars;
使用substr
与上述代码做类似的事情。
答案 1 :(得分:2)
例如:
foreach my $l (@something) {
last if (condition);
# ...
}
如果条件为真,将退出循环
答案 2 :(得分:1)
您可以调查next
和last
指令。有关perldoc perlsyn
的更多信息。