第一个if ($line =~ ...)语句返回正确的匹配($1),它被分配给 num。
第二个if ($line =~ ...)语句没有返回任何值,因此没有分配给定义散列。我单独测试了这个正则表达式,它确实返回了正确的匹配($1)。
我想$definitions{$file}{$num}被分配给第二个正则表达式的返回值。
谢谢你的帮助。我是 perl/regex 初学者。
my $dir = "/.../...";
my %definitions;
my $num;
opendir (DIR, $dir) or die $!;
while (my $file = readdir(DIR)) {
next if ($file =~ m/^\./);
open FILE, "<$dir/$file" or die $!;
my @lines = <FILE>;
foreach my $line (@lines) {
if ($line =~ m/\', (.*?)\, /g) {
$num = $1;
}
if ($line =~ m/\'(.*?)\'/g) { # no match is found …Run Code Online (Sandbox Code Playgroud)