[Cascavel-pm] Problema com referências

Giuliani Deon Sanches giulianisanches em gmail.com
Quinta Agosto 6 10:55:54 PDT 2009


2009/8/6 jimmy <jimmy.tty em gmail.com>:
> 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."
> ------------------------------
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>

Estou fazendo um parser de um arquivo csv.
Percorro o arquivo e para determinadas linhas dou um split pelo ';' e
removo os elementos em branco.
Depois, com as chaves declaradas no inicio e os valores mapeados,
monto um hash e passo para dentro de um array para no futuro gerar um
relatório disso em txt mais bonito, e ordenado de acordo com a vontade
do freguês além de obter algumas estatísticas dele.

Bom, esse é o objetivo. Ainda falta algumas coisinhas.. :)

[]'s
-- 
twitter.com/giulianisanches
giulianisanches.blogspot.com


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