Tôi gặp vấn đề lạ khi khớp mẫu.Kết hợp mẫu Perl khi sử dụng mảng
Xem xét các mã Perl dưới đây
#!/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__
Kết quả tôi mong đợi nên
Hello Good Hello Good Hello Good
Nhưng những gì tôi nhận được là
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
Điều tôi quan sát được là mẫu khớp với nhau.
Ai đó có thể giải thích cho tôi vấn đề liên quan đến mã này là gì.
Để sửa lỗi này tôi đã thay đổi chức năng chương trình con để một cái gì đó như thế này:
sub function
{
my $string;
foreach my $pattern (@Array)
{
$string .= $pattern."\n";
}
while ($string =~ m/(\w+)\|(\w+)/g)
{
print $1."\n";
}
print "\n";
}
Bây giờ tôi nhận được đầu ra như mong đợi.
Tôi đã xóa/sửa đổi g. Nó hoạt động như mong đợi. – vels