Bom dia Juliana,

Na linha,

print $vetor->[0], "=", $vetor->[1], "\n";

Você está acessando um elemento de um vetor *unidimensional*, mas o
seu "vetor" é *bidimensional*.

Mas antes de responder isso, você está usando open com 2 argumentos.
Isso é inseguro e pode causar muita dor de cabeça. Considere utilizar
o open com 3 argumentos, bem como use strict e use warnings

perldoc -f open

Agora voltando à programação normal, (bom o trocadilho hein!), tente:

print $vetor->[0]->[0], "=", $vetor->[0]->[1], "\n";

Para ver a cara da sua estrutura de dados, considere também:

use Data::Dumper;
...
print Dumper($data);

Abraços

2010/12/7 Renato Santos <[email protected]>
>
> Amigo,
> em perl, seria bem mais interessante você utilizar um HASH (ou como eu sou 
> viciado, HASHREF)
>
> Hash é uma lista, mas no lugar de indexs, você tem strings.
> Por exemplo:
> $foo = {
>    eu_sou_uma_chave => 'eu_sou_o_valor'
> };
> Então, voce pode utilizar-se do push de uma array, monta assim, uma array de 
> hash:
> open(my $frases, "set.txt") or die "Nao foi possivel abrir o arquivo: $!";
>
> my @vetor = ();
> my $pontuacao=0;
>
>
> while (my $linha = <$frases>) {
>   chomp($linha); # tira o fim de linha
>   push(@vetor, {
>     linha => $linha,
>     num_linha => $.,
>     pontuacao => $pontuacao
>   }); # se vc nao passar linha, vai pro $_
> }
>
> # aqui talvez tenha um codigo que vai mudar a pontuacao, correto? pois a 
> pontuacao de todos esta zerada!
>
> # e aqui mostra na tela
> for my $item (@vetor){
>      print "$item->{num_linha}: $item->{linha} - $item->{pontuacao}\n";
> }
> ----------------------------
> Minhas considerações:
> você não deve sempre ler um arquivo e jogar numa array,
> se for fazer isso, você acaba jogando todo o arquivo na memoria, e
> se o arquivo tiver uns 100~  300 mb isso não é muito legal!
>
> 2010/12/7 Juliana <[email protected]>
>>
>> Olá amigos da lista,
>>
>> Estou com dificuldade em implementar um código utilizando um vetor com 2 
>> dimensões.
>>
>> Poderiam me dar uma dica de onde está o erro?
>> O código segue abaixo:
>>
>>
>> #abre arquivo de frases, uma frase por linha: frase1: xxxx; frase2: yyyyyy; 
>> frase3: zzzzz
>> open(my $frases, "set.txt") or die "Nao foi possivel abrir o arquivo: $!";
>>
>>
>> my @vetor=$frases;
>> my $pontuacao=0;
>> my $i=0;
>>
>> #insiro a frase a pontuacao em um vetor de duas dimensoes: posicao frase e 
>> posicao pontuacao
>> while (<$frases>) {
>> $vetor[$i] = [$frases, $pontuacao];
>> $i++;
>> }
>>
>> #imprimir todas as frases seguido de sua pontuacao : print $vetor->[$i], 
>> "=", $vetor->[$i], "\n"; ????
>> for my $vetor (@vetor){
>> print $vetor->[0], "=", $vetor->[1], "\n";
>>
>> }
>>
>> Aguardo contato.
>>
>> Obrigada!
>>
>> Abraços
>> Juliana
>>
>>
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> [email protected]
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
>
> --
> Renato Santos
> http://www.renatocron.com/blog/
>
> _______________________________________________
> SaoPaulo-pm mailing list
> [email protected]
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
_______________________________________________
SaoPaulo-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/saopaulo-pm

Responder a