{
my %state;
sub recursive {
my $arg = shift;
...
if( ( $arg = $state{ $arg } ) == ... ) {
return recursive( $arg );
else {
return 0
}
}
}
####
sub rec_helper {
my %state;
my $recursive;
$recursive = sub {
my( $arg ) = shift;
...
if( ( $arg = $state{ $arg ) ) == ... ) {
return $recursive->( $arg );
}
else {
return 0;
}
};
}
####
sub recursive {
my( $state, $arg ) = @_;
...
if( ( $arg = $state->{ $arg } ) == ... ) {
return recursive( $state, $arg );
}
else {
return 0;
}
}
sub rec_helper{
my $arg = shift;
my %state;
return recursive( \%state, $arg );
}