$ /
Разделитель входных записей, новая строка по умолчанию. Это влияет на представление Perl о том, что такое «линия». Работает как переменная RS в awk, включая обработку пустых строк как терминатора, если для него задана нулевая строка. (Пустая строка не может содержать пробелов или табуляции.) Вы можете установить ее в многосимвольную строку, чтобы соответствовать многосимвольному терминатору, или в undef, чтобы прочитать конец файла. Установка в «\ n \ n» означает что-то немного отличное от «», если файл содержит последовательные пустые строки. Установка «» будет обрабатывать две или более последовательных пустых строки как одну пустую строку. Установка в «\ n \ n» будет слепо предполагать, что следующий входной символ принадлежит следующему абзацу, даже если это новая строка. (Мнемоника: / ограничивает границы строк при цитировании стихов.)
local $/; # enable "slurp" mode
local $_ = <FH>; # whole file now here
s/\n[ \t]+/ /g;
Помните: значение $ / является строкой, а не регулярным выражением. awk должен быть лучше для чего-то. : -)
Установка $ / в качестве ссылки на целое число, скаляр, содержащий целое число, или скаляр, который может быть преобразован в целое число, будет пытаться читать записи вместо строк, при этом максимальный размер записи является ссылочным целым числом. Итак, это:
local $/ = \32768; # or \"32768", or \$var_containing_32768
open my $fh, "<", $myfile or die $!;
local $_ = <$fh>;
будет читать запись не более 32768 байт из FILE. Если вы не читаете из файла, ориентированного на запись (или ваша ОС не имеет файлов, ориентированных на запись), то, скорее всего, вы получите полный кусок данных при каждом чтении. Если запись превышает установленный вами размер записи, вы получите запись обратно по частям. Попытка установить размер записи равным нулю или менее приведет к чтению (всего) файла целиком.
В VMS чтение записей выполняется с помощью эквивалента sysread, поэтому лучше не смешивать чтение записей и записей без одного и того же файла. (Это вряд ли будет проблемой, потому что любой файл, который вы хотите прочитать в режиме записи, вероятно, непригоден для использования в линейном режиме.) Системы, не относящиеся к VMS, выполняют нормальный ввод-вывод, поэтому безопасно смешивать записи и чтения без записи файла.
См. Также "Новые строки" в perlport. Также см. $ ..