Perl Language
Interpolacja w Perlu
Szukaj…
Podstawowa interpolacja
Interpolacja oznacza, że interpreter Perla zastąpi wartości zmiennych ich nazwą i niektórymi symbolami (których niemożliwe lub trudne do bezpośredniego wpisania) specjalnymi sekwencjami znaków (jest to również znane jako ucieczka). Najważniejsze rozróżnienie między pojedynczymi i podwójnymi cudzysłowami: podwójne cudzysłowy interpolują zamknięty ciąg, ale pojedyncze cudzysłowy nie.
my $name = 'Paul';
my $age = 64;
print "My name is $name.\nI am $age.\n"; # My name is Paul.
# I am 64.
Ale:
print 'My name is $name.\nI am $age.\n'; # My name is $name.\nI am $age.\n
Możesz użyć q{}
(z dowolnym separatorem) zamiast pojedynczych cudzysłowów i qq{}
zamiast podwójnych cudzysłowów. Na przykład q{I'm 64}
pozwala na użycie apostrofu w nieinterpolowanym łańcuchu (w przeciwnym razie zakończyłby łańcuch).
Sprawozdania:
print qq{$name said: "I'm $age".}; # Paul said: "I'm 64".
print "$name said: \"I'm $age\"." # Paul said: "I'm 64".
zrób to samo, ale w pierwszym nie musisz wstawiać podwójnych cudzysłowów w ciągu.
Jeśli nazwa zmiennej koliduje z otaczającym tekstem, możesz użyć składni ${var}
aby ujednoznacznić:
my $decade = 80;
print "I like ${decade}s music!" # I like 80s music!
Co jest interpolowane
Perl interpoluje nazwy zmiennych:
my $name = 'Paul';
print "Hello, $name!\n"; # Hello, Paul!
my @char = ('a', 'b', 'c');
print "$char[1]\n"; # b
my %map = (a => 125, b => 1080, c => 11);
print "$map{a}\n"; # 125
Tablice mogą być interpolowane jako całość, ich elementy są oddzielone spacjami:
my @char = ('a', 'b', 'c');
print "My chars are @char\n"; # My chars are a b c
Perl nie interpoluje skrótów jako całości:
my %map = (a => 125, b => 1080, c => 11);
print "My map is %map\n"; # My map is %map
i wywołania funkcji (w tym stałe):
use constant {
PI => '3.1415926'
};
print "I like PI\n"; # I like PI
print "I like " . PI . "\n"; # I like 3.1415926
Perl interpoluje sekwencje specjalne zaczynające się od \
:
\t horizontal tab
\n newline
\r return
\f form feed
\b backspace
\a alarm (bell)
\e escape
Interpolacja \n
zależy od systemu, w którym działa program: wygeneruje znak (y) nowej linii zgodnie z obecnymi konwencjami systemowymi.
Perl nie interpoluje \v
, co oznacza tabulator pionowy w C i innych językach.
Postać można rozwiązać za pomocą ich kodów:
\x{1d11e} 𝄞 by hexadecimal code
\o{350436} 𝄞 by octal code
\N{U+1d11e} 𝄞 by Unicode code point
lub nazwy Unicode:
\N{MUSICAL SYMBOL G CLEF}
Znak o kodach od 0x00
do 0xFF
w kodowaniu natywnym można adresować w krótszej formie:
\x0a hexadecimal
\012 octal
Znak kontrolny można adresować za pomocą specjalnych sekwencji ucieczki:
\c@ chr(0)
\ca chr(1)
\cb chr(2)
...
\cz chr(26)
\c[ chr(27)
\c\ chr(28) # Cannot be used at the end of a string
# since backslash will interpolate the terminating quote
\c] chr(29)
\c^ chr(30)
\c_ chr(31)
\c? chr(127)
Wielkie litery mają to samo znaczenie: "\cA" == "\ca"
.
Interpretacja wszystkich sekwencji specjalnych, z wyjątkiem \N{...}
może zależeć od platformy, ponieważ używają kodów zależnych od platformy i kodowania.