Affe :: Patch :: Aktion

Umhüllen / Hinzufügen / Ersetzen / Löschen von Subs von einem anderen Paket (mit Wiederherstellung)
Jetzt downloaden

Affe :: Patch :: Aktion Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Steven Haryanto
  • Website des Verlags:
  • http://search.cpan.org/~sharyanto/

Affe :: Patch :: Aktion Stichworte


Affe :: Patch :: Aktion Beschreibung

Monkey-Patching ist der Akt, ein Paket zur Laufzeit zu modifizieren: Hinzufügen eines Unterprogramms / Verfahrens, ersetzen / löschen / umwickeln ein anderes usw. "} = sub {...}; # ein anderer Weg, kann von einem beliebigen Dateipaket-Ziel erfolgen; sub sub2 {...} # löschen Sie ein Unterprogramm undef * {"target :: sub3"}; Affe :: Patch :: Action ist ein Perl-Modul, das die Dinge noch einfacher macht, indem Sie dabei helfen, einen Stapel von Patches anzuwenden und sie später zu verwenden In flexibler Reihenfolge.Synopsis verwenden Sie Affe :: Patch :: Action QW (patch_package); Paket foo; sub sub1 {sagen "foos sub1"} sub sub2 {Sag "foos sub2, args =", Join (",", @_)} sub meth1 {my $ self = shift; sagen Sie "Foo's meth1"} Paketleiste; unser @isa = qw (foo); Packung Main; mein $ h; # Griff-Objekt mein $ foo = foo-> neu; meine $ bar = bar-> neu; # Ersetzen einer Subroutine $ h = patch_package ('foo', 'sub1', 'ersetzen', sub {"qux"}); Foo :: sub1 (); # sagt "qux" undef $ h; Foo :: sub1 (); # sagt "Foo's sub1" #, fügte ein Subroutine $ h = patch_package ('foo', 'sub3', 'add', sub {"qux"}); Foo :: sub3 (); # sagt "qux" undef $ h; Foo :: sub3 (); # stirbt # Löschen einer Subroutine $ h = patch_package ('foo', 'sub2', 'löschen'); Foo :: sub2 (); # stirbt undef $ h; Foo :: sub2 (); # Sagt "Foo's sub2, args =" # wickeln Sie eine Subroutine $ h = patch_package ('foo', 'sub2', 'wrap', sub {My $ ctx = Schicht; Sagen Sie "Wrapping $ ctx -> {Paket}: $ CTX -> {Subname} "; $ ctx -> {orig} -> (@_);}); Foo :: sub2 (1,2,3); # sagt "wrapping foo :: sub2" dann "foos sub2, args = 1,2,3" undef $ h; Foo :: sub2 (1,2,3); # sagt "Foo's Sub2, Args = 1,2,3" # Stapeln von Patches (HINWEIS: Kann tatsächlich in zufälliger Reihenfolge nicht in Rechnung gestellt werden) mein ($ H2, $ H3); $ h = patch_package ('foo', 'sub1', 'ersetzen', sub {"qux"}); Foo :: sub1 (); # sagt "QUX" $ H2 = patch_package ('foo', 'sub1', 'löschen'); Foo :: sub1 (); # Die $ H3 = patch_package ('foo', 'sub1', 'ersetzen', sub {"quux"}); Foo :: sub1 (); # sagt "Quux" undef $ H3; Foo :: sub1 (); # stirbt undef $ h2; Foo :: sub1 (); # sagt "qux" undef $ h; Foo :: sub1 (); # sagt "foo's sub1" der Homepage des Produkts


Affe :: Patch :: Aktion Zugehörige Software