Thread Block vs. Hashref (25 answers)
Opened by barney at 2024-08-02 13:17

haj
 2024-08-02 17:21
#196615 #196615
User since
2015-01-07
551 Artikel
BenutzerIn

user image
Nach map kann entweder ein Code-Block map BLOCK LIST oder Ausdruck map EXPR, LIST folgen. Eine geschweifte Klammer kann beides einleiten, und der Perl-Interpreter muss eine Entscheidung treffen. In t2.pl und t3.pl fällt die Entscheidung zugunsten von Code-Block und alles ist ok. In t1.pl interpretiert Perl die geschweiften Klammer als Hash-Referenz, also als EXPR, und vermisst nun das Komma.

Damit kann man übrigens den Ausdruck auch mit dem gewünschten Ergebnis zum Laufen kriegen, gibt aber keinen Lesbarkeitsbonus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
use strict;
use warnings;

use Data::Dx;

my @ElementList;
push @ElementList,
    map { "$_", 'X' }->%*,
        ( 1, 2 );
Dx( \@ElementList );

View full thread Block vs. Hashref