Monkey :: Parche :: Acción

Wrap / Agregar / Reemplazar / Eliminar Subs de Otro Paquete (con Restaurar)
Descargar ahora

Monkey :: Parche :: Acción Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • Steven Haryanto
  • Sitio web del editor:
  • http://search.cpan.org/~sharyanto/

Monkey :: Parche :: Acción Etiquetas


Monkey :: Parche :: Acción Descripción

El parcheo de mono es el acto de modificar un paquete en tiempo de ejecución: agregar un subrutino / método, reemplazar / eliminar / envolver otro, etc. PERL hace que sea fácil hacerlo, por ejemplo: # Agregar una subrutina * {"Target :: sub1 "} = sub {...}; # Otra forma, se puede hacer desde cualquier paquete de archivos objetivo; sub2 {...} # Eliminar una subrutina UNDEF * {"Target :: sub3"}; Monkey :: Parche: Patch :: Acción es un módulo PERL que hace que las cosas sea aún más fácil al ayudarlo a aplicar una pila de parches y sin coincidir en orden flexible.Synopsis Use Monkey :: Parche :: Acción QW (Patch_Package); paquete foo; SUBS SUB1 {DIGA "SUB1" SUB1 "FOO SUB2 {DIGA" SUB2, ARGS = ", ÚNETE (", ", @_)} Sub meth 1 {My $ Self = Shift; Diga la barra de paquete "foo's meth1"}; nuestra @isa = qw (foo); Paquete principal; My $ H; # manejar el objeto My $ foo = foo-> nuevo; MY $ BAR = BAR-> Nuevo; # reemplazar una subrutina $ h = patch_package ('foo', 'sub1', 'reemplazar', sub {"qux"}); Foo :: sub1 (); # dice "QUX" UNDEF $ H; Foo :: sub1 (); # dice "Foo's sub1" # agregando una subrutina $ h = parch_package ('foo', 'sub3', 'agregar', sub {"qux"}); Foo :: sub3 (); # dice "QUX" UNDEF $ H; Foo :: sub3 (); # muere # Eliminación de una subrutina $ h = patch_package ('foo', 'sub2', 'eliminar'); Foo :: sub2 (); # Dies UNDEF $ H; Foo :: sub2 (); # dice "Foo's Sub2, Args =" # envolviendo una subrutina $ h = patch_package ('foo', 'sub2', 'wrap', sub {my $ ctx = shift; diga "envolver $ ctx -> {paquete} :: $ ctx -> {subname} "; $ ctx -> {orig} -> (@_);}); Foo :: sub2 (1,2,3); # dice "envolver foo :: sub2" entonces "el sub2 de foo, args = 1,2,3" UNDEF $ H; Foo :: sub2 (1,2,3); # dice "Foo's Sub2, Args = 1,2,3" # parches de apilamiento (Nota: en realidad, se puede desarmar en orden aleatorio) My ($ H2, $ H3); $ H = PATCH_PACKAGE ('FOO', 'SUB1', 'Reemplazar', SUB {"QUX"}); Foo :: sub1 (); # dice "QUX" $ H2 = patch_package ('foo', 'sub1', 'eliminar'); Foo :: sub1 (); # muere $ H3 = patch_package ('foo', 'sub1', 'reemplazar', sub {"quux"}); Foo :: sub1 (); # dice "Quux" UNDEF $ H3; Foo :: sub1 (); # Dies UNDEF $ H2; Foo :: sub1 (); # dice "QUX" UNDEF $ H; Foo :: sub1 (); # dice la página de inicio del producto "Sub1" de Foo


Monkey :: Parche :: Acción Software relacionado