Symbole \n (backslash i n) w Perl

Dość często w kodzie programu w języku Perl można spotkać kombinację znaków \n.

W języku programowania Perl, jak i w wielu innych języków programowania, te dwa znaki obok oznaczają jeden symbol — znak nowej linii. Dalej szczegóły.

Oto przykład kodu w którym jest używany \n:

▶ Run
#!/usr/bin/perl

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

Jeżeli zapisz ten tekst w plik script.pl i uruchomić go za pomocą perl script.pl, to na ekranie pojawi się:

line 1
line 2

We wniosku programu widać, że tekst line 1 znajduje się na jednej linii, a tekst line 2 na inny. Tak się stało właśnie dzięki znaków \n w zespole print "line 1\n";. Słowo kluczowe printwyświetla na ekran swoje argumenty. Tu argumentem jest ciąg "line 1\n". Perl wyświetla wszystkie znaki z wiersza. Kombinacja znaków \n — jest to jeden znak specjalny, który mówi o tym, że tekst poniższy za tym znaków trzeba wyprowadzać z nowej linii.

Korzystanie z tłumaczenia wierszy

Można napisać program który działa dokładnie tak samo jak i poprzedni program bez użycia znaków \n w kodzie. Oto jak to zrobić:

▶ Run
#!/usr/bin/perl

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

Tutaj zamiast symbolu \n używany jest prawdziwy tłumaczenie wiersza w kodzie programu.

Użycie symbolu \n i niniejszego tłumaczenia wiersza tworzy zupełnie te same polecenia. Oto przykład kodu, który pokazuje, że rzeczywiście tak jest (po uruchomieniu program wyświetla 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";
}

Pojedyncze i podwójne cudzysłowy

Symbole \n zamieniają się w tłumaczenie wiersza tylko jeśli są używane w podwójnych cudzysłowach. Jeśli używać znaków \n, w apostrofy, to one pozostaną dwoma znakami — backslash i litera n.

▶ Run
#!/usr/bin/perl

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

Po uruchomieniu tego kodu na ekranie pojawi się tekst

line 1\nline 2\n

\n — jest to jeden znak

Można upewnić się, że podczas korzystania z \n w cudzysłów — to rzeczywiście jeden znak.

▶ Run
#!/usr/bin/perl

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

Ten program wyświetli numer 1 na pierwszej linii i numer 2 w drugim wierszu. \n w cudzysłowach to jeden znak, a \n w apostrofy to dwa znaki.

say

Bardzo często symbole \n są używane razem c print , aby ładnie się coś wyświetlić w konsoli. Zamiast tego można użyć słowa kluczowego say. say działa dokładnie tak samo jak print — wyświetla na ekran swoje argumenty, ale jeszcze i wyświetla po nich symbol \n do tłumaczenia wiersza.

Tak, że nasz program można by było pisać i tak:

▶ Run
#!/usr/bin/perl

use feature qw(say);

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

Aby pracował print nic dodatkowo robić nie trzeba, a to dla tego aby pracował say w kod Perl programu należy dodać wiersz use feature qw(say);. Bez tego nie będzie działać.

Inne artykuły