Bueno, empecemos....Empecemos iniciando el script y entrando los datos...
Código:
#!/usr/bin/perl
#Flujo del script
my %input_data = &input_data();
#Funciones del script
sub input_data {
my (@pairs,$buffer,$pair,$name,$value,%input_data);
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
}elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
}else {
&error('leer','datos');
}
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ tr/\0//d;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/\0//d;
$value =~ s/\n//g;
$input_data{$name} = $value;
}
return(%input_data);
}
Bien, ahora tenemos todos los datos de entrada en un %hash para usarlo de la manera $input_data{'nombre'} eso colocará el valor que tenga el campo de formulario llamado nombre. con lo cual tenemos tres variables importantes pasadas por parámetros
$input_data{'concordancias'} $input_data{'filtro'} $input_data{'texto'}
Ahora bien dentro del flujo del script tenemos que abrir el archivo que nos pasaron por parámetro en $input_data{'texto'}
Código:
#Flujo del script
my %input_data = &input_data();
open (DATABASE, "<$input_data{'texto'}");
@registros = <DATABASE>;
close (DATABASE);
Ahora tenemos todos las líneas del archivo de texto, cada una en un elemento distinto del array, o sea que la línea número uno es $regitros[0], la línea número 2 es $registros[1] y así...Esto lo usas para ver la ubicación de la palabra en el texto...con
$numero_elementos = @registros;
tomamos el número de elementos que tiene el array con lo cual puedes hacer un for que valla desde 0 hasta $numero_elementos y vas evaluando el array y ya tenés ahí el número de ubicación...
Bueno, espero que te sirva...