in Perl Wie schreibe ich in die Variable des Aufrufers ohne Verwendung von XS?

8

Ich schreibe Komponententests um alten Code und finde heraus, dass man die Methode " read() " von Apache2 :: Request kopieren muss %Vor%

Gibt es eine Möglichkeit, eine Funktion in Perl zu schreiben, um $buf zu füllen? Ich bin mir ziemlich sicher, dass der einzige Weg, das zu tun, von XS-Code mit einem ** ist, aber ich dachte, dass ich mindestens zuerst fragen würde.

Die Verwendung von Apache2 :: Request führt direkt dazu, daher mein Wunsch, es zu verspotten.

%Vor%     
Kevin G. 22.11.2016, 21:07
quelle

1 Antwort

9

In einer Perl-Subroutine oder -Methode werden Parameter über das Array @_ übergeben. Elemente in diesem Array sind Aliase für die Variablen in der aufrufenden Unterklasse.

Der übliche Weg zum Entpacken von @_ besteht darin, eine Kopie wie folgt zu erstellen:

%Vor%

Die Zuweisung zu $buf funktioniert in diesem Fall nicht, weil Sie nur Ihre Kopie der Variablen geändert haben. Wenn Sie jedoch den Wert in @_ direkt ändern, wirkt sich dies auf die Variable des Aufrufers aus:

%Vor%     
Grant McLean 22.11.2016, 21:21
quelle

Tags und Links