in reply to how to return from a goto ?

No, both programs do not work fine, as you would realize if you added 'use strict;' and 'use warnings;' to your programs.

Also 'retn' is just a bareword (in void context) and does nothing.

'goto' has no way to return, perhaps you are confusing it with the Basic command 'GOSUB' ?