Perl Language
Interpolation i Perl
Sök…
Grundläggande interpolering
Interpolering innebär att Perl-tolk kommer att ersätta värdena på variabler mot deras namn och vissa symboler (som är omöjliga eller svåra att skriva in direkt) för speciella teckensekvenser (det kallas också flykt). Den viktigaste skillnaden är mellan enstaka och dubbla citat: dubbla citat interpolerar den bifogade strängen, men enstaka citat gör det inte.
my $name = 'Paul';
my $age = 64;
print "My name is $name.\nI am $age.\n"; # My name is Paul.
# I am 64.
Men:
print 'My name is $name.\nI am $age.\n'; # My name is $name.\nI am $age.\n
Du kan använda q{}
(med valfri avgränsare) istället för enstaka citat och qq{}
istället för dubbla citat. Till exempel tillåter q{I'm 64}
att använda en apostrof i en icke-interpolerad sträng (annars skulle den avbryta strängen).
uttalanden:
print qq{$name said: "I'm $age".}; # Paul said: "I'm 64".
print "$name said: \"I'm $age\"." # Paul said: "I'm 64".
gör samma sak, men i den första behöver du inte undgå dubbla citat i strängen.
Om ditt variabla namn kolliderar med omgivande text kan du använda syntaxen ${var}
att otvetydiga:
my $decade = 80;
print "I like ${decade}s music!" # I like 80s music!
Vad interpoleras
Perl interpolerar variabla namn:
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
Matriser kan interpoleras som en helhet, deras element separeras av mellanrum:
my @char = ('a', 'b', 'c');
print "My chars are @char\n"; # My chars are a b c
Perl inte interpolera hashar som helhet:
my %map = (a => 125, b => 1080, c => 11);
print "My map is %map\n"; # My map is %map
och funktionssamtal (inklusive konstanter):
use constant {
PI => '3.1415926'
};
print "I like PI\n"; # I like PI
print "I like " . PI . "\n"; # I like 3.1415926
Perl interpolerar flygsekvenser som börjar med \
:
\t horizontal tab
\n newline
\r return
\f form feed
\b backspace
\a alarm (bell)
\e escape
Interpolering av \n
beror på det system där programmet fungerar: det kommer att producera ett / de nya linjekaraktärerna enligt de nuvarande systemkonventionerna.
Perl inte Interpolera \v
, vilket innebär vertikal flik i C och andra språk.
Karaktär kan adresseras med deras koder:
\x{1d11e} 𝄞 by hexadecimal code
\o{350436} 𝄞 by octal code
\N{U+1d11e} 𝄞 by Unicode code point
eller Unicode-namn:
\N{MUSICAL SYMBOL G CLEF}
Karaktär med koder från 0x00
till 0xFF
i den ursprungliga kodningen kan adresseras i en kortare form:
\x0a hexadecimal
\012 octal
Kontrolltecken kan adresseras med hjälp av speciella flyktningssekvenser:
\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)
Små bokstäver har samma betydelse: "\cA" == "\ca"
.
Tolkning av alla escape-sekvenser förutom \N{...}
kan bero på plattformen eftersom de använder plattforms- och kodningsberoende koder.