Por cada @ARGV estás abriendo el archivo y leyendolo de nuevo... ¿No crees que es mejor leer primero el archivo y depués hacer el foreach, es decir, no es mejor hacer un foreach en por cada líne?
Mira:
Using perl Syntax Highlighting
open IN, "fichero";
while ($linea = <IN>){
chomp;
my @a_Lineas = split ' ', $linea....
foreach(@ARGV){print "$linea\n" if $s_Nodo eq $_;}
...
}
close IN;
while ($linea = <IN>){
chomp;
my @a_Lineas = split ' ', $linea....
foreach(@ARGV){print "$linea\n" if $s_Nodo eq $_;}
...
}
close IN;
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
Cómo es eso de que llamas a un sub antes de crearlo?
En ese sub (sub licencias) cómo es que puedes usar $a_parametros sindo que ha sido definida para para el uso del foreach anterior (en tu código).
De lo que he entendido esto es lo que quieres hacer:
Using perl Syntax Highlighting
#!/usr/bin/env perl
use strict;
#######################
#Definicion de variables
#######################
my $f_Archivo_de_Entrada = "/export/home/sistemas/nolvera/perl/expresiones/lic.dat";
my $f_Archivo_de_Salida = "/export/home/sistemas/nolvera/perl/expresiones/salida/SHCP";
my $f_Archivo_de_salida2 = "/export/home/sistemas/nolvera/perl/expresiones/salida/BANXICO";
my @a_Nodo = qw (1 2);
my $b_Bandera = 0;
######################
#Abrir archivo
######################
die "ERROR: Necesito de argumentos para operar\n" until @ARGV;
my @a_parametros = @ARGV;
open IN, $f_Archivo_de_Entrada or die "Oops $f_Archivo_de_Entrada: $!\n";
my $parametros = join "|", @a_parametros;
while (my $linea = <IN>){
chomp;
my $s_Nodo = ((split ' ', $linea)[1]);
if($s_Nodo =~ /($parametros)/){print "$linea\n";}
}
close IN;
use strict;
#######################
#Definicion de variables
#######################
my $f_Archivo_de_Entrada = "/export/home/sistemas/nolvera/perl/expresiones/lic.dat";
my $f_Archivo_de_Salida = "/export/home/sistemas/nolvera/perl/expresiones/salida/SHCP";
my $f_Archivo_de_salida2 = "/export/home/sistemas/nolvera/perl/expresiones/salida/BANXICO";
my @a_Nodo = qw (1 2);
my $b_Bandera = 0;
######################
#Abrir archivo
######################
die "ERROR: Necesito de argumentos para operar\n" until @ARGV;
my @a_parametros = @ARGV;
open IN, $f_Archivo_de_Entrada or die "Oops $f_Archivo_de_Entrada: $!\n";
my $parametros = join "|", @a_parametros;
while (my $linea = <IN>){
chomp;
my $s_Nodo = ((split ' ', $linea)[1]);
if($s_Nodo =~ /($parametros)/){print "$linea\n";}
}
close IN;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4