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