<div dir="ltr">Acontece isso pois o $p é a referencia para o mesmo "$p".<div><br></div><div>você poderia fazer um clone simples no primeiro nivel (apenas de coisas que não são outras referencias) usando:</div><div><br></div><div>my $copy = {%$p};</div><div><span style="font-family:arial,sans-serif;font-size:13px">$copy->{'cor'} = $c; </span><br></div><div><span style="font-family:arial,sans-serif;font-size:13px">push @b, </span><span style="font-family:arial,sans-serif;font-size:13px">$copy</span><span style="font-family:arial,sans-serif;font-size:13px">; </span><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">ou até mesmo, mais simples:</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-size:13px;font-family:arial,sans-serif">push @b, {</span></div><div><span style="font-size:13px;font-family:arial,sans-serif">   %$p,</span></div><div><span style="font-size:13px;font-family:arial,sans-serif">   cor => $c,</span></div><div><font face="arial, sans-serif">   overwrite => $bar</font></div><div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div><div><span style="font-size:13px;font-family:arial,sans-serif">}</span><span style="font-size:13px;font-family:arial,sans-serif"> </span><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-09-30 11:04 GMT-03:00 Andre Carneiro <span dir="ltr"><<a href="mailto:andregarciacarneiro@gmail.com" target="_blank">andregarciacarneiro@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Salve monges<br><br></div>Desculpem incomodar vocês com essa dúvida básica, mas não estou encontrando a idiotice que estou fazendo, e isso já está me consumindo algum tempo. Abaixo, um código resumido que reproduz o problema:<br><br><br></div><code><br><div><br>use Data::Printer; <br>my @a = ('amarelo','branco','vermelho'); <br>my $p = {id=>1,nome=>"foo"};<br>my @b = (); <br>foreach my $c(@a){<br>  $p->{'cor'} = $c; <br>  push @b,$p; <br>} <br>print p @b;<br></div><div><br></code><br><br></div><div>Resultado:<br></div><div>[<br>    [0] {<br>        cor    "vermelho",<br>        id     1,<br>        nome   "foo"<br>    },<br>    [1] var[0],<br>    [2] var[0]<br>]<br><br></div><div>Resultado esperado:<br></div><div>[<br>    [0] {<br>        cor    "vermelho",<br>        id     1,<br>        nome   "foo"<br>    },<br>    [1] {<br>        cor    "amarelo",<br>        id     1,<br>        nome   "foo"<br>    },<br>    [2] {<br>        cor    "preto",<br>        id     1,<br>        nome   "foo"<br>    }<br>]<br><div><div><br><br></div><div>A pergunta é simples. Porque não consigo o resultado esperado? <br><br><br></div><div>Obrigado!<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div><br>-- <br>André Garcia Carneiro<br>Software Engineer<br><a href="tel:%2811%29982907780" value="+5511982907780" target="_blank">(11)982907780</a>
</div></font></span></div></div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div><div><div style="text-align:right"><font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>
</div>