【问题标题】:What is perl symbol =~ [duplicate]什么是perl符号=~ [重复]
【发布时间】:2014-06-21 08:08:21
【问题描述】:

我正在使用别人的文本解析 perl 代码,我想做一些修改。有人能解释一下 =~ 符号在做什么吗?

$xmlfile =~ s/value="{(.*?)}"/'value="'.&subst($1).'"'/ge;

编辑:

所以我发现这个线程解释了正则表达式字符串的一部分。

http://www.perlmonks.org/?node_id=24640

【问题讨论】:

  • 你明白这行的其余部分吗?
  • 提示:您可以在此站点上搜索时髦的语法。使用搜索字符串[perl] "=~",您就会得到答案。
  • @Thilo 不是。我知道它正在做某种字符串匹配并在匹配的字符串上运行 subst() 函数,但我不太了解细节。解释将不胜感激。谢谢!

标签: regex perl shell scripting


【解决方案1】:

根据perlop

二进制“=~”将标量表达式绑定到模式匹配。某些操作默认搜索或修改字符串 $_。该运算符使这种操作适用于其他字符串。正确的参数是搜索模式、替换或音译。左边的参数是应该被搜索、替换或音译的,而不是默认的 $_。

【讨论】:

    【解决方案2】:

    默认情况下,匹配、替换或音译作用于$_;要将它们用于另一个变量,请使用绑定运算符=~。在您的情况下,将执行替换的变量是 $xmlfile

    【讨论】:

    • 那么 $xmlfile 是否传递到 $1 中?或者任何与 s/value="{(.*?)}" 匹配的东西都被传递到 $1 中?
    • $1(.*?) 捕获的内容,所以在花括号内找到的内容也是如此。 $xmlfile 是它将被查找并替换的字符串。
    猜你喜欢
    • 2011-01-17
    • 2016-10-25
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2013-05-12
    • 2016-06-17
    相关资源
    最近更新 更多