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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow