[bcn-pm] Dubte while (eval)

salvador fandino sfandino a gmail.com
dij jul 30 00:49:51 PDT 2015


En el primer caso tu codigo crea una referencia a un hash y lo almacena en
una variable que luego usa para referenciarlo.

En el segundo caso, tu codigo crea un hash distinto en cada iteración.

Ten en cuenta que las llaves son constructores de hashes. Cada vez que el
control del programa pasa por ellas se crea un hash nuevo.

2015-07-30 9:44 GMT+02:00 JJ Merelo <jjmerelo en gmail.com>:

> Hola,
>
> El 30 de julio de 2015, 9:12, Toni Homedes i Saun <toni en homedes.net>
> escribió:
>
>> 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.
>
>
> ¿Qué versión de Perl estás usando? Si mal no recuerdo (de la charla sobre
> 5.22 en el Fosdem) ese uso era todavía experimental en las anteriores a
> esa. Por eso puede ser que se comporte de forma diferente en una referencia
> que en un literal.
>
> Saludos
>
> JJ
>
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pm en pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org
>
------------ pr�a parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.pm.org/pipermail/barcelona-pm/attachments/20150730/f5efd06a/attachment-0001.html>


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