Mie Mar 29, 2006 9:34 am
|
 |
fonsox
Perlero Nuevo

|
Registrado: 29 Mar 2006
Mensajes: 5
|
|
| Crear multiples scripts |
|
|
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 queria generarlos de golpe a partir de un fichero donde tengo el nombre del script y la linea que tiene que ejecutar, en otro fichero tengo un script esqueleto y una linea XXXXXXXXX donde sustituir la linea de ejecucion.
Mi problema basico es que no se como generar multiples archivos a partir de una lista por lo que el nombre del OPEN/CLOSE es variable.
Un saludo y GRACIAS por vuestras respuestas.
Alfonso. |
|
|
|

Mie Mar 29, 2006 11:14 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4126
Ubicación: Valladolid, España
|
|
|
|
|
Empezando por el final. Para hacer un open/close variable, necesitas hacerlo con una variable:
| Código: |
foreach my $fichero ( 'fichero1.txt', 'fichero2.txt' ) {
open(FILE,">$fichero") or die "ERROR: No pude abrir en escritura el fichero $fichero: $!\n";
# ...
close FILE;
} |
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 3 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:
| Código: |
explorer@next3:~/> ln -s script.pl abrir_base_datos_aa1.pl
explorer@next3:~/> ln -s script.pl cerrarr_base_datos_aa1.pl
explorer@next3:~/> ln -s script.pl cierra_todo.pl |
entonces tenemos 3 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. |
|

Lun Abr 03, 2006 4:03 am
|
 |
fonsox
Perlero Nuevo

|
Registrado: 29 Mar 2006
Mensajes: 5
|
|
|
|
|
Gracias por la respuesta.
Me pongo a probar el ejemplo del open/close.
El ejemplo que me pones, sobre el script comun, es muy interesante pero no puedo utilizarlo porque tengo que hacer los scripts lo mas simples posibles, aunque me suponga mucho trabajo de mantenimiento posterior, para que en caso de fallo el grupo de operacion no tenga dificultad a la hora de leer el script.
Muchas Gracias.
Alfonso. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|