Gibt es eine einfache Syntax, um mehrere Schlüssel mit einem Wert in Perl zu deklarieren?

7

Gibt es eine einfache Möglichkeit, einen Hash mit mehreren Schlüsseln zu deklarieren, die alle auf den gleichen Wert in Perl verweisen?

Hier ist etwas, wonach ich suche (ich weiß nicht, ob das funktioniert oder nicht):

%Vor%

so dass ....

%Vor%     
Dave 15.08.2011, 16:00
quelle

7 Antworten

17

Sie können dies schreiben:

%Vor%     
Robert 15.08.2011, 16:08
quelle
12

Nein, dafür gibt es keine einfache Syntax. (Tatsächlich ist => dokumentiert als ein Alias ​​für , , dessen einziger formaler Effekt darin besteht, dass es auch im strikten Modus ein Bareword links davon erlaubt.)

Das Beste, was Sie tun könnten, ohne Ihre eigenen Subs zu definieren, könnte etwas wie

sein %Vor%     
Henning Makholm 15.08.2011 16:03
quelle
8

Ich mag es, einen Hash-Slice auf der einen Seite und den Listenreplikationsoperator auf der anderen Seite zu verwenden. Ich verwende den Skalarwert des Schlüsselarrays, um herauszufinden, wie viele Werte zu replizieren sind:

%Vor%     
brian d foy 15.08.2011 17:09
quelle
6

Es gibt keine eingebaute Syntax, aber Sie können immer Ihre eigene schreiben:

%Vor%

Wenn Sie dies sehr oft tun, sollten Sie sich Hash::Util s hv_store -Funktion ansehen, mit der Sie mehrere Schlüssel mit genau demselben Speicherort laden können.

    
Eric Strom 15.08.2011 16:11
quelle
4

Sie können die Hash-Slice-Zuweisung verwenden:

%Vor%     
ErikR 15.08.2011 16:07
quelle
2

Die Zuweisung kann auch mit Anweisungen erfolgen, z. B. mit map . Hier wird die Karte in zwei Listen erweitert.

%Vor%     
TLP 15.08.2011 16:25
quelle
1

Ja, wie Henning Makholm darauf hingewiesen hat, gibt es keine direkte Abkürzung, da => ein Alias ​​für , ist. Der kürzeste Zusammenhang, den ich mir vorstellen kann, ist:

%Vor%     
user554546 15.08.2011 16:07
quelle

Tags und Links