Zoeken…


Basisinterpolatie

Interpolatie betekent dat Perl-interpreter de waarden van variabelen vervangt voor hun naam en enkele symbolen (die onmogelijk of moeilijk direct in te typen zijn) voor speciale reeksen tekens (dit wordt ook wel escaping genoemd). Het belangrijkste onderscheid is tussen enkele en dubbele aanhalingstekens: dubbele aanhalingstekens interpoleren de ingesloten reeks, maar enkele aanhalingstekens niet.

my $name = 'Paul';
my $age = 64;
print "My name is $name.\nI am $age.\n"; # My name is Paul.
                                         # I am 64.

Maar:

print 'My name is $name.\nI am $age.\n'; # My name is $name.\nI am $age.\n

U kunt q{} (met een scheidingsteken) gebruiken in plaats van enkele aanhalingstekens en qq{} plaats van dubbele aanhalingstekens. Met q{I'm 64} kunt u bijvoorbeeld een apostrof gebruiken in een niet-geïnterpoleerde string (anders wordt de string beëindigd).

statements:

print qq{$name said: "I'm $age".}; # Paul said: "I'm 64".
print "$name said: \"I'm $age\"."  # Paul said: "I'm 64".

doe hetzelfde, maar in de eerste hoef je niet te ontsnappen aan dubbele aanhalingstekens binnen de string.

Als uw variabelenaam niet overeenkomt met de omringende tekst, kunt u de syntaxis ${var} om het ondubbelzinnig te maken:

my $decade = 80;
print "I like ${decade}s music!"  # I like 80s music!

Wat is geïnterpoleerd?

Perl interpoleert variabelenamen:

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

Arrays kunnen als geheel worden geïnterpoleerd, hun elementen worden gescheiden door spaties:

my @char = ('a', 'b', 'c');
print "My chars are @char\n"; # My chars are a b c

Perl niet hashes als geheel interpoleren:

my %map = (a => 125, b => 1080, c => 11);
print "My map is %map\n"; # My map is %map

en functieaanroepen (inclusief constanten):

use constant {
    PI => '3.1415926'
};
print "I like PI\n";         # I like PI
print "I like " . PI . "\n"; # I like 3.1415926

Perl interpoleert ontsnappingsreeksen beginnend met \ :

\t                  horizontal tab
\n                  newline
\r                  return
\f                  form feed
\b                  backspace
\a                  alarm (bell)
\e                  escape

Interpolatie van \n hangt af van het systeem waar het programma werkt: het zal een nieuwelijnsteken produceren volgens de huidige systeemconventies.

Perl interpoleert niet \v , wat betekent verticale tab in C en andere talen.

Karakter kan worden geadresseerd met behulp van hun codes:

\x{1d11e}     𝄞 by hexadecimal code
\o{350436}    𝄞 by octal code
\N{U+1d11e}   𝄞 by Unicode code point

of Unicode-namen:

\N{MUSICAL SYMBOL G CLEF}

Karakter met codes van 0x00 tot 0xFF in de native codering kan in een kortere vorm worden geadresseerd:

\x0a     hexadecimal
\012     octal

Besturingsteken kan worden geadresseerd met speciale escape-reeksen:

\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)

Hoofdletters hebben dezelfde betekenis: "\cA" == "\ca" .

De interpretatie van alle escape-reeksen behalve \N{...} kan afhankelijk zijn van het platform, omdat ze platform- en coderingsafhankelijke codes gebruiken.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow