В следующем примере печатается «ЖЕ»:
if (q/\\a/ eq q/\a/) {
print "SAME\n";
}
else {
print "DIFFERENT\n";
}
Я понимаю, что это соответствует документации. Но я считаю такое поведение нежелательным. Есть ли необходимость избегать lilteral люфта в строке, заключенной в одинарные кавычки? Если бы я хотел 2 люфта, мне нужно было бы указать 4; это не кажется удобным.
Разве Perl не должен определять, служит ли обратная косая черта escape-символом или нет? Например, если обратная косая черта не предшествует разделителю, ее следует рассматривать как литерал; и если бы это было так, мне бы не понадобилось 3 обратных косых черты для выражения двух, например,
q<a\\b>
вместо того
q<a\\\b>.
q/\/
, и вы увидите, что нужно избегать обратной косой черты. - person cHao   schedule 12.12.2016q/\/
- ›косая черта, без закрывающего разделителя (синтаксическая ошибка);q/\\/
- ›буквальная обратная косая черта, буквальная косая черта, без закрывающего разделителя (синтаксическая ошибка);q/\\\/
- ›буквальная обратная косая черта, буквальная обратная косая черта, буквальная косая черта, без закрывающего разделителя (синтаксическая ошибка); ... - person ThisSuitIsBlackNot   schedule 13.12.2016q/\\/
может быть одиночной (экранированной) обратной косой чертой или может быть просто началом строки\/
, с последующими вправо. Какой выбирает парсер? То, что вы описали, неоднозначно. - person ThisSuitIsBlackNot   schedule 13.12.2016