Blame examples/uplevel-demo.pl
|
Packit |
cde0b4 |
use strict;
|
|
Packit |
cde0b4 |
use warnings;
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
use Sub::Uplevel;
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
# subroutine A calls subroutine B with uplevel(), so when
|
|
Packit |
cde0b4 |
# subroutine B queries caller(), it gets main as the caller (just
|
|
Packit |
cde0b4 |
# like subroutine A) instead of getting subroutine A
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
sub sub_a {
|
|
Packit |
cde0b4 |
print "Entering Subroutine A\n";
|
|
Packit |
cde0b4 |
print "caller() says: ", join( ", ", (caller())[0 .. 2] ), "\n";
|
|
Packit |
cde0b4 |
print "Calling B with uplevel\n";
|
|
Packit |
cde0b4 |
uplevel 1, \&sub_;;
|
|
Packit |
cde0b4 |
}
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
sub sub_b {
|
|
Packit |
cde0b4 |
print "Entering Subroutine B\n";
|
|
Packit |
cde0b4 |
print "caller() says: ", join( ", ", (caller())[0 .. 2] ), "\n";
|
|
Packit |
cde0b4 |
}
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
sub_a();
|
|
Packit |
cde0b4 |
|