小编jel*_*lly的帖子

perl正则表达式匹配同一行

第一个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)

regex perl foreach if-statement hashmap

1
推荐指数
1
解决办法
282
查看次数

标签 统计

foreach ×1

hashmap ×1

if-statement ×1

perl ×1

regex ×1