Perl Language
Interpolatie in Perl
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.