По аналогии с предложением bvr вы можете использовать дополнительную ссылку для замены s///
. Преимущество этого заключается в том, что он прекомпилируется (как под-ссылка, так и подстановка), а не перекомпилируется для каждого совпадения. В большинстве случаев это будет быстрее и с большей вероятностью обнаружит любые ошибки во время компиляции.
my $foo = qr/(\S+) (\X+)/;
my $bar = sub { $2 }; # or my $bar = \&some_replace_function;
$line =~ s/$foo/$bar->()/ge;