具有条件perl的foreach循环?

时间:2012-05-19 21:07:15

标签: perl for-loop

是否可以在Perl中使用条件foreach循环?

我必须通过字符处理做很多字符 - 其中foreach循环非常方便。请注意,我不能使用某些库,因为这是为了学校。

如果有必要,我可以使用for写一个substr循环,但是我想避免这种情况!

3 个答案:

答案 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)

您可以调查nextlast指令。有关perldoc perlsyn的更多信息。