<div>Luis, compilei seu programa e me retorna alguns erros. Fiz algumas alterações que voce havia esquecido de colocar no programa.<br><br>Os erros são:<br>cc404212336@linuxlcc0204:~/arquivos/TrabPratLP$ perl erPerlL.pl diego texto.txt<br>Use of uninitialized value in scalar chomp at erPerlL.pl line 33, &lt;FILE&gt; line 1.<br>Use of uninitialized value in pattern match (m//) at erPerlL.pl line 34, &lt;FILE&gt; line 1.<br>Use of uninitialized value in scalar chomp at erPerlL.pl line 33, &lt;FILE&gt; line 2.<br>Use of uninitialized value in pattern match (m//) at erPerlL.pl line 34, &lt;FILE&gt; line 2.<br>Use of uninitialized value in scalar chomp at erPerlL.pl line 33, &lt;FILE&gt; line 3.<br>Use of uninitialized value in pattern match (m//) at erPerlL.pl line 34, &lt;FILE&gt; line 3.<br>Use of uninitialized value in scalar chomp at erPerlL.pl line 33, &lt;FILE&gt; line 4.<br>Use of uninitialized value in pattern match (m//) at erPerlL.pl line 34, &lt;FILE&gt; line 4.<br>Use of uninitialized value in scalar chomp at erPerlL.pl line 33, &lt;FILE&gt; line 5.<br>Use of uninitialized value in pattern match (m//) at erPerlL.pl line 34, &lt;FILE&gt; line 5.<br>Use of uninitialized value in scalar chomp at erPerlL.pl line 33, &lt;FILE&gt; line 6.<br>Use of uninitialized value in pattern match (m//) at erPerlL.pl line 34, &lt;FILE&gt; line 6.<br>Use of uninitialized value in concatenation (.) or string at erPerlL.pl line 40.<br>Encontradas&nbsp; ocorrências da palavra 'diego' no arquivo 'texto.txt'.<br><br>Segue o novo codigo:<br><br>#!/usr/local/bin/perl&nbsp; # Emacs, this is -*- perl -*-<br>use strict;<br>use warnings;<br><br>##############################<br># Expressões Regulares em Perl<br># Busca exata<br>##############################<br><br>#### Argumentos vêem sempre em @ARGV.<br>#### ARRAYS INICIAM COM ZERO: $ARGV[0] é o primeiro elemento.<br><br>&nbsp; # Isto testa para saber se $ARGV[0] (primeiro argumento) é uma palavra<br>&nbsp; # com apenas letras maiúsculas e minúsculas.<br>&nbsp; if( $ARGV[0] !~ m{[a-zA-Z]} ){<br>&nbsp;&nbsp;&nbsp; print qq{Programa de busca de palavras exata em Perl com expressões regulares\nUso: $0 \n\n};<br>&nbsp;&nbsp;&nbsp; die "Palavra para busca pode conter apenas letras maiúsculas e minúsculas\n";<br>&nbsp; }<br><br>&nbsp; # Sanidade mental: arquivo existe?<br>&nbsp; die "Erro: arquivo para busca não encontrado.\n" unless -f $ARGV[1];<br><br>&nbsp; # Chegar aqui quer dizer que o arquivo existe. Abre e olha dentro.<br>&nbsp; open (FILE, $ARGV[1]) or die "Erro abrindo arquivo: $!\n";<br><br>&nbsp; # Contadores: de linha, de ocorrências<br>&nbsp; my ( $line_counter, $instance_counter );<br><br>&nbsp; # Loop de busca da palavra.<br>&nbsp; my $linha;<br>&nbsp; while( $linha = &lt;FILE&gt; ){ //eu adicionei isso<br>&nbsp;&nbsp;&nbsp; $line_counter++;<br>&nbsp;&nbsp;&nbsp; chomp; # Chomp remove um caracter "\n" no final da linha, se houver.<br>&nbsp;&nbsp;&nbsp; if( m{\b\Q$ARGV[0]\E\b} ){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $instance_counter++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "$line_counter: $_\n";<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp; }<br>&nbsp; close FILE or die "Erro fechando arquivo: $!\n";<br>&nbsp; print "Encontradas $instance_counter ocorrências da palavra '$ARGV[0]' no arquivo '$ARGV[1]'.\n";<br><br><div><br><br><br>.============================================.<br>  Diego Mendes Teixeira   -  <a href="mailto:diegom@lcc.ufmg.br">diegom@lcc.ufmg.br</a>             <br>  Desenvolvimento de Sistemas  -  LCC/CENAPAD<br>  Universidade Federal de Minas Gerais - UFMG   <br>  Cel: +55(31)8842-9951 - Tel(trab): +55(31)34994910       <br>'============================================'<br><div><br></div><font color="#990099">-----cascavel-pm-bounces+diegom=lcc.ufmg.br@pm.org escreveu: -----<br><br></font><blockquote style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">Para: Cascavel Perl Mongers &lt;cascavel-pm@pm.org&gt;<br>De: Luis Motta Campos &lt;luismottacampos@yahoo.co.uk&gt;<br>Enviado por: cascavel-pm-bounces+diegom=lcc.ufmg.br@pm.org<br>Data: 25/10/2006 13:56<br>Assunto: Re: [Cascavel-pm] Manipulação de arquivo<br><br><font face="monospace" size="3">Diego Mendes Teixeira wrote:<br>&gt; Ok, quero muito sua ajuda... Te chamei de "CARINHA" porque foi assim que<br>&gt; você se referiu a mim no primeiro email. Vou postar o codigo dos 2<br>&gt; programas que fiz. O primeiro, usando expressao regular esta<br>&gt; funcionando, o outro usando armazenamento dinamico em heap está<br>&gt; imprimindo todas as linhas do arquivo, mesmo nao achando a palavra<br>&gt; pesquisada. Estou na correria pra fazer esse trabalho, visto que tenho<br>&gt; que entregar quinta-feira agora.<br><br> &nbsp;Vamos ver. Parece que você tem problemas com a sua busca exata em Perl<br>baseada em expressões regulares. Aqui tem a minha implementação. Eu<br>estou tentando ser didático, então isto está muito grande ainda para o<br>meu gosto, mas paciência.<br><br> &nbsp;Eu vou escrever mais, te mando em seguida.<br><br>#!perl &nbsp;# Emacs, this is -*- perl -*-<br>use strict;<br>use warnings;<br><br>##############################<br># Expressões Regulares em Perl<br># Busca exata<br>##############################<br><br>### Argumentos vêem sempre em @ARGV.<br>### ARRAYS INICIAM COM ZERO: $ARGV[0] é o primeiro elemento.<br><br># Isto testa para saber se $ARGV[0] (primeiro argumento) é uma palavra<br># com apenas letras maiúsculas e minúsculas.<br>if( $ARGV[0] !~ m{[a-zA-Z]} ){<br> &nbsp;print qq{Programa de busca de palavras exata em Perl com expressões<br>regulares\nUso: $0 <palavra> <nome_arquivo>\n\n};<br> &nbsp;die "Palavra para busca pode conter apenas letras maiúsculas e<br>minúsculas\n";<br>}<br><br># Sanidade mental: arquivo existe?<br>die "Erro: arquivo para busca não encontrado.\n" unless -f $ARGV[1];<br><br># Chegar aqui quer dizer que o arquivo existe. Abre e olha dentro.<br>open FILE, $ARGV[1] or die "Erro abrindo arquivo: $!\n";<br># Contadores: de linha, de ocorrências<br>my ( $line_counter, $instance_counter );<br># Loop de busca da palavra.<br>while( <FILE> ){<br> &nbsp;$line_counter++;<br> &nbsp;# Chomp remove um caracter "\n" no final da linha, se houver.<br> &nbsp;chomp;<br> &nbsp;if( m{\b\Q$ARGV[0]\E\b} ){<br> &nbsp; &nbsp;$instance_counter++;<br> &nbsp; &nbsp;print "$line_counter: $_\n";<br> &nbsp;}<br>}<br>close FILE or die "Erro fechando arquivo: $!\n";<br>print "Encontradas $instance_counter ocorrências da palavra '$ARGV[0]'<br>no arquivo '$ARGV[1]'.\n";<br>__END__<br><br>-- <br>Luis Motta Campos<br>Senior System Engineer at Segula.FR<br>Hobbyist Cooker and Photograph<br>_______________________________________________<br>Cascavel-pm mailing list<br>Cascavel-pm@pm.org<br></FILE></nome_arquivo></palavra><a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></font></blockquote><br></div></div>