package BlessedSub; use base 'Exporter'; @EXPORT = qw/blessed_sub/; ## prototyped for convenience sub blessed_sub(&) { my $anonymous_sub = shift; bless $anonymous_sub, __PACKAGE__; } sub filter { my ($self, @items) = @_; ## check if all the items return succesfully for (@items) { return 0 unless $self->($_); } return 1; } #### my $obj = blessed_sub { $_[0] =~ /foo/ }; die unless $obj->filter(qw/foobar foobaz bazfoo barbaz barfoo/); #### my $obj = blessed_sub { /foo/ }; ## now uses $_, not @_ die unless $obj->filter(qw/foobar foobaz bazfoo barbaz barfoo/);