Символы \n (обратный слеш и n) в Perl

Достаточно часто в коде программы на языке Perl можно встретить комбинацию символов \n.

В языке программирования Perl, как и во множестве других языков программирования, эти два символа рядом означают один символ — перенос строки. Дальше подробности.

Вот пример кода в котором используется \n:

▶ Run
#!/usr/bin/perl

print "line 1\n";
print "line 2\n";

Если сохранить этот текст в файл script.pl и запустить его с помощью perl script.pl, то на экране появится:

line 1
line 2

По выводу программы видно что текст line 1 находится на одной строке, а текст line 2 на другой. Так получилось именно благодаря символам \n в команде print "line 1\n";. Ключевое слово print выводит на экран свои аргументы. Тут в качестве аргумента используется строка "line 1\n". Perl выводит на экран все символы из строки. Комбинация символов \n — это один специальный символ, который говорит о том что текст, следующий за этим символов нужно выводить с новой строки.

Использование перевода строк

Можно написать программу которая работает точно так же как и прошлая программа без использования символов \n в коде. Вот как это сделать:

▶ Run
#!/usr/bin/perl

print "line 1
";
print "line 2
";

Здесь вместо символа \n используется настоящий перевод строки в коде программы.

Использование символа \n и настоящего перевода строки создает совершенно одинаковые строки. Вот пример кода, который показывает что это действительно так (при запуске эта программа выведет на экран strings are the same):

▶ Run
#!/usr/bin/perl

my $str1 = "line\n";

my $str2 = "line
";

if ($str1 eq $str2) {
    print "strings are the same";
} else {
    print "strings differ";
}

Двойные и одинарные кавычки

Символы \n превращаются в перевод строки только если используются в двойных кавычках. Если использовать символы \n, в одинарных кавычках, то они так и останутся двумя символами — обратный слеш и латинская буква n.

▶ Run
#!/usr/bin/perl

print 'line 1\n';
print 'line 2\n';

При запуске этого кода на экране появится текст

line 1\nline 2\n

\n — это один символ

Можно убедиться что при использовании \n в двойных кавычках — это на самом деле один символ.

▶ Run
#!/usr/bin/perl

print length("\n"), "\n";
print length('\n'), "\n";

Эта программа выведет число 1 первой строчке и число 2 на второй строке. \n в двойных кавычках это один символ, а \n в одинарных кавычках это два символа.

say

Очень часто символы \n используются вместе c print для того чтобы красиво что-то отобразить в консоли. Вместо этого можно использовать ключевое слово say. say работает точно так же как print — выводит на экран свои аргументы, но еще и выводит после них символ \n для перевода строки.

Так что нашу программу можно было бы написать и так:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say "line 1";
say "line 2";

Для того чтобы работал print ничего дополнительно делать не нужно, а вот для того чтобы работал say в код Perl программы нужно добавить строку use feature qw(say);. Без этого работать не будет.

Другие статьи

Комментарии