Thread mehrere Referenzen von arrays zurückgeben (26 answers)
Opened by Gustl at 2013-06-25 17:29

renee
 2013-06-26 06:37
#168582 #168582
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2013-06-25T20:34:19 hlubenow
Wenn Du das getrennt haben willst, mußt Du Referenzen auf die Arrays in der Funktion zurückgeben. Ebenso wie Du der Funktion Referenzen auf die Arrays übergeben hattest.


exakt

2013-06-25T20:34:19 hlubenow
Jetzt fragt sich nur noch, ob es möglich ist, Referenzen auf lokale Arrays aus einer Funktion zurückzugeben, auch wenn die Funktion dadurch beendet wird und die Arrays als lokale Variablen theoretisch gelöscht werden müßten. C würde bestimmt meckern, kann gut sein, daß Perl das macht.


Ja, das ist möglich. Perl arbeitet mit einem Referenzzähler für die "Garbage Collection". So lange noch irgendeine Variable auf den Inhalt verweist, wird dieser nicht gelöscht/freigegeben.

Stell Dir vor, Du bist in Deiner Wohnung, ihr sitzt mit dem Familienrat im Wohnzimmer. Es ist mit einem Familienmitglied ausgemacht, dass alle Schubladen am Abend geleert werden wenn keiner mehr den Inhalt braucht.
Du gehst in Dein Schlafzimmer und legst eine Zeitung in die oberste Schublade des Nachttischs. Du gehst aus der Wohnung raus ohne jemandem zu sagen, dass Du die Zeitung noch brauchst. Du bist die einzige "Referenz" auf diese Zeitung und diese gibt es durch das Verlassen der Wohnung nicht mehr.
Also wird am Abend die Schublade geleert. Weil dann keine Referenz auf die Zeitung mehr in der Wohnung ist.

Am nächsten Tag das gleiche Spiel. Nur diesmal sagst Du irgendjemandem (Person B) in der Familie "Die Zeitung in der obersten Schublade brauche ich noch" bevor Du die Wohnung verlässt. Dadurch gibt es zwei Referenzen auf die Zeitung: Dich und Person B. Du verlässt wieder die Wohnung, wodurch es in der Wohnung nur noch eine Referenz auf die Zeitung gibt: Person B. Am Abend werden wieder die Schubladen geleert, aber diesmal sagt Person B "Die Zeitung in der obersten Schublade wird noch gebraucht". Also bleibt die Zeitung an Ort und Stelle.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread mehrere Referenzen von arrays zurückgeben