Ошибка RegExp в Perl - PullRequest
       7

Ошибка RegExp в Perl

1 голос
/ 26 января 2012

Привязывая регулярное выражение к параметру в perl, я получаю следующую ошибку: syntax error at ./ctime.pl line 23, near "/^\((\d{2}):(\d{2})\)/)" Execution of ./ctime.pl aborted due to compilation errors.

Вот строка, где я пытаюсь связать это:

$_[0] =~ /^\((\d{2}):(\d{2})\)/)/;

Я пытаюсь подобрать комбинацию часов / минут в паренах, например, (99:99 или (01:24). Всегда будет четыре цифры.

Ответы [ 2 ]

9 голосов
/ 26 января 2012
$_[0] =~ /^\((\d{2}):(\d{2})\)/)/;

должно быть

$_[0] =~ /^\((\d{2}):(\d{2})\)/;

Вы случайно продублировали два символа в конце строки.


PS & mdash; В качестве предостережения, у вас возникнут проблемы, если вы попытаетесь передать $1 или тому подобное в качестве аргумента функции, содержащей этот код, потому что вы используете $_[0] напрямую.

sub f {
   print("$_[0]\n");              # a
   print $_[0] =~ /a/ ?1:0,"\n";  # 1
   print("$_[0]\n");              # [empty string]
   print $_[0] =~ /a/ ?1:0,"\n";  # 0
}
'a'=~/(.)/;
f($1);
2 голосов
/ 26 января 2012

У вас есть дополнительные /) как раз перед концом. Оскорбительная строка должна быть:

$_[0] =~ /^\((\d{2}):(\d{2})\)/;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...