Frage

Ich bin Affe, der ein Paket Patchen eine Technik am Anfang " Wie kann ich eine Instanz Methode in Perl monkey-Patch? ". Das Problem, das ich laufen in ist, dass die ursprüngliche Unterprogramm eine Paketebene my Variable verwendet, die das gepatchte Unterprogramm keinen Zugang zu haben scheint, entweder durch vollständige Pfadangabe oder implizite Verwendung.

Gibt es eine Möglichkeit auf den Daten auf diese Weise für den Einsatz in dem geflickten Unterprogramm scoped zu bekommen?

War es hilfreich?

Lösung

Sie können Lexikale mit dem PadWalker Modul. Das Böse, aber es funktioniert.

Andere Tipps

Nein. Das, was Sie irren sich in ist, dass sie nicht Paket scoped. Eine lexikalische Variable ist per Definition beschränkt auf seine lexikalischen Umfang, in anderen Worten, der Block ist es in.

Lexikale (dh: erklärt mit ‚mein‘) sind nicht sichtbar außerhalb der lexikalischen Gültigkeitsbereich (Datei oder Block), in dem sie deklariert sind. Das ist der springende Punkt bei den lexikalischen Variablen.

Wenn es ein Unterprogramm / Methode, die in dem gleichen Umfang wie die lexikalische var ist, dann kann es den Wert der lexikalischen zurückzukehren und indirekten Zugang zum var von außerhalb ihres Anwendungsbereichs erlauben kann.

Es gibt nicht so etwas wie eine ‚vollständige Pfadangabe‘ für lexikalische Variablen. Das ist für Paketvariablen. Wenn die var mit ‚unser‘ statt ‚meinen‘ erklärt wurde, man kann das tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top