Perl Language
Interpolation in Perl
Suche…
Grundlegende Interpolation
Interpolation bedeutet, dass der Perl-Interpreter die Werte von Variablen durch ihren Namen und einige Symbole (die nicht oder nur schwer direkt einzugeben sind) durch spezielle Zeichenfolgen ersetzt. Der wichtigste Unterschied besteht zwischen einfachen und doppelten Anführungszeichen: doppelte Anführungszeichen interpolieren die eingeschlossene Zeichenfolge, einfache Anführungszeichen jedoch nicht.
my $name = 'Paul';
my $age = 64;
print "My name is $name.\nI am $age.\n"; # My name is Paul.
# I am 64.
Aber:
print 'My name is $name.\nI am $age.\n'; # My name is $name.\nI am $age.\n
Sie können q{}
(mit einem beliebigen Trennzeichen) anstelle von einfachen Anführungszeichen und qq{}
anstelle von doppelten Anführungszeichen verwenden. Mit q{I'm 64}
kann beispielsweise ein Apostroph innerhalb einer nicht interpolierten Zeichenfolge verwendet werden (andernfalls würde die Zeichenfolge beendet).
Aussagen:
print qq{$name said: "I'm $age".}; # Paul said: "I'm 64".
print "$name said: \"I'm $age\"." # Paul said: "I'm 64".
Machen Sie dasselbe, aber im ersten müssen Sie keine doppelten Anführungszeichen innerhalb des Strings verwenden.
Wenn Ihr Variablenname mit dem umgebenden Text kollidiert, können Sie die Syntax ${var}
, um zu unterscheiden:
my $decade = 80;
print "I like ${decade}s music!" # I like 80s music!
Was ist interpoliert?
Perl interpoliert Variablennamen:
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 können als Ganzes interpoliert werden, ihre Elemente werden durch Leerzeichen getrennt:
my @char = ('a', 'b', 'c');
print "My chars are @char\n"; # My chars are a b c
Perl nicht interpoliert Hashes als Ganzes:
my %map = (a => 125, b => 1080, c => 11);
print "My map is %map\n"; # My map is %map
und Funktionsaufrufe (einschließlich Konstanten):
use constant {
PI => '3.1415926'
};
print "I like PI\n"; # I like PI
print "I like " . PI . "\n"; # I like 3.1415926
Perl interpoliert Escape-Sequenzen beginnend mit \
:
\t horizontal tab
\n newline
\r return
\f form feed
\b backspace
\a alarm (bell)
\e escape
Die Interpolation von \n
hängt von dem System ab, in dem das Programm arbeitet: Es erzeugt ein oder mehrere Zeilenumbrüche gemäß den aktuellen Systemkonventionen.
Perl interpoliert nicht \v
, was die vertikale Registerkarte in C und anderen Sprachen bedeutet.
Zeichen können mit ihren Codes angesprochen werden:
\x{1d11e} 𝄞 by hexadecimal code
\o{350436} 𝄞 by octal code
\N{U+1d11e} 𝄞 by Unicode code point
oder Unicode-Namen:
\N{MUSICAL SYMBOL G CLEF}
Zeichen mit Codes von 0x00
bis 0xFF
in der nativen Codierung können in kürzerer Form angesprochen werden:
\x0a hexadecimal
\012 octal
Steuerzeichen können mit speziellen Escape-Sequenzen angesprochen werden:
\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)
Großbuchstaben haben die gleiche Bedeutung: "\cA" == "\ca"
.
Die Interpretation aller Escape-Sequenzen mit Ausnahme von \N{...}
kann von der Plattform abhängen, da plattform- und codierungsabhängige Codes verwendet werden.