Я полагаю, что в более ранних версиях perl могла быть такая ошибка: если вы используете \
для экранирования метасимвола регулярных выражений, который также является разделителем конструкций в кавычках, он рассматривается как метасимвол, а не как буквальный символ.Попробуйте использовать другой разделитель для своего регулярного выражения, например qr/^\(int\)/
.
$ for v in 10 12 14 16 18 20 22 24 26 ; do
echo "5.$v"
"5.${v}t"/bin/perl -le'print qr(^\(int\))'
echo
done
5.10
(?-xism:^(int))
5.12
(?-xism:^(int))
5.14
(?^:^(int))
5.16
(?^:^(int))
5.18
Useless use of '\'; doesn't escape metacharacter '(' at -e line 1.
(?^:^(int))
5.20
Useless use of '\'; doesn't escape metacharacter '(' at -e line 1.
(?^:^(int))
5.22
(?^:^\(int\))
5.24
(?^:^\(int\))
5.26
(?^:^\(int\))
. Поэтому в 5.18 добавлено предупреждение при использовании экранированного разделителя (даже если предупреждения отключены), а в 5.22 изменилось поведение..
(Почти как цикл устаревания, за исключением того, что предупреждение предупредило, что вы, возможно, не ожидали старого поведения, а не ожидаемого нового поведения, которое кажется неудачным.)