Monkey :: Patch :: Azione

Avvolgi / aggiungi / Sostituisci / Elimina sub di altro pacchetto (con ripristino)
Scarica ora

Monkey :: Patch :: Azione Classifica e riepilogo

Annuncio pubblicitario

  • Rating:
  • Licenza:
  • Perl Artistic License
  • Prezzo:
  • FREE
  • Nome editore:
  • Steven Haryanto
  • Sito web dell'editore:
  • http://search.cpan.org/~sharyanto/

Monkey :: Patch :: Azione Tag


Monkey :: Patch :: Azione Descrizione

Monkey-Patching è l'atto di modificare un pacchetto in fase di esecuzione: aggiunta di un subroutine / metodo, sostituzione / eliminazione / avvolgimento di un altro, ecc. Perl rende facile farlo, ad esempio: # Aggiungi una subroutine * {"Target :: sub1 "} = sub {...}; # Un altro modo, può essere fatto da qualsiasi obiettivo del pacchetto di file; Sub sub2 {...} # Elimina una subroutine undef * {"bersaglio :: sub3"}; monkey :: patch :: Azione è un modulo perl che rende le cose ancora più facili aiutandoti ad applicare una pila di patch e senza appoggio più tardi in ordine flessibile.synopsis usa la scimmia :: patch :: azione qw (patch_package); pacchetto foo; Sub sub1 {Dì "Foo's Sub1"} sub Sub2 {Dì "Foo's Sub2, Args =", Join (",", @_)} sub Meth1 {My $ Self = Shift; Dì la barra dei pacchetti di "Foo Meth1"}; il nostro @isa = qw (foo); pacchetto principale; My $ h; # maniglia oggetto mio $ foo = foo-> nuovo; My $ bar = bar-> nuovo; # Sostituzione di una subroutine $ h = patch_package ('foo', 'sub1', 'sostituisci', sub {"qux"}); Foo :: sub1 (); # dice "qux" undef $ h; Foo :: sub1 (); # dice "Foo's Sub1" # Aggiunta di una subroutine $ h = patch_package ('foo', 'sub3', 'Aggiungi', sub {"qux"}); Foo :: SUB3 (); # dice "qux" undef $ h; Foo :: SUB3 (); # Dies # Eliminazione di una subroutine $ h = patch_package ('foo', 'sub2', 'delete'); Foo :: sub2 (); # matrici nondf $ h; Foo :: sub2 (); # dice "foo's sub2, args =" # wrapping a subroutine $ h = patch_package ('foo', 'sub2', 'wrap', sub {my $ ctx = shift; dire "wrapping $ ctx -> {pacchetto} :: $ ctx -> {subname} "; $ ctx -> {orig} -> (@_);}); Foo :: SUB2 (1,2,3); # dice "Wrapping Foo :: SUB2" quindi "Foo's Sub2, Args = 1,2,3" Undef $ h; Foo :: SUB2 (1,2,3); # dice "Foo's Sub2, Args = 1,2,3" # Patch impilabili (Nota: può effettivamente essere non applicato in ordine casuale) MY ($ H2, $ H3); $ h = patch_package ('foo', 'sub1', 'sostituisci', sub {"qux"}); Foo :: sub1 (); # dice "qux" $ h2 = patch_package ('foo', 'sub1', 'delete'); Foo :: sub1 (); # $ Stampi h3 = patch_package ( 'foo', 'sub1', 'replace', sub { "quux"}); Foo :: sub1 (); # Dice "quux" undef $ h3; Foo :: sub1 (); # Stampi undef $ h2; Foo :: sub1 (); # Dice "qux" undef $ h; Foo :: sub1 (); # Dice "sub1 di Foo" home page del prodotto


Monkey :: Patch :: Azione Software correlato