Jaka jest różnica między pojedynczymi i podwójnymi cudzysłowami w Perl

W języku programowania Perl, aby utworzyć linię w kodzie programu można używać pojedyncze ' lub podwójne cudzysłowy ".

Między nimi jest różnica. W apostrofy działają tylko эскейп sekwencji \\ i \', w podwójnych cudzysłowach oprócz tych dwóch działają jeszcze inne эскейп kolejności. I tylko przy użyciu podwójnych cudzysłowów nazwy zmiennych rozwijają się w wartości (następuje interpolacja). Dalej szczegóły.

Całkowita

I pojedyncze i podwójne cudzysłowy w języku programowania Perl są używane, aby opisać wiersze w kodzie programu (wiersza w tekście programy są nazywane "literały ciągów znaków"). Oto przykład:

▶ Run
#!/usr/bin/perl

my $str1 = 'Hello, world!';
my $str2 = "Hello, world!";

W tym programie stworzyliśmy dwie zmienne i każdej z nich nadano w wierszu. W tym przykładzie nie ma żadnej różnicy między użyciem podwójnych i pojedynczych cudzysłowów, wiersze, które otrzymaliśmy i w pierwszym, i w drugim przypadku zupełnie te same.

Backslash

Jeszcze jedna wspólna rzecz w użyciu pojedynczych i podwójnych cudzysłowów — to jak trzeba działać, jeśli trzeba by w wierszu był znak backslash \. Jeśli chcesz utworzyć ciąg z tym symbolem, to w przekazanym литерале trzeba napisać dwa odwrotny ukośnik \\. W wyniku wierszu będzie jeden backslash. Oto przykład:

▶ Run
#!/usr/bin/perl

my $str1 = '\\';
my $str2 = "\\";

print $str1, "\n";
print $str2, "\n";

Ten program wypisze na ekran:

\
\

Cudzysłów w wierszu

Pierwsza różnica między pojedynczymi i podwójnymi cudzysłowami polega na tym że trzeba zrobić aby utworzyć ciąg w których znajdują się pojedyncze lub podwójne cudzysłowy.

Z pomocą cudzysłowu bardzo łatwo stworzyć wiersz, w którym jest cudzysłów: '"'. A jeśli trzeba zrobić wiersz w których jest apostrof, to trzeba ją zapisać za pomocą dwóch znaków: zwrotny slash \ i cudzysłów. '\'' — taki literał ciągu znaków tworzy linię z jednego znaku "apostrof".

W przypadku podwójnych cudzysłowów — wszystko na odwrót. Można utworzyć ciąg z pojedynczą кавычкой "'", a do tego aby umieścić w wierszu podwójny cudzysłów trzeba napisać przed nią backslash (to nazywa się "przesiewanie") "\"".

Używanie znaków specjalnych

Przy użyciu cudzysłowu są tylko dwa skupiska znaków, które zamieniają się w jeden symbol. To, jak już widzieliśmy wcześniej, dwa odwrotny ukośnik \\ — zamieniają się w jeden slash; i backslash i apostrof \' — to zamienia się w jeden symbol "apostrof".

A oto przy użyciu podwójnych cudzysłowów jest jeszcze kilka takich połączeniu znaków (zwykle nazywa się je "эскейп sekwencji"). Najbardziej znana i często stosowana jest kombinacja znaków \n. \nw cudzysłów zamienia się w jeden znak specjalny "tłumaczenie wiersza". Przy użyciu pojedynczych cudzysłowu print 'ASDF\nQWERTY'; wyprowadzi na ekran ASDF\nQWERTY, a przy użyciu podwójnych cudzysłowów print "ASDF\nQWERTY"; na ekranie pojawi się dwa wiersze:

ASDF
QWERTY

Inna używana эскейп sekwencja to \t, przy użyciu w cudzysłowach to zamienia się w znak tabulacji. Nie bardzo często, ale jest \b, ten znak specjalny usuwa poprzedni znak (można użyć do tworzenia bardzo prostych animacji w konsoli). Istnieje jeszcze pewna ilość эскейп sekwencje, ale są one mało używane.

Interpolacja zmiennych

Jeśli w wierszu stworzonej za pomocą podwójnych cudzysłowów zapisać nazwę zmiennej, to w wierszu zamiast nazwy pojawi się wartość tej zmiennej (w przypadku użycia cudzysłowu w wierszu będzie imię).

Ta funkcja języka jest bardzo często używany.

▶ Run
#!/usr/bin/perl

my $var = 'John';

my $str1 = 'Hello, $var';
my $str2 = "Hello, $var";

print $str1, "\n";
print $str2, "\n";

Ten program wypisze na ekran:

Hello, $var
Hello, John

Wiersz $str1 stworzyliśmy z pomocą cudzysłowu — i wiersz zawiera dokładnie to co było napisane w przekazanym литерале — 'Hello, $var'. A w wierszu $str2 nazwa zmiennej $var заменилось na wartość tej zmiennej.

Należy pamiętać, że rozwijają się tylko скаляры i tablice:

▶ Run
#!/usr/bin/perl

my $var = 'John';
my @arr = ('one', 'two');
my %h = (
    a => 1,
);

sub my_sub {
    return 12;
}

print "$var @arr %h &my_sub";

Ten program wyświetla na ekranie tekst John one two %h &my_sub. Skalar $var i tablica @arr odbyły się w wartości, a hesh %h i saba my_sub — nie.

Rekomendacja

W wielu przypadkach, aby utworzyć literały ciągów znaków jak używać — i pojedyncze i podwójne cudzysłowy będą działać tak samo. Rekomendacja jest taka — jeśli ciąg rozpoznawcza tak że używać — skorzystaj z apostrofami.

Inne artykuły