• Publicidad

Extraer todos los archivos de un directorio por FTP

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Ejecutar un programa desde PL

Notapor wastudillo » 2009-04-28 08:20 @389

Hola, muchas gracias por la respuesta. Me pongo en la tarea de hacerlo ya mismo. ¡Una pregunta! ¿Se puede ejecutar un programa cualquiera desde un programa desarrollado en PL? Por ejemplo, que dentro de una instrucción yo necesite que abra Word. No sé si será posible pero por eso le pido su ayuda. Gracias.
wastudillo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2009-04-14 22:21 @972

Publicidad

Notapor explorer » 2009-04-28 10:39 @485

¿PL?

¿Qué es eso? ¿Te refieres al lenguaje de programación PL/1, o los lenguajes de base de datos de Oracle PL/SQL o de PostgreSQL (PL/PgSQL)?

Aquí, en Perl, usamos la función system(), las comillas invertidas (``) o el operador qx() y varios métodos más para arrancar programas.

Más información en perldoc perfunc y perldoc perlop.

En concreto, para Windows, hay diversas soluciones según lo que quieras hacer. Por ejemplo, en esta página tienes un ejemplo para transformar cada fichero de un directorio a fichero HTML. Usa el método de usar el protocolo OLE para intercambiar información entre aplicaciones Windows.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Mostrar ventana emergente

Notapor wastudillo » 2009-05-13 10:25 @476

¿Qué tal? Nuevamente para molestarlos. Quisiera saber de qué manera o por medio de qué método puedo hacer que los mensajes de error o confirmación de una acción en un aplicativo de Perl se muestre en una pequeña ventana de Windows donde yo solamente tenga que darle aceptar para cerrarla después de leer el mensaje. Gracias.
wastudillo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2009-04-14 22:21 @972

Notapor proxy_lainux » 2009-05-13 18:05 @795

Hola.

¿Por qué no intentas hacer eso haciendo una ventana con Gtk, por ejemplo? Si hay un momento donde me aparece un error, usa Gtk2::Window para crear una ventana y coloca el mensaje allí, y si presionas un botón que haga algo, en el caso de que el mensaje sea para alguna acción.

salu2
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Notapor explorer » 2009-05-13 18:22 @807

wastudillo: es mejor empezar hilos nuevos, sobre todo si no tienen que ver con el título y tema del hilo actual.

En cuanto a lo que quieres, creo que se puede resolver con una simple caja de alerta. Con el módulo Win32::GUI se puede hacer.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Mostrar mensaje de error en ventana

Notapor wastudillo » 2009-05-26 07:09 @339

Hola, ¿qué tal?

Gracias por el interés pero la verdad no entendí mucho lo que me dicen; además coloco GTk2::Window y me sale un error pero quisiera explicarles un poco mejor lo que necesito.

Por ejemplo, cuando estoy extrayendo un archivo por FTP y el programa no encuentra dicho archivo entonces me debe mostrar una pequeña ventana indicándome el mensaje de error (o también de confirmación) por mí especificado; el usuario solamente debe hacer clic en OK por ejemplo y se cierra la ventana de tal manera que el usuario tenga tiempo de ver el error antes de que el programa termine y se cierre automáticamente.

No sé si será mucho pedir pero aquí les muestro un pedazo del programa y dónde necesito que muestre la ventana:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $FTP = Net::FTP->new($SERVER) or die ("No se puede abrir la conexión");# aquí también
$FTP->login($name,$pass);
$FTP->binary ();
$FTP->hash ();
my @archivos = $FTP->ls();
foreach my $archivo (@archivos){
    $FTP->get($archivo);
    print "Archivo $archivo copiado\n"; # este es el mensaje
}
$FTP->quit();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Muchas gracias.
wastudillo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2009-04-14 22:21 @972

Notapor creating021 » 2009-05-26 19:19 @846

proxy_lainux escribiste:¿Por qué no intentas hacer eso haciendo una ventana con Gtk, por ejemplo?

Porque instalar GTK2 requiere instalar Gtk+, Pango, Glib, Cairo y otras cosas... que Windows no trae, yo usaría otra librería como la que dice explorer (Win32::GUI) o Prima, ya que tiene menos dependencias.
wastudillo escribiste:coloco GTk2::Window y me sale un error

GTk2 != GTK2
Suponiendo que ese es el error, ya que no lo comentas.

Bien, el asunto es que sí se puede hacer, y es muy simple:
Primero creamos una función que imprima el diálogo, ésta deberá recibir un argumento... el mensaje (de error o de confirmación).


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# use Prima qw(Application MsgBox);
sub MiDialogo {
    my $msg = shift; # argumento.
    Prima::MsgBox::message($msg, mb::Ok);
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Luego, en el código que tenías, agregamos algo.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $FTP = Net::FTP->new($SERVER) or die ("No se puede abrir la conexión");# aquí también
$FTP->login($name,$pass);
$FTP->binary ();
$FTP->hash ();
my @archivos = $FTP->ls();
foreach my $archivo (@archivos){
    $FTP->get($archivo) or do {
        MiDialogo( $FTP->message() );
        next; # Seguimos con el siguiente elemento del bucle
    };
    MiDialogo( "Archivo $archivo copiado" );
    print "Archivo $archivo copiado\n"; # este es el mensaje
}
$FTP->quit();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Es una forma simple y rápida... que se puede mejorar :wink:
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Mostrar mensaje confirmación o error en una ventana

Notapor wastudillo » 2009-05-27 06:38 @318

Buenos días.

Les comento que me sale el siguiente error y no pude ver el funcionamiento del código, y otra cosa: no sé si lo estoy haciendo bien. En el lugar donde necesito que me salga el mensaje simplemente coloco algo como esto MiDialogo ("mensaje de error o confirmacion"); ¿O requiere de algo más?

Este es el mensaje de error:

Código: Seleccionar todo
Can't locate Prima.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at extraer_archivos.pl line 10.
BEGIN failed--compilation aborted at extraer_archivos.pl line 10.


Muchas gracias por la ayuda.
wastudillo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2009-04-14 22:21 @972

Notapor explorer » 2009-05-27 06:49 @325

El error dice que Perl no es capaz de encontrar el módulo Prima, así que entonces suponemos que no está instalado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Módulo prima

Notapor wastudillo » 2009-05-27 13:32 @606

Perdón por la ignorancia, ¿cómo lo instalo?
wastudillo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2009-04-14 22:21 @972

AnteriorSiguiente

Volver a Intermedio

¿Quién está conectado?

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

cron