|
Packit |
cde0b4 |
#!/usr/bin/perl
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
use strict;
|
|
Packit |
cde0b4 |
BEGIN { $^W = 1 }
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
use Test::More tests => 3;
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
BEGIN { use_ok('Sub::Uplevel'); }
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
sub get_caller_args {
|
|
Packit |
cde0b4 |
package DB;
|
|
Packit |
cde0b4 |
my @x = caller(1);
|
|
Packit |
cde0b4 |
return @DB::args;
|
|
Packit |
cde0b4 |
}
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
sub addition {
|
|
Packit |
cde0b4 |
my $x;
|
|
Packit |
cde0b4 |
$x += $_ for @_;
|
|
Packit |
cde0b4 |
return $x;
|
|
Packit |
cde0b4 |
}
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
sub wrap_addition {
|
|
Packit |
cde0b4 |
my @args = get_caller_args();
|
|
Packit |
cde0b4 |
my $sum = uplevel 1, \&addition, @_;
|
|
Packit |
cde0b4 |
return ($sum, @args);
|
|
Packit |
cde0b4 |
}
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
my ($sum, @args) = wrap_addition(1, 2, 3);
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
is($sum, 6, "wrapper returned value correct");
|
|
Packit |
cde0b4 |
is_deeply( \@args, [1, 2, 3], "wrapper returned args correct" );
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
|
|
Packit |
cde0b4 |
|