• Publicidad

Crear múltiples scripts

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

Crear múltiples scripts

Notapor fonsox » 2006-03-29 10:34 @482

Hola.

Me llamo Alfonso y estoy empezando con esto del Perl y en general con todo el mundo de los sistemas medios (UNIX y Windows), vengo de los mainframes de IBM y todo esto es nuevo para mi.

Tengo que generar unos 500 scripts de UNIX que cargan una base de datos y quería generarlos de golpe a partir de un fichero donde tengo el nombre del script y la línea que tiene que ejecutar, en otro fichero tengo un script esqueleto y una línea XXXXXXXXX donde sustituir la linea de ejecución.

Mi problema básico es que no sé cómo generar múltiples archivos a partir de una lista por lo que el nombre del OPEN/CLOSE es variable.

Un saludo y GRACIAS por vuestras respuestas.

Alfonso.
Un Saludo.
Alfonso.
fonsox
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-03-29 10:24 @475

Publicidad

Re: Crear múltiples scripts

Notapor explorer » 2006-03-29 12:14 @552

Empezando por el final.

Para hacer un open/close variable, necesitas hacerlo con una variable:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. foreach my $fichero ( 'fichero1.txt', 'fichero2.txt' ) {
  2.     open(FILE,">$fichero") or die "ERROR: No pude abrir en escritura el fichero $fichero: $!\n";
  3.     # ...
  4.     close FILE;
  5. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Para el tema de generar 500 scripts. Yo supongo que cada uno de ellos los llamarás de una forma distinta, para que cada uno se conecte a una base de datos distinta o realice diferentes funciones.

Aunque podríamos generar esos 500 scripts, el mantenimiento de ellos puede ser enorme, si al final difieren unos de otros en muy poco. Como sabemos que a los programas se les pueden pasar argumentos, podríamos tener un único script que se comportase de forma distinta según los argumentos que se le pasen.

Pero hay alguna ocasión en la que no podemos hacer eso (por limitaciones del sistema operativo o comunicaciones entre procesos, etc., entonces estamos obligados a ejecutar directamente un script.

Una forma de tener todo el problema resumido en un único script y que se comporte de forma distinta según el nombre como es llamado, es hacer lo siguiente:

Supongamos que nuestro script se llama script.pl. Necesitamos que se llame abrir_base_datos_aa1.pl, cerrar_base_datos_aa1.pl y cierra_todo.pl.

Bueno, pues según nuestro sistema operativo, tendremos que crear tres copias de nuestro script y llamarles de esa forma o, como en el caso de UNIX/Linux, podríamos crear enlaces simbólicos al script.pl, pero de distinto nombre:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. explorer@next3:~/> ln -s script.pl abrir_base_datos_aa1.pl
  2. explorer@next3:~/> ln -s script.pl cerrarr_base_datos_aa1.pl
  3. explorer@next3:~/> ln -s script.pl cierra_todo.pl
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
entonces tenemos tres enlaces simbólicos al mismo script.

Dentro del script, al empezar, sólo tenemos que consultar la variable $0 para saber el nombre del script que ha ejecutado el usuario. Según sea un nombre u otro haremos una cosa u otra.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor fonsox » 2006-04-03 05:03 @252

Gracias por la respuesta.

Me pongo a probar el ejemplo del open/close.

El ejemplo que me pones, sobre el script común, es muy interesante pero no puedo utilizarlo porque tengo que hacer los scripts lo más simples posibles, aunque me suponga mucho trabajo de mantenimiento posterior, para que en caso de fallo el grupo de operación no tenga dificultad a la hora de leer el script.

Muchas Gracias.
Alfonso.
Un Saludo.
Alfonso.
fonsox
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-03-29 10:24 @475


Volver a Básico

¿Quién está conectado?

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

cron