Forum Webscript.Ru
Программирование => Perl => Тема начата: 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 обратныхъ слэша.
Выходит содержимое одинарных кавычек интерпретируются не как есть.
Как так?!
-
Чуть-чуть потумкал... Сделал количество слэшей нечётным. Стала выдаваться ошибка, судя по которой, можно понять, что Перл интерпретирует как строку не только то что находится в этих одинарных кавычках, но и далее до следующей одинарной кавычки в тексте программы, при этом в строку включается всё, т.ч. и комментарии. Я уже чувствую в чём дело, но всё же хотелось бы получить точное разъяснение происходящим явлениям :)
И ещё хотелось бы как-то иметь возможность написав в каких-нибудь кавычках 4 слэша, получить на выходе 4 слэша, я не два.
-
Дело в том, что здесь предусмотрена возможность в строку заключенную в одинарные кавычки
вставлять одинарные кавычки, для экранирования используется обр. слэш и следовательно это print \'\\\';#error не обратный слеш, а (кавычка - экранированная кавычка);
-
аа, ну да, конечно, блин :) Как я сам не догадался... Просто врезелась в голову фраза, что в одинарных кавычках всё интерпретируется как есть.
Спасибо.