Ввод и вывод в Perl. Данные для сценария Perl могут поступать из различных источников; файлов, потока стандартного ввода и каналов. Поэтому в программе необходимо идентифицировать источник входной информации. Это означает, что, в отличие от языка gawk и подобно shell-программе, сценарий Perl должен иметь точные указания относительно считывания вводимой информации. Ее источник точно определяется с помощью дескриптора файла — имени, которым этот источник, например файл на диске, обозначается в программах. В Perl заранее заданы дескрипторы файлов для стандартных потоков ввода и вывода, а также для стандартного потока ошибок. Для стандартного ввода используется дескриптор файла STDIN.
Ситуация аналогична и при выводе данных. Интерпретатор Perl может выводить информацию в файлы и каналы, а также на стандартный вывод. Дескрипторы применяются для идентификации файлов и каналов как при вводе, так и при выводе данных. Дескриптор файла STDOUT идентифицирует стандартный вывод, а дескриптор файла STDERR используется для обозначения стандартного потока сообщений об ошибках. Сначала рассмотрим, как Perl использует стандартный ввод и вывод данных, а затем обсудим методы выполнения операций с определенными файлами.
Perl может считывать данные со стандартного ввода либо из любого указанного файла. Команда чтения входной информации состоит из символов «меньше чем» (<) и «больше чем» (>). Чтобы обеспечить чтение информации из файла, между этими символами помещается имя дескриптора файла — <MYFILE>. Для считывания данных со стандартного ввода достаточно воспользоваться дескриптором файла STDIN, который действует подобно команде read оболочки BASH shell.
<STDIN>
Чтобы воспользоваться данными, считанными с помощью оператора <STDIN>, следует присвоить их переменной. Можно обратиться к переменной, определенной пользователем, либо к переменной $_, заданной по умолчанию, как показано в следующем примере. У многих команд значением по умолчанию является значение переменной $_. Так, если для команды print не указаны аргументы, выводу подлежит значение переменной $_, При использовании команды chomp без аргументов из значения переменной $_ удаляется конечный символ новой строки. Представленный ниже сценарий туread иллюстрирует применение переменной $_ вместе со стандартным потоком ввода.
myread
#! /usr/bin/perl
# Программа, предназначенная для чтения и отображения данных, введенных с клавиатуры.
$_ = <STDIN>; # Чтение данных из стандартного потока ввода
print "This is what I entered: $_"; # Вывод считанных данных в качестве части строки.