in reply to sub getting reference to itself : generic way
my $coderef = do { my $selfref; $selfref = sub { # use $selfref here for recursion }; }; [download]
Dave.