use strict;
use warnings;
use 5.010;
use feature qw(say);
sub inner_sub {
my $param = shift;
say "Start inner_sub1";
return ++$param;
}
sub outer_sub {
say "Outer Subroutine Start ...";
my $param = 0;
say "PARAM: $param";
$param = inner_sub($param);
say "PARAM: $param";
say "Outer Subroutine End.";
}
# Main
outer_sub();
exit(0);
__END__
[22:16:28.33] c:\test>junk41
Outer Subroutine Start ...
PARAM: 0
Start inner_sub1
PARAM: 1
Outer Subroutine End.
####
use strict;
use warnings;
use 5.010;
use feature qw(say);
sub outer_sub {
say "Outer Subroutine Start ...";
my $param = 0;
say "PARAM: $param";
$param = inner_sub($param);
say "PARAM: $param";
say "Outer Subroutine End.";
sub inner_sub {
my $param = shift;
say "Start inner_sub1";
return ++$param;
}
}
# Main
outer_sub();
inner_sub(); ### Visible here also!
exit(0);
__END__
[22:20:34.37] c:\test>junk41
Outer Subroutine Start ...
PARAM: 0
Start inner_sub1
PARAM: 1
Outer Subroutine End.
Start inner_sub1
####
use strict;
use warnings;
use 5.010;
use feature qw(say);
sub outer_sub {
my $scoped_var = 'fred'; ## closure
say "Outer Subroutine Start ...";
my $param = 0;
say "PARAM: $param";
$param = inner_sub($param);
say "PARAM: $param";
say "Outer Subroutine End.";
sub inner_sub {
my $param = shift;
say "Start inner_sub1";
say $scoped_var; ## closure
return ++$param;
}
}
# Main
outer_sub();
inner_sub();
exit(0);
__END__
[22:22:00.66] c:\test>junk41
Variable "$scoped_var" will not stay shared at C:\test\junk41.pl line 20.
Outer Subroutine Start ...
PARAM: 0
Start inner_sub1
fred
PARAM: 1
Outer Subroutine End.
Start inner_sub1
fred