我需要传递一个正则表达式替换为一个变量:
sub proc { my $pattern = shift; my $txt = "foo baz"; $txt =~ $pattern; } my $pattern = 's/foo/bar/'; proc($pattern);
这当然不行。我试着评估替代:
eval("$txt =~ $pattern;");
但是也没有。我在这里错过了什么可怕的明显的事?
I need to pass a regex substitution as a variable
你做?为什么不通过代码引用?例:
sub modify { my($text,$code) = @_; $code->($text); return $text; } my $new_text = modify('foo baz',sub { $_[0] =~ s/foo/bar/ });
一般来说,当你想通过“某事做某事”到一个子程序(在你的问题的情况下是一个正则表达式替换),答案是通过一个代码的引用。 Higher Order Perl是一本关于这个话题的好书。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。