Tenemos en el trabajo un script de Perl que se utiliza para realizar tareas de mantenimiento. Necesitaba modificarlo para manejar más tareas. El problema es que el script está compilado y la fuente se perdió hace mucho tiempo.Perl: accediendo a 'mis' variables desde otro archivo
Intenté usar B :: Deparse para recrear el archivo pero Deparse no es perfecto y la salida está rota (y muy grande ~ 5000 líneas de código depuradas).
Después de leer el código depurador encontré que necesito modificar una función. El script compilado carga un módulo de script de texto plano, por lo que modifiqué el módulo para anular la función y realizar la tarea que necesito que realice. El problema ahora es que no puedo acceder al script principal "mis" variables.
He aquí un ejemplo:
# main.pl
my $a = 1;
sub call_me {
print "unmodified";
}
use MOD;
call_me;
MOD.pm
package MOD;
main::{'call_me'} = sub {
print "\$main::a = $main::a\n";
}
El resultado es: "$main::a =
" en lugar de obtener el valor real.
Gracias de antemano.
Las variables léxicas ('my') no aparecen en la tabla de símbolos del paquete en contraste con el paquete global. Así que este es un tema difícil, pero interesante ... # Nota: simplemente puede escribir sub main :: call_me {...} si no recuerdo mal. – amon
¿Qué quiere decir con "script compilado". ¿Te refieres empaquetado? – ikegami
Estoy de acuerdo con ikegami, puede haber alguna manera de recuperar ese script, pero para saber, necesitamos saber a qué te refieres con "compilado". –