<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">El 30/07/15 a las 09:12, Toni Homedes i
      Saun escribió:<br>
    </div>
    <blockquote cite="mid:55B9CE54.7060206@homedes.net" type="cite">Hola
      JJ,
      <br>
      <br>
      Para estar seguro lo he vuelto a probar así:
      <br>
      <br>
      perl -e '$hr = {'A' => 1, 'B' => 2}; print "$a => $b\n"
      while (($a, $b) = each $hr)' | head
      <br>
      <br>
      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 => ...`
      <br>
      <br>
      Si no fuera porque no se lo bastante de Perl, parece que fuese un
      bug de Perl en que
      <br>
      <br>
          $hr = {..}; while (each $hr)
      <br>
      <br>
      va bien y
      <br>
      <br>
          while (each {...})
      <br>
      <br>
      va mal.
      <br>
      <br>
      Toni
      <br>
    </blockquote>
    <br>
    El poder usar referencias -no bendecidas- a hash o array en each()
    (y otras funciones), es a partir de Perl v5.14.<br>
    <br>
    Es interesante lo que indicas, Toni. Si repetimos el experimento con
    arrays, falla de la misma manera:<br>
    <br>
    <tt>$ perl -E 'use experimental "autoderef"; say "$a => $b" while
      ($a, $b) = each [ 2, 4, 6 ];' |head<br>
      0 => 2<br>
      0 => 2<br>
      0 => 2<br>
      0 => 2<br>
      0 => 2<br>
      0 => 2<br>
      0 => 2<br>
      0 => 2<br>
      0 => 2<br>
      0 => 2<br>
      (bucle infinito)<br>
      <br>
    </tt>Esto huele a bug... Falla incluso en la última versión estable,
    en la v5.22. Lo he probado también en v5.10, v5.18... y también
    fallan.<br>
    <br>
    Según la documentación, en <b>perldoc -f each</b>,<br>
    <br>
    «Después de que "each" devuelva todas las entradas del hash o del
    array, la siguiente llamada a "each" devuelve la lista vacía en
    contexto de lista, y "undef" en contexto escalar; la <u>siguiente
      llamada a </u><u>esta</u>, reinicia la iteración».<br>
    <br>
    El problema podría venir de ahí.<br>
    <br>
    <blockquote cite="mid:55B9CE54.7060206@homedes.net" type="cite">
      <br>
      El 30/07/15 a les 08:05, JJ Merelo ha escrit:
      <br>
      <blockquote type="cite">
        <br>
        <br>
        2015-07-29 14:58 GMT+02:00 Toni Homedes i Saun
        <<a class="moz-txt-link-abbreviated" href="mailto:toni@homedes.net">toni@homedes.net</a>
        <br>
        <a class="moz-txt-link-rfc2396E" href="mailto:toni@homedes.net"><mailto:toni@homedes.net></a>>:
        <br>
        <br>
            Hola Mongers,
        <br>
        <br>
            Fent un molinet amb Perl m'he trobat el següent:
        <br>
        <br>
        <br>
            Bé:
        <br>
            ---
        <br>
        <br>
            perl -e '%h = ('A' => 1, 'B' => 2); print "$a =>
        $b\n" while (($a,
        <br>
            $b) = each \%h)' | head
        <br>
        <br>
            Malament:
        <br>
            ---------
        <br>
        <br>
            perl -e 'print "$a => $b\n" while (($a, $b) = each {'A'
        => 1, 'B' =>
        <br>
            2})' | head
        <br>
        <br>
        <br>
        <br>
            Perquè? Una referència a un hash no és sempre una referència
        a un hash?
        <br>
        <br>
        <br>
        Asi a bote pronto, en el de arriba estás cerrando las comillas
        simples
        <br>
        antes de la primera A. En el segundo, hum, también. Pero no creo
        que sea
        <br>
        eso: en el segundo estás usando una referencia a hash {}; en el
        primero
        <br>
        un hash ()
        <br>
        <br>
        Saludos
        <br>
        <br>
        JJ
        <br>
        <br>
        <br>
        <br>
        _______________________________________________
        <br>
        llista dels Barcelona-pm
        <br>
        <a class="moz-txt-link-abbreviated" href="mailto:Barcelona-pm@pm.org">Barcelona-pm@pm.org</a>
        <br>
        <a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/barcelona-pm">http://mail.pm.org/mailman/listinfo/barcelona-pm</a>
        <br>
        BCN Perl Mongers: <a class="moz-txt-link-freetext" href="http://barcelona.pm.org">http://barcelona.pm.org</a>
        <br>
        <br>
      </blockquote>
      _______________________________________________
      <br>
      llista dels Barcelona-pm
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:Barcelona-pm@pm.org">Barcelona-pm@pm.org</a>
      <br>
      <a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/barcelona-pm">http://mail.pm.org/mailman/listinfo/barcelona-pm</a>
      <br>
      BCN Perl Mongers: <a class="moz-txt-link-freetext" href="http://barcelona.pm.org">http://barcelona.pm.org</a><br>
    </blockquote>
    <br>
  </body>
</html>