Monkey :: Patch :: Actie

Subs instellen / Vervangen / Verwijderen / Verwijderen (met restore)
Download nu

Monkey :: Patch :: Actie Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Steven Haryanto
  • Uitgever website:
  • http://search.cpan.org/~sharyanto/

Monkey :: Patch :: Actie Tags


Monkey :: Patch :: Actie Beschrijving

Monkey-patching is de daad van het wijzigen van een pakket bij runtime: het toevoegen van een subroutine / methode, het vervangen / verwijderen / wikkelen van een ander, enz. Perl maakt het gemakkelijk om dat te doen, bijvoorbeeld: # Voeg een subroutine * {"Doel: sub1 "} = sub {...}; # Een andere manier, kan worden gedaan vanuit doel van het bestandspakket; Sub sub2 {...} # Verwijder een subroutine undef * {"Doel :: sub3"}; Monkey :: Patch :: Action is een Perl-module die dingen nog eenvoudiger maakt door u te helpen bij het later een stapel patches toe te passen In flexibele volgorde. Synopsis Gebruik Monkey :: Patch :: Action QW (Patch_package); pakket foo; Sub sub1 {zeg "foo's sub1"} sub sub2 {zeg "foo's sub2, args =", join (",", @_)} sub meth1 {mijn $ self = shift; Zeg "FOO's meth1"} pakketbalk; onze @isa = qw (foo); pakket main; mijn $ H; # handvat object mijn $ foo = foo-> nieuw; mijn $ bar = bar-> nieuw; # Een subroutine $ H = patch_package ('foo', 'sub1', 'vervangen ", sub {" qux "}); Foo :: sub1 (); # Zegt "Qux" undef $ H; Foo :: sub1 (); # Zegt "Foo's sub1" # toevoegen van een subroutine $ H = patch_package ('foo', 'sub3', 'toevoegen', sub {"qux"}); Foo :: sub3 (); # Zegt "Qux" undef $ H; Foo :: sub3 (); # sterft # een subroutine verwijderen $ H = patch_package ('foo', 'sub2', 'Verwijderen'); Foo :: sub2 (); # sterft undef $ h; Foo :: sub2 (); # Zegt "Foo's sub2, args =" # inpakken van een subroutine $ h = patch_package ('foo', 'sub2', 'wrap', sub {mijn $ ctx = shift; zeg "wikkelen $ CTX -> {pakket} :: $ CTX -> {subnaam} "; $ CTX -> {orig} -> (@_);}); Foo :: sub2 (1,2,3); # Zegt "Wikkelen foo :: sub2" en vervolgens "foo's sub2, args = 1,2,3" undef $ h; Foo :: sub2 (1,2,3); # Zegt "Foo's sub2, args = 1,2,3" # stapelen patches (opmerking: kan daadwerkelijk in willekeurige volgorde zijn) mijn ($ H2, $ H3); $ h = patch_package ('foo', 'sub1', 'vervanging', sub {"qux"}); Foo :: sub1 (); # Zegt "QUX" $ H2 = PATCH_PACKAGE ('FOO', 'SUB1', 'DELETE'); Foo :: sub1 (); # DIES $ H3 = PATCH_PACKAGE ('FOO', 'sub1', 'Vervangen', sub {"quux"}); Foo :: sub1 (); # Zegt "Quux" undef $ H3; Foo :: sub1 (); # sterft undef $ h2; Foo :: sub1 (); # Zegt "Qux" undef $ H; Foo :: sub1 (); # Zegt "Foo's sub1" startpagina


Monkey :: Patch :: Actie Gerelateerde software