Regex 使用数组时的Perl模式匹配
我在匹配模式时遇到了一个奇怪的问题 考虑下面的Perl代码Regex 使用数组时的Perl模式匹配,regex,perl,Regex,Perl,我在匹配模式时遇到了一个奇怪的问题 考虑下面的Perl代码 #!/usr/bin/perl -w use strict; my @Array = ("Hello|World","Good|Day"); function(); function(); function(); sub function { foreach my $pattern (@Array) { $pattern =~ /(\w+)\|(\w+)/g; print $1."\n"; }
#!/usr/bin/perl -w
use strict;
my @Array = ("Hello|World","Good|Day");
function();
function();
function();
sub function
{
foreach my $pattern (@Array)
{
$pattern =~ /(\w+)\|(\w+)/g;
print $1."\n";
}
print "\n";
}
__END__
我期望的输出应该是
现在我得到了预期的输出 正在工作的是全局
/g
修改器。它会记住最后一次模式匹配的位置。当它到达字符串的末尾时,它将重新开始
删除/g
修饰符,它将按照您的预期工作
Hello
Good
Hello
Good
Hello
Good
Hello
Good
Use of uninitialized value $1 in concatenation (.) or string at D:\perlfiles\problem.pl li
ne 28.
Use of uninitialized value $1 in concatenation (.) or string at D:\perlfiles\problem.pl li
ne 28.
Hello
Good
sub function
{
my $string;
foreach my $pattern (@Array)
{
$string .= $pattern."\n";
}
while ($string =~ m/(\w+)\|(\w+)/g)
{
print $1."\n";
}
print "\n";
}