Мне нужно рекурсивное регулярное выражение для захвата переменных makefile (например, $($(prefix)val)
). У меня есть следующее:
my $varPtrn = qr/(:?\$\((?:\w+|(?-1))+\))/;
Я хочу иметь возможность сделать что-то вроде
my ($var1,$var2,var3) = $parms =~ /($varPtrn),($varPtrn),($varPtrn)/;
Но это не работает. Кажется, он захватывает каждую запись дважды. Если я сделаю:
'$(foo)' =~ /^($varPtrn)$/ and print "1:$1 2:$2 3:$3\n";
Я получу:
1:$(foo) 2:$(foo) 3:
Как бы я написал приведенное выше регулярное выражение, чтобы захватить каждую запись только один раз? (примечание: я использую perl 5,22)