<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:courier,monaco,monospace,sans-serif;font-size:10pt"><div style="font-family: courier,monaco,monospace,sans-serif; font-size: 10pt;">la causa es la prioridad de los operadores,<br><br> defined $args{$k}<br> ? push @{ $args{$k} }, $v<br> : $args{$k} = [ $v ];<br><br>equivale a:<br><br> ( defined $args{$k}<br> ? push @{ $args{$k} }, $v<br> : $args{$k} )<br> = [ $v ];<br><br><br>y tu lo que quieres es:<br><br> defined $args{$k}<br>
? push @{ $args{$k} }, $v<br>
: ($args{$k} = [ $v ]);<br>
<br><br>en perlop aparece una tabla con las prioridades de todos los operadores de Perl<br><br>- Salva<br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Original Message ----<br>From: Bruno <brunorc@gmail.com><br>To: Lista de correo de Madrid Perl Mongers <madrid-pm@pm.org><br>Sent: Tuesday, October 30, 2007 1:39:49 PM<br>Subject: [Madrid-pm] Can't modify push in scalar assignment<br><br>
Hola todos<br><br>Quería usar el operator "? :" para ésta operación:<br><br>defined $args{$k}<br> ? push @{ $args{$k} }, $v<br> : $args{$k} = [ $v ];<br><br>pero me sale el error "Can't modify push in scalar assignment".
<br><br>Lo que es interesante, es que la forma:<br><br>if ( defined $args{$k} ) {<br>
push @{ $args{$k} }, $v;<br>}<br>else {<br>
$args{$k} = [ $v ];<br>}<br>
<br>funciona bien, tambien la construcción:<br><br>defined $args{$k} and push @{ $args{$k} }, $v or $args{$k} = [ $v ];<br><br>(sí, es una forma muy rara).<br><br>Algunas ideas?<br><br>Saludos, Bruno<br>
</div><br></div></div><br>__________________________________________________<br>Do You Yahoo!?<br>Tired of spam? Yahoo! Mail has the best spam protection around <br>http://mail.yahoo.com </body></html>