Just to note that what looks like an unnecessary initialization may be necessary with goto.
MYLABEL:
my @a = ();
do_stuff;
goto MYLABEL;
Without the explicit initialization @a would have its existing contents.
Obviously this says nothing about the desirability of goto in general...