我正在Windows 10上使用Strawberry Perl5。看来我的正则表达式已损坏,或者regex101不会告诉我真相。我想赶上'num km'。即使我的数组似乎是正确的长度,也经常会说“使用未初始化的值”。
my $string = "^?~ --_ 12 km aéeklwa 32 km | \|Ä?^ 0 km 23-24 km";
if (@szelmatches = $string =~ /\d+(\-\d+)?\s+km/gm) {
my $number_of_elements = scalar(@szelmatches);
print "Elements in the array : $number_of_elements \n";
}
foreach (@szelmatches) {
print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
数组中的元素:4
在C:\ misc \ perlek \ wttr \ szel.pl第16行的串联(。)或字符串中使用未初始化的值$ _。
我已经运行define()检查,但似乎我的数组元素都已定义。将\-更改为。{1}有时是可行的,但是这样写很烦人。regex101.com和regexr.com告诉我一切都很好。
我知道您可以将它写得更简单/更短/更好/更快/更精细,但老实说,这应该可行。你们知道我在做什么错吗?
perl ×1