Шаг 27.
Функция print

    На этом шаге мы рассмотрим особенности использования функции print.

    Функция print наиболее часто используемая функция для вывода информации из сценария Perl. Ее синтаксис имеет следующий вид:

    print ДЕСКРИПТОР СПИСОК;

    Здесь ДЕСКРИПТОР представляет дескриптор файла, в который функция выводит строковые данные, представленные списком вывода СПИСОК. Он может состоять из переменных, элементов массивов и выражений, вычисляемых как строковые данные. Дескриптор файла создается функцией open (). Он может быть опущен, и в этом случае вывод осуществляется в стандартный файл вывода STDOUT, если только функцией select () не выбран другой файл вывода по умолчанию. Как уже отмечалось ранее, обычно стандартное устройство вывода - экран монитора компьютера.

    Функция print при выводе своего списка не завершает его символом новой строки "\n". Это означает, что следующая функция print начнет вывод на экран непосредственно после последнего выведенного предыдущей функцией print символа. Если такое поведение не желательно, то следует список вывода каждой функции print явно завершать строкой, содержащей символ новой строки, или включать его последним символом последнего элемента списка вывода. Следующий пример демонстрирует вывод с помощью функции print:

#! perl -w

print "String 1:";
print "String 2:\n";
print "String 3:", "\n";
print STDOUT "String 4:\n";
print FILEOUT "String 4:\n";
Текст этого примера можно взять здесь.

    Вывод первых четырех функций print примера представлен ниже:

String 1:String 2: 
String 3: 
String 4:

    Вторая функция print начинает свой вывод на той же строке, на которой завершила вывод первая функция, в которой в списке вывода нет символа перехода на новую строку. В четвертой функции явно указан дескриптор стандартного файла вывода STDOUT. Относительно пятой функции скажем, что она ничего ни в какой файл, определенный дескриптором FILEOUT, не выведет, так как с этим дескриптором не связан никакой файл. Для этого следовало бы до выполнения последней функции print открыть файл функцией open () и связать с ним дескриптор FILEOUT.

    Функция print, как и большинство других функций, определенных в языке Perl, является списковой операцией, и все элементы списка вывода вычисляются в списковом контексте. Это обстоятельство следует учитывать при использовании в качестве элементов списка вывода выражений с вызовами подпрограмм.

    Если параметры print, включая дескриптор файла, заключены в круглые скобки, то такая синтаксическая конструкция считается термом и в выражении имеет наивысший приоритет вычисления. Например, следующий оператор:

    print   ($m +  $n) ** 2;

напечатает сумму значений переменных $m и $n, а не их сумму, возведенную в квадрат. Компилятор Perl, обнаружив после лексемы print левую круглую скобку, найдет правую круглую скобку и будет рассматривать их содержимое как список параметров функции print. А так как такая конструкция есть терм, то сначала будет выполнена операция печати суммы значений переменных, а потом результат этой операции (Истина = 1) будет возведен в квадрат. Добавление необязательного дескриптора стандартного файла вывода STDOUT исправит подобную ошибку:

    print  STDOUT   ($m +  $n) ** 2;      #  Выведет ($m +  $n) ** 2.

    Если в функции печати print не задан список вывода, то она по умолчанию выводит содержимое специальной переменной $_ в файл, определенный параметром ДЕСКРИПТОР:

  print;           # Выводится содержимое переменной $_ на экран монитора.
  print STDOUT;    # Эквивалентен предыдущему оператору. 
  print FILEOUT;   # Выводится содержимое переменной $_ в файл 
                   # с дескриптором FILEOUT.

    На следующем шаге мы приведем несколько примеров использования изученных конструкций.




Предыдущий шаг Содержание Следующий шаг