• Publicidad

Consulta sobre listado de directorios

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

Re: Consulta sobre listado de directorios

Notapor explorer » 2012-11-19 10:21 @473

Si sabes que es un directorio (-d) entonces lo imprimes tal cual, sin el margen de dos espacios. Y si no, se trata de un archivo normal, así que lo imprimes con el margen de dos espacios.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     if (-d $fpath) {
  2.         print "$fpath\n";
  3.     }
  4.     else {
  5.         $fname = basename($fpath);
  6.         if (/\.html$/) {
  7.             print "  $fname\n";
  8.         }
  9.     }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
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

Publicidad

Re: Consulta sobre listado de directorios

Notapor situ » 2012-11-19 11:09 @506

Claro, creo que me expresé mal, por eso no se entiende mi consigna. Mi idea es imprimir arriba de los archivos el nombre que le pase como argumento para usarlo como "directorio", por eso ingresar en el post anterior:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
routers
 informe.html
firewall
 informefw.html
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Pude solucionarlo, de la siguiente forma, no sé si es la más adecuada.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use File::Find;
  2. use File::Basename;
  3. @ARGV = qw(firewall routers) if not @ARGV;
  4.  
  5. foreach $tipo (@ARGV) {
  6.     print "<tr><td>$tipo</td></tr>\n";
  7.  
  8.     find( \&doit, $tipo );
  9.  
  10.     sub doit {
  11.         $fpath = $File::Find::name;
  12.         $fname = basename($fpath);
  13.         if (m/(.*\.html)/) {
  14.             print "<tr><td><a href=\"http://localhost/$fpath\"><font color=#F3C035>$fname</font></a></td></tr>";
  15.         }
  16.     }
  17. }
  18.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2012-11-19 11:32 @522, editado 2 veces en total
Razón: Formateado de código con Perltidy
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Re: Consulta sobre listado de directorios

Notapor explorer » 2012-11-19 12:35 @566

Bueno, yo usaría CGI para generar el código HTML, y sacaría la función doit() de dentro del bucle.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use CGI ':standard';
  2. use File::Find;
  3. use File::Basename;
  4. use feature 'say';
  5.  
  6. @ARGV = qw(firewall routers) if not @ARGV;
  7.  
  8. for my $tipo (@ARGV) {
  9.     say Tr(td($tipo));
  10.      
  11.     find( \&doit, $tipo );
  12. }
  13.  
  14. sub doit {
  15.     my $fpath = $File::Find::name;
  16.     my $fname = basename($fpath);
  17.  
  18.     if (m/\.html$/) {
  19.         say Tr(td(
  20.                   a({-href => "http://localhost/$fpath"},
  21.                      qq(<font color="#F3C035">$fname</font>
  22.                   )
  23.         ));
  24.     }
  25. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Pero yo no usaría la etiqueta <font>, sino un estilo CSS. Y al código le falta todo el preámbulo para dibujar toda la estructura de un documento HTML (no sabemos si eso es lo que quieres al final).

Hay otros módulos para generar HTML, desde luego.
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

Re: Consulta sobre listado de directorios

Notapor situ » 2012-11-19 14:00 @625

¡Muchas gracias! Armé todo el informe en HTML pero a mano =(
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 33 invitados

cron