• Publicidad

Leer variables desde otro script y ejecutarlo

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

Leer variables desde otro script y ejecutarlo

Notapor _behoimi » 2018-01-31 17:35 @774

Hola, explicaré lo que hice y mi problema, pero no adjuntaré código, porque en realidad es una pregunta muy básica, pero que no sé cómo formularla de la forma adecuada como para buscarla en Google. Ojalá se entienda sin código.

Creé más de un script que dibuja gráficos, con la ayuda del módulo GD.

Todo se ejecuta bien, no hay error en el código, sino más bien tuve un problema en el tiempo de ejecución.

Primero tenía un script para crear cada gráfico, todos funcionando de forma similar (aunque eran solo dos, ahora necesito hacer al menos uno más), cada uno leía un archivo en donde se almacenan los datos y luego se creaba la imagen, pero ahora el archivo con los datos es demasiado grande, entonces tarda varios minutos en crearse la imagen, así que para reducir el tiempo metí el algoritmo del segundo script en el primero, así de una sola vez se crean los dos gráficos. Con esto el problema del tiempo queda solucionado, podría meter el algoritmo para un tercer gráfico y, supongo, sería un par de segundos más tardado.

Mi verdadero problema es que ahora tengo un enredo con las variables, ya que todas tienen nombre similar y les agregué un "2" para diferenciarlas, me gustaría poder tener solo un script que cargue los datos, pero poder escribir el algoritmo de los gráficos por separado, algo así como un script que ejecute otros dos script, pero que puedan leer las variables del primero.
_behoimi
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-09-13 15:01 @667

Publicidad

Re: Leer variables desde otro script y ejecutarlo

Notapor explorer » 2018-01-31 19:09 @840

Puedes meter las variables en archivos perl, y luego, desde el principal, los cargas con do:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for my $i (1..3) {
  2.  
  3.     do "variables_$1.pl";
  4.  
  5.     # cálculo usando las variables
  6. }
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4

Tienes más información el perldoc -f do:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
    do EXPR Usa el valor de EXPR como el nombre de un archivo y ejecuta los
            contenidos del archivo como un script Perl.

                do 'stat.pl';

            es mayormente como

                eval `cat stat.pl`;

            excepto que es más conciso, no ejecuta procesos externos, mantiene
            el seguimiento del nombre del archivo actual en los mensajes de
            error, busca en los directorios @INC y actualiza %INC si se
            encuentra al archivo. Vea "@INC" in perlvar y "%INC" in perlvar
            para encontrar información sobre estas variables. También difiere
            en que el código evaluado con "do ARCHIVO" no puede ver a las
            variables léxicas en el ámbito en que se ejecuta; "eval STRING"
            sí. Es lo mismo, sin embargo, en que vuelve a interpretar el
            archivo cada vez que lo llama, así que, probablemente, no querrá
            hacer esto dentro de un bucle.

            Si "do" puede leer el archivo pero no puede compilarlo, devuelve
            "undef" y pone un mensaje de error en $@. Si "do" no puede leer el
            archivo, devuelve undef y pone $! al valor del error. Siempre
            revise $@ en primer lugar, la compilación puede fallar de una
            manera que también se establezca $!. Si el archivo se compila
            bien, "do" devuelve el valor de la última expresión evaluada.

            La inclusión de bibliotecas de módulos es mejor hacerla con los
            operadores "use" y "require", que también hacen una comprobación
            automática de errores y generan una excepción si existe algún
            problema.

            Puede usar "do" para leer en un programa un archivo de
            configuración. Comprobación manual de errores se puede hacer así:

                # leer en archivos de configuración: primero el sistema, luego el usuario
                for $archivo ("/share/prog/defaults.rc",
                           "$ENV{HOME}/.algunprogramarc")
                {
                    unless ($devuelve = do $archivo) {
                        warn "no puedo interpretar $archivo: $@" if $@;
                        warn "no puedo ejecutar $archivo: $!"    unless defined $devuelve;
                        warn "no puedo ejecutar $archivo"        unless $devuelve;
                    }
                }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14124
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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