Я только что прочитал около \Q
и \E
, и я пытаюсь полностью их выполнить. не Согласно perlre:Что такое Q в Perl? Всегда ли нужно использовать E?
\ Q кавычки (отключить) модель метасимволы до \ E
\ E конец либо случай изменения или цитируемый раздела, думаю VI
Так что я сделал пару тестов :
$ perl -e 'print "hello\n" if "he\\tllo" =~ /\Q\t/'
hello
$ perl -e 'print "hello\n" if "he\\tllo" =~ /\t/'
$
Если я понимаю правильно, без \Q
он не оценивает, как правда потому, что он жулик siders \t
в качестве вкладки.
Тогда я использовал \E
и я не вижу никакой разницы:
$ perl -e 'print "hello\n" if "he\\tllo" =~ /\Q\t\E/'
hello
Если я дам более широкую строку и структуру, содержащую как буквальное \t
и ушко:
$ perl -e 'print "hello\n" if "he\\tl\tlo" =~ /\Q\t\E.*\t/'
hello
Это похоже на работу, потому что он считает первый \t
фиксированной строкой, тогда как второй \t
считается вкладкой.
Так должно использоваться \Q
и \E
? То есть мы прилагаем «чистые» строки между \Q
и \E
? Правильно ли использовать \Q
, если все должно рассматриваться как буквальное?
Довольно интересно. Когда вы говорите «если ничего опасного не следует», оно всегда находится в рамках шаблона, соответствующего '/ $ x /', правильно? – fedorqui
@fedorqui: Точно. – choroba
@fedorqui, Собственно, нет. Внутри литералов регулярных выражений и строковых литералов с двойной кавычкой. – ikegami