Der Betreiber . in Perl

Der Punktoperator verwendet in Perl für Verkettungen (verbindungen) Zeilen.

Beispiel:

▶ Run
#!/usr/bin/perl

print 'ABC' . 'DEF';

Das Programm zeigt die Zeile 'ABCDEF'.

In diesem Beispiel wird der Punkt-Operator angewendet auf zwei Zeilen im Code des Programms geschrieben (eine solche Zeile nennt man "String-Literale").

In der Regel als Punkt-Operator Operanden . sind zeichenfolgenliterale, Skalare Variablen oder Ergebnisse anderer Funktionen.

Strings und zahlen

Der Betreiber . läuft immer mit Ihren Argumenten als mit Strings. Das Ergebnis aller dieser vier Transaktionen wird die gleiche — Zeile '11'.

  • 1 . 1
  • 1 . '1'
  • '1' . 1
  • '1' . '1'

Und es ist perfekt. Kann man ganz ohne Probleme конкатенировать zahlen für die Zeilen — und das Ergebnis ist genau wie erwartet.

Die Verwendung des Arrays als operand

Hier ist ein Beispiel eines Programms in dem array конкатенируется mit Zeichenketten mit dem Operator .:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print 'A' . @arr . 'B';

Das Programm zeigt die Zeile 'A3B'.

'A' . @arr . 'B' ist das gleiche dass 'A' . scalar(@arr) . 'B'.

Bei der Verwendung eines Arrays mit dem Punkt-Operator . array im skalarkontext und array im skalaren Kontext liefert die Anzahl der Elemente in diesem array.

Verwendung der Hash-Wert als Operanden

Hier ist das Beispielprogramm in der Hash конкатенируется mit Zeichenketten mit dem Operator .:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 'one',
    b => 'two',
);

print 'A' . %h . 'B';

Je nach Version von Perl das Programm zeigt auf dem Bildschirm entweder eine Zeichenfolge der Form 'A2/8B'oder Zeile 'A2B'.

'A' . %h . 'B' ist das gleiche was 'A' . scalar(%h) . 'B'.

Genau wie bei Arrays, bei der Verwendung der Hash-Wert mit dem Punkt-Operator . Hash wird wird im skalarkontext.

Perl ab Version 5.26 Hash im skalaren Kontext liefert die Anzahl der Paare von Elementen in diesem хеше. Und in der Version von Perl bis 5.26 Hash im skalaren Kontext liefert Informationen über die innere Einrichtung Hash.

Die Nutzung eines Links auf Sabu als operand

Hier ist ein Beispielprogramm, in dem ein Link auf Sabu конкатенируется mit Zeichenketten mit dem Operator .:

▶ Run
#!/usr/bin/perl

my $sub = sub {
   return 42;
};

print 'A' . $sub . 'B';

Perl auf die Version 5.22 zeigt so etwas wie ACODE(0x1452f00)B, ab 5.22 auf dem Bildschirm wird ungefähr dieselbe Zeile, nur wird es mehr Ziffern nach 0x: ACODE(0x561e87413ed8)B.

Unterschiedliche Starts der Programme zeigen unterschiedliche zahlen.

'A' . $sub . 'B' ist das gleiche wie 'A' . scalar($sub) . 'B'. Bei der Verwendung im skalarkontext anonyme Saba gibt eine Zeichenfolge der Form CODE(0x10dbf00) (Information wo im Speicher befindet sich dieser Code von Saba, das wissen darüber muss man sehr selten).

Unterstrich _

Für die String-Verkettung in Perl wird der Punktoperator .. Betreiber Unterstriche _ in Perl nicht. Aber der Betreiber _ gibt es in der beliebten Perl-Bibliothek von Template::Toolkit und in dieser Bibliothek es wird verwendet, um Verkettungen.

utf8-Flag

In den Fällen, in Verkettung beteiligt sich mindestens eine Zeile die ein internes Flag, dies bedeutet, dass der Inhalt befindet sich in utf8 kodiert, dann wurde die resultierende Zeile eine solche Flagge auch. Hier ist ein Beispiel Code, der bestätigt dieses Verhalten:

▶ Run
#!/usr/bin/perl

use utf8;

my $str_with_flag = 'раз-два-три';

my $str_without_flag = 'one-two-three';

print utf8::is_utf8($str_with_flag) . "\n"; # prints 1
print utf8::is_utf8($str_without_flag) . "\n"; # prints empty string

print utf8::is_utf8($str_with_flag . $str_without_flag) . "\n"; # prints 1
print utf8::is_utf8($str_without_flag . $str_with_flag) . "\n"; # prints 1

Verwandte Themen

Andere Artikel