sub foo { my($qr, $replace) = @_; s/$qr/$replace->()/ge; } $_ = "This is a new dawn."; foo(qr/(\w+)/, sub { ucfirst $1 }); print;