[Madrid-pm] Can't modify push in scalar assignment
Salvador Fandiño
sfandino en yahoo.com
Mar Oct 30 05:46:06 PDT 2007
la causa es la prioridad de los operadores,
defined $args{$k}
? push @{ $args{$k} }, $v
: $args{$k} = [ $v ];
equivale a:
( defined $args{$k}
? push @{ $args{$k} }, $v
: $args{$k} )
= [ $v ];
y tu lo que quieres es:
defined $args{$k}
? push @{ $args{$k} }, $v
: ($args{$k} = [ $v ]);
en perlop aparece una tabla con las prioridades de todos los operadores de Perl
- Salva
----- Original Message ----
From: Bruno <brunorc en gmail.com>
To: Lista de correo de Madrid Perl Mongers <madrid-pm en pm.org>
Sent: Tuesday, October 30, 2007 1:39:49 PM
Subject: [Madrid-pm] Can't modify push in scalar assignment
Hola todos
Quería usar el operator "? :" para ésta operación:
defined $args{$k}
? push @{ $args{$k} }, $v
: $args{$k} = [ $v ];
pero me sale el error "Can't modify push in scalar assignment".
Lo que es interesante, es que la forma:
if ( defined $args{$k} ) {
push @{ $args{$k} }, $v;
}
else {
$args{$k} = [ $v ];
}
funciona bien, tambien la construcción:
defined $args{$k} and push @{ $args{$k} }, $v or $args{$k} = [ $v ];
(sí, es una forma muy rara).
Algunas ideas?
Saludos, Bruno
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://mail.pm.org/pipermail/madrid-pm/attachments/20071030/c92f950d/attachment.html
Más información sobre la lista de distribución Madrid-pm