Der Betreiber => (dick Komma) in Perl

Der Betreiber => wird verwendet, um die Werte einzugrenzen. Es wird am häufigsten verwendet bei der Beschreibung der Perl-Hash. Hier ist ein Beispiel:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 1,
    b => 2,
);

Der Betreiber => ist eine syntaktische Zucker. Dieser Operator wird das Komma anstelle des operators ,, aber im Gegensatz zu den Komma-Operator, er nimmt den linken Operanden als String, ohne die Notwendigkeit, Ihre in Anführungszeichen. Hier ist eine ganz ähnliche Beschreibung Perl Hash, aber mit einem Komma:

▶ Run
#!/usr/bin/perl

my %h = (
    'a', 1,
    'b', 2,
);

Bei der Beschreibung der Hash ist immer besser, die Betreiber => zur Trennung von Schlüssel-Wert - da bei dieser Anwendung ist ein grafisches Code.

Komma anstelle des operators , immer kann der Betreiber => (aber nicht Umgekehrt). Aber nicht immer so lohnt sich zu tun. Hier ist noch eine Beschreibung von Hash, die funktioniert genauso wie die beiden vorherigen, aber so nicht zu tun es ist notwendig:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 1 =>
    b => 2 =>
);

Der Betreiber => wird oft als "dick Komma", weil er wirkt wie ein Komma (mit einer Ergänzung), sondern besteht aus zwei Zeichen anstelle von einem.

Der linke operand

Der Betreiber => denkt String Linker operand nur, wenn folgende Bedingungen erfüllt sind:

  • der linke operand beginnt mit einem Buchstaben oder mit dem Zeichen _
  • und der linke operand besteht nur aus Buchstaben, Ziffern und Zeichen _

Also hier ist ein Code, funktioniert nicht (aufgrund der Tatsache, dass in der linken Operanden ein Symbol -):

▶ Run
#!/usr/bin/perl

my %h = (
   some-key => 3, # error!
);

Müssen Sie explizit schließen some-key in Anführungszeichen: 'some-key'.

Verwendung nicht in хешах

Der Betreiber => in Erster Linie lohnt sich der Einsatz für die Beschreibungen von Wertepaaren in хеше. Er sieht aus wie Pfeil und bei der Verwendung in хеше es sieht sehr organisch — Schlüssel weist auf die Bedeutung. Aber der Betreiber => Sie können nicht nur in хешах, aber in der Regel in allen Listen (aber nicht immer macht das Sinn). Hier ist ein Beispiel für die Verwendung dieses operators in einem array:

▶ Run
#!/usr/bin/perl

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

In diesem Beispiel wurde ein array in dem sich 3 Zeilen. Da wurde der Betreiber =>, ist der linke operand kann nicht in Anführungszeichen eingeschlossen werden. Also die ersten beiden Zeilen ohne Anführungszeichen verwendet werden. Auf die Rechte operand diese Magie nicht gilt, so musste die Dritte Zeile in Anführungszeichen gesetzt werden.

Dieses Beispiel wäre besser zu schreiben über den qw:

▶ Run
#!/usr/bin/perl

my @arr = qw(one two three);

Der Betreiber muss zusammen schreiben

Der Betreiber => besteht aus zwei Zeichen und diese zwei Symbole müssen neben einander. Darf nicht die Lücke zwischen Ihnen. In diesem Fall schreiben wenn = >, dann wird der Fehler. Hier ist ein Beispiel des falschen Codes:

▶ Run
#!/usr/bin/perl

my %h = (
    a = > 1, # error!
);

Wenn Sie diesen Code ausführen, dann erscheint auf dem Bildschirm:

syntax error at script.pl line 4, near "= >"
Execution of script.pl aborted due to compilation errors.

Die offizielle Dokumentation

Hier ist ein Ausschnitt der Ausgabe des Befehls perldoc perlop pro Operator =>:

    The "=>" operator (sometimes pronounced "fat comma") is a synonym for the
    comma except that it causes a word on its left to be interpreted as a
    string if it begins with a letter or underscore and is composed only of
    letters, digits and underscores. This includes operands that might
    otherwise be interpreted as operators, constants, single number v-strings
    or function calls. If in doubt about this behavior, the left operand can
    be quoted explicitly.

    Otherwise, the "=>" operator behaves exactly as the comma operator or list
    argument separator, according to context.

    For example:

        use constant FOO => "something";

        my %h = ( FOO => 23 );

    is equivalent to:

        my %h = ("FOO", 23);

    It is NOT:

        my %h = ("something", 23);

    The "=>" operator is helpful in documenting the correspondence between
    keys and values in hashes, and other paired elements in lists.

        %hash = ( $key => $value );
        login( $username => $password );

    The special quoting behavior ignores precedence, and hence may apply to
    part of the left operand:

        print time.shift => "bbb";

    That example prints something like "1314363215shiftbbb", because the "=>"
    implicitly quotes the "shift" immediately on its left, ignoring the fact
    that "time.shift" is the entire left operand.

Andere Artikel