• Publicidad

Desplegar texto

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

Desplegar texto

Notapor tlmejia » 2008-09-15 12:38 @568

Hola, buenas tardes. Pues tengo una duda en cómo hacer lo siguiente: tengo un programa que devuelve los archivos que coincidan con una búsqueda dada. Los archivos que siempre regresa o comienzan con 'T' mayúscula o con 'S' mayúscula, no hay otra. Lo que quiero hacer es decirle que si los archivos que regresa comienzan con 'S' despliegue un letrero que diga "hojas de seguridad" y posteriormente ponga los archivos que tienen 'S', de lo contrario desplegar la leyenda "hojas técnicas" y despliegue los archivos que comienzan con 'T'. Estoy haciendo algo así pero no me está funcionando:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @matches = fgrep { /$query/ } glob('C:\AppServ\www\pdf\txt\*.txt');
    if (@matches =~ /^T/ ){
         print qq (<a class="style1">HOJAS TÉCNICAS</a><br/>\n);
        }
        else {
         print qq (<a class="style1" align="center">HOJAS DE SEGURIDAD</a><br/>\n);
        }
   
    for my $f (@matches) {
                       
      if ($f->{count}) {  
.......
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¡¡Agradezco de antemano su ayuda!!
¡¡Buen día!!
tlmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-08-27 13:33 @606

Publicidad

Notapor explorer » 2008-09-15 13:13 @592

Debes hacer la comprobación sobre uno de los elementos. No puedes compararlos sobre todos:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($matches[0]->{filename} =~ /^T/ ){
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y me parece que la expresión regular está mal... seguro que los nombres de los ficheros viene con todo el camino que le has puesto a glob().
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor tlmejia » 2008-09-15 15:54 @704

De hecho, sí me percaté que sigue trayendo toda la ruta, pero posteriormente escapo todos los signos, me corre en el servidor donde tengo la aplicación pero ahorita lo tengo local porque como estoy haciendo pruebas me sale ese problema nuevamente :?:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @matches = fgrep { /$query/ } glob('C:\AppServ\www\pdf\*.txt');
    for my $f (@matches) {
        if ($f->{count}) {  
                         
        my $busfinal = $f->{filename};    
        $busfinal =~ /([^\/\/]+)\.txt/;
        #print $busfinal;
        $busfinal = '$1.pdf';
       
        #print "<img src='/mexico/imagenes/pdf_conv.gif'>\n";  
        print qq(<a href="$busfinal" class="style2">$busfinal</a><br/>\n);
    }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
tlmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-08-27 13:33 @606

Notapor explorer » 2008-09-15 17:19 @763

Se podría hacer una expresión regular como esta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
m{pdf/(.).+?.txt}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
para capturar la primera letra del nombre del fichero... excepto si los ficheros no están dentro de una carpeta pdf/.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor tlmejia » 2008-09-17 10:09 @464

Ok, perfecto, haré una prueba para ver eso, sólo una duda, ¿cómo puedo escapar este signo "/"? porque al momento de imprimir mi resultado me aparece toda la ruta como en esto:

C:\AppServ\www\pdf\TA9.Lm0504Busan85.pdf

Pero el link al momento de pasar el mouse por éste, es el siguiente:

file:///C:/AppServ/www/pdf/TA9.Lm0504Busan85.pdf

y la expresión donde estoy "escapando" eso es la siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$busfinal =~ /([^\/\/]+)\.txt/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero no lo hace. :?: , ¡¡Gracias de antemano!!
tlmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-08-27 13:33 @606

Notapor explorer » 2008-09-17 14:07 @630

Esa expresión regular no está "escapando" nada. Solo está buscando una concordancia: el nombre del fichero menos la extensión '.txt'. Si lo encuentra, lo guarda en '$1'.

Creo que ya te respondí a esto antes. En ese código se busca el nombre del fichero de la manera que comentas, y luego creo el enlace del destinatario, poniéndole la nueva extensión.

De todas formas, para escapar caracteres extraños, siempre se suele poner un '\' delante de ellos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2008-09-17 14:27 @643

humm...

Yo te propuse
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
/([^\\]+)\.txt/
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

porque el camino al fichero contiene '\'. Por eso ponemos '\\', para escaparlo dentro de la expresión regular.

Ahora bien, tu pones
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
/([^\/\/]+)\.txt/
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

que lo que quiere decir es que buscas algo que no sea '/'. Y lo repites dos veces.
Eso no me concuerda con nada del camino del fichero.

A ver... si $busfinal contiene 'C:\AppServ\www\pdf\TA9.Lm0504Busan85.txt', entonces,
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$busfinal =  'C:\AppServ\www\pdf\TA9.Lm0504Busan85.txt';
$busfinal =~ /([^\\]+)\.txt/;
print "$1"; # $1 contiene TA9.Lm0504Busan85
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Creo que eso es lo que te pasa...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado