subroutine

___ tag123perl ___ Perl ist eine prozedurale, allgemeine Programmiersprache für allgemeine Zwecke, die für ihre native Unterstützung von regulären Ausdrücken und String-Parsing-Funktionen bekannt ist. Bitte verwenden Sie diesen Tag für Fragen zu Perl im Allgemeinen. Für Dinge, die mit der neuen (aber verwandten) Sprache "Perl 6" zu tun haben, verwenden Sie bitte das perl6-Tag. Verwenden Sie für reguläre Ausdrücke nach Perl-Art in anderen Sprachen das Regex-Tag oder, falls sie auf der PCRE-Bibliothek basieren, das PCRE-Tag. ___ tag123hash ___ Eine Hash-Funktion ist eine wohldefinierte Prozedur oder mathematische Funktion, die eine große Datenmenge in ein kleines Datum umwandelt, normalerweise eine ganze Zahl. Bei Fragen zum Twitter- und Facebook-Symbol verwenden Sie den Hashtag. Bei Fragen zu URLs und HTML-Ankern verwenden Sie die Fragment-ID. Bei Fragen zu Rubys Hash-Typ verwenden Sie Ruby-Hash. Eine Unterroutine (z. B. eine Prozedur oder ein Unterprogramm) ist ein Teil des Codes innerhalb eines größeren Programms, der eine bestimmte Aufgabe ausführt und relativ unabhängig von dem verbleibenden Code sein kann. Die Syntax vieler Programmiersprachen umfasst die Unterstützung für das Erstellen von eigenständigen Unterprogrammen sowie für das Aufrufen und Zurückkehren von ihnen. Sie sind in vielerlei Hinsicht ähnlich wie Funktionen, haben aber normalerweise Nebenwirkungen außerhalb des einfachen "Rückgabewerts", der die Rückgabe bewirkt. ___ qstntxt ___

Ich habe Probleme, die Hash-Referenzen zu verstehen und den Hash an Ort und Stelle zu ändern, anstatt ihn zurückzugeben. Ich möchte eine Subroutine schreiben, die einen Wert von Hash zurückgibt und auch den Hash ändert. Beim Codieren hatte ich einige Probleme. Also habe ich den folgenden grundlegenden Code geschrieben, um zu verstehen, wie man den Hash an Ort und Stelle verändert.

%Vor%

Die beobachtete Ausgabe ist:

%Vor%

Aus der Ausgabe folgerte ich, dass Änderungen an hashDeref die Daten in der Referenz nicht verändern. Ist mein Verständnis richtig? Gibt es eine Möglichkeit, die Hash-Variable an Ort und Stelle zu ändern, anstatt sie zurückzugeben.

    
___ answer10135771 ___

Dies macht eine (flache) Kopie von %code% :

%Vor%

Der Hash-Verweis %code% zeigt immer noch auf %code% aber %code% nicht, es ist nur eine Kopie. Wenn Sie die übergebene Hash-Ref in-Place ändern wollen, dann arbeiten Sie mit dem übergebenen Hash-Ref:

%Vor%

Damit bleiben Ihre Änderungen in %code% . Im Array-Fall erstellen Sie niemals eine Kopie, sondern de-referentieren Sie sie direkt:

%Vor%

und die Änderung in %code% wird in %code% angezeigt.

    
___ qstnhdr ___ Perl modifiziert die Hash-Referenz in der Subroutine ___
4
Antworten

Wie kann ich Perl-Subroutinen inline machen?

Ich lese gerade Code Complete 2 , und einer der erwähnten Punkte bezieht sich auf das Erstellen von Unterprogrammen sogar für Operationen, die zu einfach erscheinen, um ihre eigenen Subroutinen zu haben, und wie das hilfreich sein kann. Ic...
02.11.2010, 11:30
5
Antworten

Warum bekomme ich in meinem Perl-Code "Warnungen zu früh, um Prototypen zu überprüfen"?

Ich habe eine Perl-Datei wie folgt: %Vor% Kurz gesagt, f1 wird aufgerufen, bevor es definiert wird. Perl gibt also eine Warnung aus: "f1 hat zu früh aufgerufen, um den Prototyp zu überprüfen". Das gleiche gilt für f2 . Das einzige Unter...
12.11.2009, 05:00
5
Antworten

Wie kann ich zwischen einem Argument, das nicht übergeben wurde, und einem Argument, das mit einem falschen Wert übergeben wurde, unterscheiden?

Ich versuche herauszufinden, wie man in Perl am besten differenziert, wenn ein Argument nicht übergeben wurde und ein Argument als 0 übergeben wurde, da sie für mich andere Bedeutungen haben. (Normalerweise mag ich die Mehrdeutigkeit, aber in...
28.11.2011, 17:18
1
Antwort

Warum kann die Syntax '& name arg1 arg2 ...' nicht dazu verwendet werden, eine Perl-Subroutine aufzurufen?

für eine Perl-Subroutine, wenn ich 0 Argumente übergebe, kann ich 4 Formulare verwenden, um sie aufzurufen. Aber wenn es ein oder mehrere Argumente gibt, gibt es ein Formular, das ich nicht verwenden kann, siehe unten: %Vor% Die Fehlerausgab...
21.09.2016, 07:37
5
Antworten

Wie kann ich eine Perl-Subroutine erstellen, die mehr als einen Block akzeptiert?

Mit Prototypen können Sie eine Subroutine erstellen, die als ersten Parameter einen Codeblock akzeptiert: %Vor% Wie kann ich das Gleiche machen, aber mit mehr als einem Codeblock? Ich möchte Blöcke von Codes verwenden, nicht Variablen oder...
20.11.2014, 16:44
3
Antworten

Überprüfen Sie, ob eine Unterroutine in Perl als Lvalue oder als Rvalue verwendet wird

Ich schreibe einen Code, in dem ich eine Subroutine als lvalue und als rvalue benutze, um Datenbankwerte zu lesen und zu schreiben. Das Problem ist, ich möchte, dass es anders reagiert, je nachdem, ob es als L-Wert oder als R-Wert verwendet wird...
03.02.2016, 17:40
5
Antworten

Beenden einer Iteration einer Schleife aus einer Subroutine

Ich habe ein Programm mit einer while-Schleife, das mehrere Punkte hat, wo bestimmte Bedingungen erfordern, dass etwas unternommen wird und dann der Rest der Iteration übersprungen wird. Da dies immer derselbe Code sein wird, wollte ich ihn i...
12.09.2014, 12:16
2
Antworten

Ermitteln, wie eine Subroutine in Perl aufgerufen wird

Ich möchte herausfinden, wie ein Unterprogramm aufgerufen wird, damit es sich je nach Fall anders verhalten kann: %Vor% Ist das möglich?     
20.08.2013, 14:10