Я пытаюсь соответствовать следующим образом (ниже в массиве называется @abc):Perl регулярное выражение матч с номерами
goo foo tool: 1.2.1 (a3 change: 234342 @ 2014/02/19 14:20:27)
с
my $match = "goo foo tool: (\d+)\.(\d+)\.(\d+) \(a3 change: \d+ @ #DATE# #TIME#\)";
и в моем коде,
78 foreach (@abc){
79 print "$_\n";
80 if ($_ =~ m/$match/){
81 print "$1\n";
82 } else {
83 print "not matched\n";
84 }
85 }
Я не вижу, почему это печать «не соответствует \ n»;
Кто-нибудь еще видит, почему?
Потому что # DATE # и # TIME # являются строковыми константами. – Miller
Нет необходимости указывать '$ _', когда вы используете' m // 'или' s /// '. Они по умолчанию работают против '$ _'. Вот почему существует '$ _'. –