The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
falta de compreensão> erro chato jzacsh Programação Shell Script e 21 4 semanas atrás 04:10
erro na saída do script perl namishtiwari Programação Shell Script e 2 06-15-2009 05:02
Erro no script Perl ftptail Cooki3s! UNIX para Dummies Perguntas & Respostas 2 05-04-2009 11:46
Facilitar a compreensão da sintaxe erro Emissão warlock129 Programação Shell Script e 6 04-26-2009 07:02
Perl erro pietie Programação Shell Script e 4 10-15-2008 09:05

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-03-2009
Ex-Capsa's Avatar
Ex-Capsa Ex-Capsa is offline VIP Member  
Membro VIP
  
 

Join Date: Mar 2009
Local: Canadá / Quebec / Montreal
Lugares: 29
Precisa de ajuda para compreender script perl erro

Eu solicited este site no início desta semana e tenho uma boa resposta para uma perl
Script de modo que fiz este script a partir do que entendida a partir das respostas
Mas agora eu tenho um problema e eu toco. Ela não analisar corretamente o
Saída permanece na primeira linha My $ f2 e reimpressões em um loop infinito
Eu tenho certeza que há melhores formas do que isso. Mas isto é o que eu quero resolver
Dan

Este é o script

Código:
 
#!/usr/local/bin/perl -w
use strict;
 
die "Usage: $0 <file1> <file2> <file_out>\n" unless $#ARGV==2;
my ($file1, $file2, $file3) = @ARGV;
 
open my $f1_in, $file1 or die "Could not open $file1\n";
open my $f2_in, $file2 or die "Could not open $file2\n";
open(my $f3_out, '>', $file3) or die "Could not open $file3: $!\n";
 
while (my $f1 = <$f1_in>) {
my $f2 = <$f2_in>;
$f1 =~ s/^\s+|\s+$//g;
$f2 =~ s/^\s+|\s+$//g;
 
#$\ = "\n";
my $FS = '|';
$, = ',';
 
my $Fld0 = shift;
my $Fld1 = shift;
my $Fld2 = shift;
my $Fld3 = shift;
my $Fld4 = shift;
my $Fld5 = shift;
my $Fld6 = shift;
my $Fld7 = shift;
my $Fld8 = shift;
my $Fld9 = shift;
my $Fld10 = shift;
 
while ($f2){
($Fld0,$Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10) = split(/[|\n]/,$f2, -1);
print $f3_out ($Fld0, $Fld1, $Fld2, $Fld3, $Fld4, $Fld10);
}
}

Última edição por vidyadhar85; em 07/03/2009 05:46.. Motivo: Código acrescentado tags
  #2 (permalink)  
Old 07-04-2009
KevinADC KevinADC is offline Forum Advisor  
Usuário
  
 

Join Date: Jan 2008
Lugares: 731
Não tenho certeza que todos aqueles "shift" linhas estão aí para, mas o loop problema é aqui:
Código:
while ($f2){
($Fld0,$Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10) = split(/[|\n]/,$f2, -1);
print $f3_out ($Fld0, $Fld1, $Fld2, $Fld3, $Fld4, $Fld10);
}
}
Você precisará remover o loop "while":

Código:
($Fld0,$Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10) = split(/[|\n]/,$f2, -1);
print $f3_out ($Fld0, $Fld1, $Fld2, $Fld3, $Fld4, $Fld10);

}

Não sei se isso irá tornar o seu código fazer algo útil, mas esperemos que será executado e você ainda pode modificar conforme necessário.
  #3 (permalink)  
Old 07-05-2009
Ex-Capsa's Avatar
Ex-Capsa Ex-Capsa is offline VIP Member  
Membro VIP
  
 

Join Date: Mar 2009
Local: Canadá / Quebec / Montreal
Lugares: 29
Obrigado pela resposta

Quero mesmo a loop, mas não indefinidamente na primeira linha do ficheiro2.
Ficheiro2 tem 24.000 registros divididos em 10 campos, devo dizer que tenho que trabalhar
Agora, mas eu estou usando 2 scripts para fazer um extracto dos registos a
Outros jogos deles. O que estou tentando fazer é combiná-los
Em um

THK
  #4 (permalink)  
Old 07-05-2009
KevinADC KevinADC is offline Forum Advisor  
Usuário
  
 

Join Date: Jan 2008
Lugares: 731
Se você não quer que ele loop infinitamente, em seguida, remova o 'enquanto' loop eu mostrei-lhe remover.

Postagem atualizada em ---------- ---------- anterior 02:25 update estava em 02:15 ----------

Talvez isto seja w2hat você deseja fazer:

Código:
#!/usr/local/bin/perl
use warnings;
use strict;
 
die "Usage: $0 <file1> <file2> <file_out>\n" unless $#ARGV==2;
my ($file1, $file2, $file3) = @ARGV;
 
open my $f1_in, $file1 or die "Could not open $file1\n";
open my $f2_in, $file2 or die "Could not open $file2\n";
open(my $f3_out, '>', $file3) or die "Could not open $file3: $!\n";
 
while (my $f1 = <$f1_in>) {
   my $f2 = <$f2_in>;
   $f1 =~ s/^\s+|\s+$//g;
   $f2 =~ s/^\s+|\s+$//g;
 
   my($Fld0,$Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10) = split(/\|/,$f2, -1);
   print $f3_out join(',',$Fld0, $Fld1, $Fld2, $Fld3, $Fld4, $Fld10);
}
Reply

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 07:50.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0