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