Forum Webscript.Ru

Программирование => Perl => Тема начата: sd1074 от 27 Апреля 2007, 14:11:01

Название: Одинарные кавычки и обратный слэш
Отправлено: sd1074 от 27 Апреля 2007, 14:11:01
В Перле пока новичок, но уже кое-что делал. Насколько я знаю (и пока везде, где я читал написано именно так) строка в одинарный кавычках выводится как есть без интерполяции. Но жизнь показала вот что. Код:

$str=\'\\\\\\\\\';
open (OUT,">output.txt") or die;
print OUT $str;

В выходном файле вижу: "\\\\" (два обратных слэша).

Если извратиться так:

open (IN,"$str=;
open (OUT,">output.txt") or die;
print OUT $str;

При этом во входном файле записана строка: "\\\\\\\\" (4 обратных слэша). То на выходе имеем тоже 4 обратныхъ слэша.
Выходит содержимое одинарных кавычек интерпретируются не как есть.
Как так?!
Название: Одинарные кавычки и обратный слэш
Отправлено: sd1074 от 27 Апреля 2007, 14:19:08
Чуть-чуть потумкал... Сделал количество слэшей нечётным. Стала выдаваться ошибка, судя по которой, можно понять, что Перл интерпретирует как строку не только то что находится в этих одинарных кавычках, но и далее до следующей одинарной кавычки в тексте программы, при этом в строку включается всё, т.ч. и комментарии. Я уже чувствую в чём дело, но всё же хотелось бы получить точное разъяснение происходящим явлениям :)
И ещё хотелось бы как-то иметь возможность написав в каких-нибудь кавычках 4 слэша, получить на выходе 4 слэша, я не два.
Название: Одинарные кавычки и обратный слэш
Отправлено: ctax от 28 Апреля 2007, 10:55:44
Дело в том, что здесь предусмотрена возможность в строку заключенную в одинарные кавычки
 вставлять одинарные кавычки, для экранирования используется обр. слэш и следовательно это print \'\\\';#error не обратный слеш, а (кавычка - экранированная кавычка);
Название: Одинарные кавычки и обратный слэш
Отправлено: sd1074 от 28 Апреля 2007, 11:11:43
аа, ну да, конечно, блин :) Как я сам не догадался... Просто врезелась в голову фраза, что в одинарных кавычках всё интерпретируется как есть.
Спасибо.