我应该如何缩短简单的替换子程序?

Tim*_*Tim 1 regex perl substitution perl5

sub my_sub {
    my $str = shift;
    $str =~ s/some/regex/;
    return $str;
}
Run Code Online (Sandbox Code Playgroud)

对于这样一个简单的子程序,五行似乎太长了.可以简化,例如不使用中间变量吗?

zb2*_*226 9

没有中间变量和一条线更短:

sub my_sub {
    $_[0] =~ s/some/regex/;
    return $_[0];
}
Run Code Online (Sandbox Code Playgroud)

编辑:正如@pavel所说,这将修改原始变量.

Perl 5.13.2开始,有非破坏性修饰符/r(供参考,参见perlop),它不会修改正则表达式操作的变量 - 这也允许抛弃另一条线:

sub my_sub {
    return $_[0] =~ s/some/regex/r;
}
Run Code Online (Sandbox Code Playgroud)