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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow