Perl 5.10 позаимствовал встроенную функцию say из текущей разработки Perl 6 (которая, возможно, взяла за образец функцию println из Pascal). Функция say делает то же, что print, но завершает вывод символом новой строки. Все следующие команды выводят одинаковые строки:
use 5.010;
print "Hello!\n";
print "Hello!", "\n";
say "Hello!";
Чтобы вывести значение переменной с символом новой строки, не нужно создавать лишнюю троку или выводить список вызовом print – просто используйте say. Это особенно удобно в распространенной ситуации, когда все выводимые данные должны завершаться переводом строки:
use 5.010;
my $name = 'Fred';
print "$name\n";
print $name, "\n";
say $name;
Чтобы интерполировать массив, вам все равно придется заключить его имя в кавычки. Только в этом случае выводимые элементы будут разделяться пробелами:
use 5.010;
my @array = qw( a b c d );
say @array; # "abcd\n"
say "@array"; # "a b c d\n";
По аналогии с print при вызове say можно задать файловый дескриптор:
use 5.010;
say BEDROCK "Hello!";
Так как функция относится к числу нововведений Perl 5.10, мы используем ее только в том случае, если в программе задействованы другие возможности Perl 5.10. Старая верная команда print работает ничуть не хуже, но мы подозреваем, что некоторые программисты Perl с радостью избавятся от ввода четырех лишних символов (два в имени и \n).