Lun Sep 15, 2008 11:38 am
|
 |
tlmejia
Perlero Nuevo

|
Registrado: 27 Ago 2008
Mensajes: 18
|
|
| Desplegar texto |
|
|
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:
| Perl: | 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 }) {
....... |
¡¡Agradezco de antemano su ayuda!!
¡¡Buen día!! |
|
|
|


Lun Sep 15, 2008 2:54 pm
|
 |
tlmejia
Perlero Nuevo

|
Registrado: 27 Ago 2008
Mensajes: 18
|
|
|
|
|
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
| Perl: | 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 );
}
} |
|
|
Lun Sep 15, 2008 4:19 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4140
Ubicación: Valladolid, España
|
|
|
|
|
Se podría hacer una expresión regular como esta:
para capturar la primera letra del nombre del fichero... excepto si los ficheros no están dentro de una carpeta pdf/. |
|

Mie Sep 17, 2008 1:07 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4140
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|

Mie Sep 17, 2008 1:27 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4140
Ubicación: Valladolid, España
|
|
|
|
|
humm...
Yo te propuse
porque el camino al fichero contiene '\'. Por eso ponemos '\\', para escaparlo dentro de la expresión regular.
Ahora bien, tu pones
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,
| Perl: | $busfinal = 'C:\AppServ\www\pdf\TA9.Lm0504Busan85.txt';
$busfinal =~ / ([^\\ ]+ )\.txt/;
print "$1"; # $1 contiene TA9.Lm0504Busan85
|
Creo que eso es lo que te pasa... |
|
Powered by phpBB © 2001, 2005 phpBB Group
|