[bcn-pm] Dubte while (eval)

Toni Homedes i Saun toni a homedes.net
dij jul 30 00:12:20 PDT 2015


Hola JJ,

Para estar seguro lo he vuelto a probar así:

perl -e '$hr = {'A' => 1, 'B' => 2}; print "$a => $b\n" while (($a, $b) 
= each $hr)' | head

y va bien, con lo que confirma que `each` acepta referencias a hash. Lo 
que da la sensación es de que falle cuando en lugar de una variable uses 
un literal: `each {A => ...`

Si no fuera porque no se lo bastante de Perl, parece que fuese un bug de 
Perl en que

     $hr = {..}; while (each $hr)

va bien y

     while (each {...})

va mal.

Toni

El 30/07/15 a les 08:05, JJ Merelo ha escrit:
>
>
> 2015-07-29 14:58 GMT+02:00 Toni Homedes i Saun <toni a homedes.net
> <mailto:toni a homedes.net>>:
>
>     Hola Mongers,
>
>     Fent un molinet amb Perl m'he trobat el següent:
>
>
>     Bé:
>     ---
>
>     perl -e '%h = ('A' => 1, 'B' => 2); print "$a => $b\n" while (($a,
>     $b) = each \%h)' | head
>
>     Malament:
>     ---------
>
>     perl -e 'print "$a => $b\n" while (($a, $b) = each {'A' => 1, 'B' =>
>     2})' | head
>
>
>
>     Perquè? Una referència a un hash no és sempre una referència a un hash?
>
>
> Asi a bote pronto, en el de arriba estás cerrando las comillas simples
> antes de la primera A. En el segundo, hum, también. Pero no creo que sea
> eso: en el segundo estás usando una referencia a hash {}; en el primero
> un hash ()
>
> Saludos
>
> JJ
>
>
>
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pm a pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org
>


Més informació sobre la llista de correu Barcelona-pm