Código :: empalme

Código :: SPLICE INYECTAS El contenido de una subrutina en un punto específico en otro lugar.
Descargar ahora

Código :: empalme Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • Scott Walters and Brock Wilcox
  • Sitio web del editor:
  • http://search.cpan.org/~swalters/

Código :: empalme Etiquetas


Código :: empalme Descripción

Código :: Splice inyecta el contenido de una subrutina en un punto específico en otro lugar. Código :: Splice inyecta el contenido de una subrutina en un punto específico en otro lugar.Synopsis Código de uso :: Splase; Código :: SPLEICE :: INEY (CODE => SUB {PRINT "FREDN";}, PAQUETE => 'PRINCIPAL', MÉTODO => 'foo', condición previa => sub {My $ op = Shift; My $ LINE = Shift ; $ LINE = ~ M / PRINT / Y $ LINE = ~ M / FUER /;}, PostCondition => Sub {My $ op = Shift; My $ line = Shift; $ line = ~ m / imprimir / y $ line = ~ m / cinco /;},); Sub foo {impresión "ONEN"; Imprimir "Twon"; Imprimir "THEEN"; Imprimir "Fourn"; Imprimir "Foriven"; } Este módulo elimina el contenido de una subrutina (generalmente una subrutina anónima creada solo para el propósito) y los empalmes en el programa en otro lugar. ¿Por qué le preguntas? Escribe pruebas unidades más fuertes que la granularidad de la API, de lo contrario permitiría las pruebas de unidad de escritura para Código de Speghetti desagradable, interdependante (mi motivación - Oye, tiene que tener pruebas antes de comenzar la refactorización, y si no puede escribir pruebas para el código, está atornillado) Fije los errores estúpidos y elimine las restricciones estúpidas en el código de otras personas De manera que sea más resilante en las actualizaciones que editar archivos, no se debe a sus "aspectos", debe ser tornillo con sus orificios de vaca mediante la introducción de Monster Heisenbugs, juegue con el código de auto modificación de código de auto-replicación (pero sé agradable, nosotros " Re todos los amigos aquí, ¿verdad?) Los detalles: el cuerpo del código {} se extrae de la subrutina e insertada en un lugar en el código especificado por la llamada a la función SPLICE (). Donde se empalme el nuevo código, el código anterior se empapa. Se requieren los argumentos del paquete y el método y le dicen a la cosa cómo encontrar el código a modificar. Se requiere el argumento del código, ya que especifica el código a empalmar. Ese mismo bloque de código no debe usarse para nada más bajo la pena de Coredump. El resto de los argumetidos especifican dónde se debe insertar el código. Cualquier número de argumentos de condición previa y poscondición proporciona devoluciones de llamada para ayudar a localizar el área exacta para empalmar el código en. Antes de que el código se pueda empalmar, todos los bloques de condición previa deben haber devuelto VERDADERO, y ninguno de los bloques de postcondition puede haber regresado verdadero. Si una postcondición devuelve verdadera antes de que tengan todos los bloques de condición previa, se eleva un error. Ambos bloques se denominan numerosas veces por línea y se les pasa una referencia al objeto OP de B en consideración y el texto de la línea actual: condición previa => SUB {MY $ op = Shift; My $ line = Shift; $ línea = ~ m / impresión / y $ línea = ~ m / cuatro /; }, ... o ... condonondition => sub {My $ op = Shift; $ op-> Nombre EQ 'PADSV' y $ op-> sv-> sv = ~ m / fred /; }, Es posible insertar el código en medio de una expresión al probar OPS, pero al probar el texto de la línea de código, el empalme en el código siempre reemplazará toda la línea completa. Probablemente le hará caer el envío en el código OPOTE en una Versión futura, al menos para los bloques de condición previa / postcondition, o tal vez los intercambiaré a la segunda ARG, por lo que son más opcionales. No intente igualar el texto en los comentarios, ya que no estará allí. El código en línea se vuelve a generar desde el código de byteCode usando B :: Departamento y variará desde el código fuente original de algunas maneras, incluidos los cambios en el formato, los cambios en algunos idiomas y los detalles de las expresiones y el formato del código Con respecto al espacio en blanco. El código de empalme morirá si falla por algún motivo. Es probable que esto cambie en posibles versiones futuras. También hay incluso etiquetas y argumentos de línea que crean condiciones previas para usted, para casos simples. Por supuesto, no debe usar la línea para otra cosa que no sea una experimentación simple. Las referencias a las variables léxicas en el código que se inyectan se reemplazan con referencias a las variables léxicas del mismo nombre en la ubicación en el que se inserta el código. Si una variable del mismo nombre no existe allí, es un error. ... pero probablemente no debería ser un error, al menos en los casos en que el código que se está empalde en declara que lexico con mi, o cuando la variable se inició completamente fuera del subcálbeno que se está empalde y se cerró simplemente. por it.se, los comentarios en el código fuente (en la parte superior, en un buen bloque) para mis características de mano / deseadas. Déjeme saber si hay alguna característica allí o, sin embargo, sin estar insuficiente que desee. No los prometí, pero me gustaría escuchar sobre ellos. Requisitos: · Perl


Código :: empalme Software relacionado

Neem

Neem es una biblioteca que proporciona una implementación de la multidifusión epidémica. ...

148

Descargar