sub purse { my $balance = shift; my $sub; $sub = sub { my ($who, $qty) = @_; print "Paying $who $qty\n" if ($balance - $qty) >= 0; undef $sub if $balance <= 0 }; } { my $payment = purse(10); for ([qw/mom 7/], [qw/dad 3/], [qw/myself 1/]) { $payment->(@$_) if $payment; } }