[SP-pm] [Fwd: duvidas]
Andre Carneiro
andregarciacarneiro at gmail.com
Thu May 28 12:49:28 PDT 2009
2009/5/28 Luis Motta Campos <luismottacampos at yahoo.co.uk>
> Gente, O Erick Herédia está precisando de uma forcinha... será que vocês
> podem ajudar?
>
> Putamplexos!
>
> -------- Original Message --------
> Subject: duvidas
> Date: Thu, 28 May 2009 12:17:01 -0300
> From: Erick Herédia <andjusticeforall4 at msn.com>
> To: Perl Monks São Paulo <saopaulo-pm-owner at pm.org>
> References: <mailman.3103.1243522554.3331.saopaulo-pm at pm.org>
>
>
>
> Ola, Boa Tarde
>
Boa tarde!
>
>
>
> eu gostaria de saber se voces podem me dar uma maozinha com um
> programinha em perl:
>
> eu estou iniciando na programação em perl, e gostaria de tirar algumas
> duvidas
>
> eu tenho esse codigo que seria de um programa de busca por uma
> respectiva linha em um arquivo dci.
>
> e eu preciso pesquisar por linha, e nao por palavra chave o conteudo do
> edescovery.dci para evitar erros na busca,
>
>
> #!C:/perl/bin/perl.exe
>
Se você instalou o active perl para windows, ele provavelmente configurou
variáveis de ambiente para você. Nesse caso vc pode começar assim:
#! perl
Faltou a linha:
use strict; # isso livra vc de muitas dores de cabeça como variáveis sem
declaração, por exemplo.
use warning; # Isso faz perl te avisar q alguma coisa pode dar errado,
embora a sintaxe esteja correta.
>
> #Handle Area - in - outfile
>
> open FILE, "c:/perl/discoverEdit[1].4796.11.30.5.8.2009" || die "failed
>
Esse jeito de usar a função open não é recomendada. Recomendo que vc use a
função open de 3 parâmetros.
<code>
my $handle = undef;
my $filename = 'c:/perl/discoverEdit[1].4796.11.30.5.8.2009' ;
open $fh,'<',$filename or die "\nErro ao abrir o arquivo $filename - $!";
</code>
# o sinal de '<' significa q o arquivo sera aberto so para leitura.
#repare também que eu usei 'or' ao invés de '||'. Fica mais legível assim, e
é recomendável segundo as boas práticas de programação em Perl.
> @read=<FILE>;
>
Só implemente essa linha acima, se o seu arquivo for realmente muito
pequeno. Caso contrário você pode fazer:
<code>
#$fh é o filehandle que eu sugeri mais acima...
my $line = '';
my $lnumber = 0;#contador de linhas.
while(<$fh>) {
$line = $_; $_
if($line =~ m{$keyword}){
print "\nACHEI! - $lnumber";
}
$lnumber++;
}
</code>
Esse while pode ficar mais legível assim:
<code>
.
.
.
$lnumber = 0;
while($line = readline($fh)){
if($line =~ m{$keyword}){
print "\nACHEI! - $lnumber";
}
$lnumber++;
}
.
.
.
</code>
#readline é uma função do 'core' do Perl. Para saber mais sobre ela, leia a
documentação. Digite na linha de comando: perldoc -f readline
#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.
> close FILE;
> open(OUTFILE, "> c:/perl/report.dci") or die "Can't open output file";
>
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.
>
> chomp @read;
>
>
>
> #searching area
>
>
> print "digite uma linha\n";
> $choose=<STDIN>; chomp $choose;
>
#O que você quer fazer com $choose ?????? Não aparece no código mais
abaixo...rsrs!
my @greplines = grep(/@lines/, at read);
>
Quem é @lines???? De onde ele vem?
> print "Não encontrado!!" unless(@greplines);
> foreach $line (@greplines) {
> print OUTFILE @lines."\n";
> while (<FILE>) {
> sub commify {
>
> }
> }
>
>
>
>
>
> Boa Tarde
>
>
>
>
> _________________________________________________________________
> More than messages–check out the rest of the Windows Live™.
> http://www.microsoft.com/windows/windowslive/
>
> --
> Luis Motta Campos is a software engineer,
> Perl Programmer, foodie and photographer.
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
--
André Garcia Carneiro
Analista/Desenvolvedor Perl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090528/3e001e72/attachment.html>
More information about the SaoPaulo-pm
mailing list