加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将正则表达式替换作为Perl中的变量?

发布时间:2020-12-14 06:36:28 所属栏目:百科 来源:网络整理
导读:我需要传递一个正则表达式替换为一个变量: sub proc { my $pattern = shift; my $txt = "foo baz"; $txt =~ $pattern;}my $pattern = 's/foo/bar/';proc($pattern); 这当然不行。我试着评估替代: eval("$txt =~ $pattern;"); 但是也没有。我在这里错过了什
我需要传递一个正则表达式替换为一个变量:
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是一本关于这个话题的好书。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读