sub rec_helper { my %state; local *recursive = sub { my( $arg ) = shift; ... if( ( $arg = $state{ $arg ) ) == ... ) { return recursive( $arg ); } else { return 0; } }; }