perl for循环问题及其理解

6mw9ycah  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(121)

我在看一些旧的Perl代码,我试图弄清楚这个语句到底是什么意思--我做过编程,但不是用Perl。我很难弄清楚这个for语句到底是什么意思。

for ($xx = $x+1 ; $contents[$xx] !~ m/^\:1S\:XXX/  ; $xx++)

这是循环直到找到:1S:XXX
如果不是,这意味着什么?
有人能帮忙吗?
谢谢

ulydmbyx

ulydmbyx1#

这也许更清楚:

$xx = $x+1;
$xx++ until substr($contents[$xx], 0, 7) eq ':1S:XXX';

但是如果没有找到:1S:XXX,那么for:1S:XXX都会一直循环下去。所以我认为如果在$x+1的起始点或之后的数组元素的开头没有找到要搜索的字符串,那么$xx就不会被定义。

use List::Util 'first';
my $xx = first { $contents[$_] =~ /^:1S:XXX/ } $x+1 .. @contents-1;

在perl正则表达式中,:可以在前面有\,但不需要它。

相关问题