use warnings; use strict; use Data::Dumper; use Wrap::Sub; my $ws = Wrap::Sub->new( pre => sub { print "\n$Wrap::Sub::name\n"; print "args:\n"; print Dumper \@_; }, post => sub { print "return:\n"; print Dumper $_[1][0]; } ); my @wrapped; for (qw(foo bar)){ push @wrapped, $ws->wrap($_); } foo(a => 1, b => 2); bar(10); sub foo { my %hash = @_; return [1, 2, 3]; } sub bar { my $x = shift; return $x ** 2; }