Utrecht has asked for the wisdom of the Perl Monks concerning the following question:

Hello, It may be e little bit a strange question, but I am trying to understand some code. The problem is that in this code two subs are calling each other. How is this possible, or am I interpreting things the wrong way. In the following code the  my $retval = $self->{'timespan'}->init({%{$li}}) is calling sub init, but this sub init is calling sub process again. Here is the necessary code to understand my question:
# for parse modules, sub init is sort of int.main() function sub init { my ( $self, $input ) = @_ ; $self->{'_input_'}->{'_type_'} = 'process'; my $li = $self->update_user_input( $input ); $self->process($li,$input) } # True process module, calls methods from Request::Request_Help. sub process { # The incoming array is split into $self, $li and $input my ($self, $li, $input) = @_ ; # $li is a hash-reference where the keys preforid, order_by and order +_sequence are designated # the values 1, time and ASC respectively. $li->{preforid} = 1; $li->{order_by} = "time"; $li->{order_sequence} = "ASC"; my $retval = $self->{'timespan'}->init({%{$li}}); my %stanet; if ($retval) { foreach my $sta (@$retval) { # Check if sufficient data is already in database [bud_reader]; if +not, process station. $li->{station} = $sta->{sta}; $li->{starttime} = $sta->{starttime}; $li->{endtime} = $sta->{endtime}; my $is_data = $self->{'bud_reader'}->init($li);
Hope anyone knows?