<br><br><div class="gmail_quote">2009/5/28 Luis Motta Campos <span dir="ltr">&lt;<a href="mailto:luismottacampos@yahoo.co.uk">luismottacampos@yahoo.co.uk</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Gente, O Erick Herédia está precisando de uma forcinha... será que vocês<br>
podem ajudar?<br>
<br>
Putamplexos!<br>
<br>
-------- Original Message --------<br>
Subject: duvidas<br>
Date: Thu, 28 May 2009 12:17:01 -0300<br>
From: Erick Herédia &lt;<a href="mailto:andjusticeforall4@msn.com">andjusticeforall4@msn.com</a>&gt;<br>
To: Perl Monks São Paulo &lt;<a href="mailto:saopaulo-pm-owner@pm.org">saopaulo-pm-owner@pm.org</a>&gt;<br>
References: &lt;<a href="mailto:mailman.3103.1243522554.3331.saopaulo-pm@pm.org">mailman.3103.1243522554.3331.saopaulo-pm@pm.org</a>&gt;<br>
<br>
<br>
<br>
Ola, Boa Tarde<br>
</blockquote><div><br>Boa tarde!<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
<br>
eu gostaria de saber se voces podem me dar uma maozinha com um<br>
programinha em perl:<br>
<br>
eu estou iniciando na programação em perl, e gostaria de tirar algumas<br>
duvidas<br>
<br>
eu tenho esse codigo que seria de um programa de busca por uma<br>
respectiva linha em um arquivo dci.<br>
<br>
e eu preciso pesquisar por linha, e nao por palavra chave o conteudo do<br>
edescovery.dci para evitar erros na busca,<br>
<br>
<br>
#!C:/perl/bin/perl.exe<br>
</blockquote><div><br>Se você instalou o active perl para windows, ele provavelmente configurou variáveis de ambiente para você. Nesse caso vc pode começar assim:<br><br>#! perl<br> </div><div><br>Faltou a linha:<br><br>
use strict; # isso livra vc de muitas dores de cabeça como variáveis sem declaração, por exemplo.<br>use warning; # Isso faz perl te avisar q alguma coisa pode dar errado, embora a sintaxe esteja correta. <br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>
#Handle Area - in - outfile<br>
<br>
open FILE, &quot;c:/perl/discoverEdit[1].4796.11.30.5.8.2009&quot; || die &quot;failed<br>
</blockquote><div><br>Esse jeito de usar a função open não é recomendada. Recomendo que vc use a função open de 3 parâmetros. <br>&lt;code&gt;<br><br>my $handle = undef;<br>my $filename = &#39;c:/perl/discoverEdit[1].4796.11.30.5.8.2009&#39; ;<br>
open $fh,&#39;&lt;&#39;,$filename or die &quot;\nErro ao abrir o arquivo $filename - $!&quot;; <br><br>&lt;/code&gt;<br><br># o sinal de &#39;&lt;&#39; significa q o arquivo sera aberto so para leitura.<br>#repare também que eu usei &#39;or&#39; ao invés de &#39;||&#39;. Fica mais legível assim, e é recomendável segundo as boas práticas de programação em Perl.<br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
@read=&lt;FILE&gt;;<br>
</blockquote><div><br>Só implemente essa linha acima, se o seu arquivo for realmente muito pequeno. Caso contrário você pode fazer:<br><br>&lt;code&gt;<br><br>#$fh é o filehandle que eu sugeri mais acima...<br>my $line = &#39;&#39;;<br>
my $lnumber = 0;#contador de linhas.<br>while(&lt;$fh&gt;) {<br>     $line = $_; $_ <br>     if($line =~ m{$keyword}){<br>          print &quot;\nACHEI! - $lnumber&quot;;<br>     }<br>     $lnumber++;<br>}<br><br>&lt;/code&gt;<br>
<br>Esse while pode ficar mais legível assim:<br><br>&lt;code&gt;<br>.<br>.<br>.<br>$lnumber = 0;<br>while($line = readline($fh)){<br>   if($line =~ m{$keyword}){<br>      print &quot;\nACHEI! - $lnumber&quot;;<br>   }<br>
   $lnumber++;<br>}<br>.<br>.<br>.<br>&lt;/code&gt;<br> <br>#readline é uma função do &#39;core&#39; do Perl. Para saber mais sobre ela, leia a documentação. Digite na linha de comando: perldoc -f readline<br>#Porque esse while é mais interessante do que guardar o conteúdo todo num array? Economia de memória. Nesse while, o arquivo é lido carregando na memória linha por linha, enquanto que com o esquema do array, vc trabalha com o arquivo todo na memória.<br>
<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">close FILE;<br>
open(OUTFILE, &quot;&gt; c:/perl/report.dci&quot;) or die &quot;Can&#39;t open output file&quot;;<br>
</blockquote><div><br>Se vc não usou parênteses lá em cima, pq usou agora? Não entendi. De qualquer forma, procure usar o open de três parâmetros.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
chomp @read;<br>
<br>
<br>
<br>
#searching area<br>
<br>
<br>
       print &quot;digite uma linha\n&quot;;<br>
              $choose=&lt;STDIN&gt;; chomp $choose;<br>
 </blockquote><div><br>#O que você quer fazer com $choose ?????? Não aparece no código mais abaixo...rsrs! <br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
              my @greplines = grep(/@lines/,@read);<br>
 </blockquote><div><br><br>Quem é @lines???? De onde ele vem?<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">      print &quot;Não encontrado!!&quot;  unless(@greplines);<br>

         foreach $line (@greplines) {<br>
   print OUTFILE @lines.&quot;\n&quot;;<br>
  while (&lt;FILE&gt;) {<br>
  sub commify {<br>
<br>
}<br>
}<br>
</blockquote><div><br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
<br>
<br>
Boa Tarde<br>
<br>
<br>
<br>
<br>
_________________________________________________________________<br>
More than messages–check out the rest of the Windows Live™.<br>
<a href="http://www.microsoft.com/windows/windowslive/" target="_blank">http://www.microsoft.com/windows/windowslive/</a><br>
<font color="#888888"><br>
--<br>
Luis Motta Campos is a software engineer,<br>
Perl Programmer, foodie and photographer.<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>André Garcia Carneiro<br>Analista/Desenvolvedor Perl<br><br>