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
