[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