Variablen werden dann gelöscht, wenn keine Referenzen mehr auf ihnen liegen (genauer gesagt, wenn der Referenzzähler auf Null sinkt). Wenn du also keine Referenz auf deine Variable erzeugt hast, die z.B. an den aufrufenden Programmteil zurück gegeben wird, wird die Variable gelöscht und der beanspruchte Speicherbereich frei gegeben.
In jedem Fall wird aber bei einem erneuten Funktionsaufruf für jede per my() initialisierte Variable wieder ein neuer Speicherbereich reserviert. Sonst würde man Probleme mit Rekursionen bekommen (Subroutinen die sich selbst aufrufen).
Last edited: 2011-11-09 13:59:43 +0100 (CET)
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B