das ich habe Probleme mit einer Funktion, die ich schrieb ...Warum funktioniert meine Perl-Funktion nicht?
sub TemplateReplace
{
my($regex, $replacement, $text) = @_;
$text =~ s/($regex)/($replacement)/gs;
}
my $text = "This is a test.";
TemplateReplace("test", "banana", $text);
Aber es funktioniert nicht. Ich dachte, Argumente wurden per Verweis in Perl gesendet. Wird die Zeile my($regex, $replacement, $text) = @_;
dann kopiert? Wie behebe ich das?
Bevor wir herausfinden, wie es zu beheben ist, müssen Sie erklären, was Sie wollen. Möchten Sie die ursprüngliche Variable ändern oder eine neue Zeichenfolge abrufen, die die Änderungen anzeigt? Es ist der Unterschied zwischen Chas. und Adnans Antworten. :) –
Wenn Sie versuchen, das übergebene Argument magisch zu bearbeiten, dann ist die Antwort von Chas diejenige, nach der Sie suchen. Wenn du lieber den "richtigen Weg" machst, folge Adnans. Das Ändern von Variablen aus der Ferne ist im Allgemeinen verpönt, es erhöht normalerweise nur die Komplexität mit wenig Nutzen. – Danny