• Publicidad

Problemas con File::Grep

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Notapor tlmejia » 2008-08-29 17:19 @763

si no le pongo la línea de:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$busfinal = $1;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

sí me lo muestra, pero no corrige nada; me sigue mandando el resultado:

C:\AppServ\www\pdf\SA25.0704Busan40.pdf

si le dejo esa línea, no me muestra ningún resultado :?
tlmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-08-27 13:33 @606

Publicidad

Notapor explorer » 2008-08-29 17:22 @765

Ya está corregido. El problema estaba en la expresión regular, que buscaba por '.pdf', cuando en realidad debería haber buscado por '.txt'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor tlmejia » 2008-08-29 17:31 @771

WOWW! es usted todo un sensei :D , muchas gracias, para poder modificar la ruta del pdf, porque ya sale el puro nombre, lo cual es muy bueno pero en la ruta, no me muestra todavía el pdf, porque le hace falta, en la ruta meterse a una carpeta.

Ahorita si pongo el mouse sobre el link del resultado aparece este link:

http://localhost/cgi-bin/SA26.1204Busan1069.pdf

pero debería de ser:

http://localhost/cgi-bin/pdf/SA26.1204Busan1069.pdf

por eso no me abre el pdf todavía, puedo ponerle algo así como:

$busfinal = "/pdf/$1.pdf"; , para poder mostrar dicha carpeta :?
tlmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-08-27 13:33 @606

Notapor tlmejia » 2008-08-29 17:41 @778

Otra pregunta, a que se refiere el $1, eso no entendí muy bien esa parte del código, es una variable que almacena sólo el nombre del archivo, al cual ya le quitamos los demás caracteres que no queríamos? y el ponerle $1 fue alateorio no?
tlmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-08-27 13:33 @606

Notapor explorer » 2008-08-29 17:42 @779

No.

Si colocas "/pdf" delante, la primera barra le está indicando que quieres decir

http://localhost/pdf/SA26.1204Busan1069.pdf

pero estás contando que los pdf los tienes guardados dentro de la carpeta /cgi-bin/pdf.

Así que entonces deberás cambiar la línea a

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$busfinal = "/cgi-bin/pdf/$1.pdf";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


pero entonces queda feo en la página web.

Casi mejor modificar el print. Quedaría así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
            $busfinal =  "$1.pdf";
            print qq(<a href="/cgi-bin/pdf/$busfinal">$busfinal</a><br/>\n);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Fíjate: solo hemos añadido el camino dentro del print, para que en el enlace solo salga el nombre del fichero.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Problema con módulo fgrep

Notapor tlmejia » 2008-11-10 13:52 @619

Hola, buenas tardes. Bueno, el problema que estoy teniendo con mi programa es que no está haciendo las búsquedas bien. No habíamos tenido problemas, pero ahora ya no hace bien la búsqueda, no arroja los resultados que debería.

Ya busqué algo de información del grep por la sintaxis, pero al parecer está bien la sintaxis :?.

El código es el siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @matches = fgrep { /$query/ } glob('/home/httpd/mexico/techserv/txt/*.txt');
   
    for my $f (@matches) {   (en esta sección si le pongo un print a $f me muestra los resultados, pero me manda todo lo que hay, no lo que se puso en la variable $query)
                   
      if ($f->{count}) {        (después de esta sección ya no muestra absolutamente nada, y si hay información)  <img src="http://perlenespanol.com/foro/images/smilies/icon_confused.gif" alt=":?" title="Confused" />            
   
        my $busfinal = $f->{filename};
     
        $busfinal =~ /([^\/\/]+)\.txt/;
     
        $busfinal = "$1.pdf";
        # print "<tr><td><img src='/mexico/imagenes/pdf_conv.gif'>\n";  
         print qq(<tr><td><img src='/mexico/imagenes/pdf_conv.gif'><a href="$url/$busfinal" class="style2">$busfinal</a></td>\n);  
    my $primera_letra = substr ($busfinal, 0, 1);    
       if ($primera_letra eq 'S'){
         print qq (<td><a class="style2">Hojas de Seguridad</a></td></tr>\n);
       }else {
         print qq (<td><a class="style2">Hojas Técnicas</a></td></tr>\n);          
       }
    }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


No sé qué pueda ser, porque ya le he intentado eso y no veo por dónde más buscarle, lo más raro es que funcionaba bien y no sé qué es lo que pudo estropearlo.

¡Gracias de antemano por la ayuda!
Saludos
tlmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-08-27 13:33 @606

Notapor explorer » 2008-11-10 15:58 @707

Es muy extraño. ¿Seguro que el valor de $query está bien puesto? Hazle un print(). Una razón por la que pueden salir todos los resultados es que $query esté vacía.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor tlmejia » 2008-11-10 17:36 @775

Ya le hice un print() a la variable $query y sí me está pasando el valor de $query; lo extraño es que, por ejemplo, con algunas palabras no me muestra ningún resultado, y hay varios archivos que cuentan con esa palabra y también hay otros casos en los que me arroja 1, 2 o 3 resultados de la palabra de búsqueda, pero resulta que debería de mostrarme más, porque hay varios archivos que cumplen con la búsqueda. :?
tlmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-08-27 13:33 @606

Notapor explorer » 2008-11-10 18:27 @810

¿No será que no distingues entre mayúsculas y minúsculas en el $query?

Cambia /$query/ por /$query/i.

También depende del entorno en que trabajas. Si es en CGI, acuérdate de activar el vaciado de caché, poniendo a 1 el valor de la variable $|.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 28 invitados