[Cascavel-pm] Problema com referências

jimmy jimmy.tty em gmail.com
Quinta Agosto 6 10:49:32 PDT 2009


On Thu, Aug 06, 2009 at 02:11:17PM -0300, Giuliani Deon Sanches wrote:
> Supondo a sequite situação:
> 
> my @keys = qw/C1 C2 C3/;
> my @contents = ();
> 
> open my $fh, '<', 'arquivo.csv';
> 
> while (my $line = <$fh>) {
>     my @line_contents = split ';', $line;
>     my @values = grep {defined and $_ ne ''} @line_contents;
>     push @contents, {$keys[$_] => $values[$_]} for (0..$#keys);
> }
> 
> close $fh;
> 
> foreach my $item (@contents) {
>     print $item->{C1};
> }
> 
> o print do laço foreach reclama que não é uma referência a um hash. No
> push acima, o {$keys[$_] => $values[$_]} não seria uma referência a um
> hash anonimo ?
> 
> -- 

não entendi a sua intenção, mas a variável "$item" receberia o hash
anônimo a cada volta e não um elemento de um hash anônimo.

você poderia fazer a "derreferência" nesse caso usando ao invés de:

    print $item->{C1};

isso:

    while ( my ($key, $value) = each(%{$item}) )


sem dúvidas que deve haver forma melhor de antingir os seus objetivos,
se puder/quiser explique um pouco mais o seu problema.


-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------


Mais detalhes sobre a lista de discussão Cascavel-pm