sub filter (&@) { (wantarray ? sub { @_ } : sub { join '', @_ } )->( map { local $_ = $_; $_[0]->(); $_ } @_[1 .. $#_] ); } #### sub filter (&@) { my ($func, @out) = @_; $func->() for @out; wantarray ? @out : join '', @out; }