1

如何使用 XML::LibXML 模块的 findnodes() 函数在 XPath 表达式中使用 Perl 变量?这就是我得到的:

my $variable = 1;
foreach my $node1 ($doc->findnodes('par/par1/par2[@id = $variable]'))
{

}

但这似乎不起作用。谢谢。

4

2 回答 2

5

您不能使用单引号进行插值,必须使用双引号或其他可以插入的引用形式

"par/par1/par2[\@id = $variable]"

但是,我假设这@id不是一个变量,所以你必须逃避它的印记,否则它也将被视为一个变量。如果你使用use strict——你总是应该——这将导致编译器错误。

可能会提到的其他引用形式

  • qq(), 这和双引号完全一样
  • Heredocs
于 2013-10-15T09:53:49.203 回答
1

编辑:向 TLP 致敬

哈里茨,

将 XPath 表达式周围的单引号更改为双引号是否有效?

我来这里是为了寻找完全相同的解决方案,并在我的一个脚本中进行了尝试,我认为它与双引号而不是单引号的工作原理相同,但我很想知道它是否也适合你。

my $variable = 1;
foreach my $node1 ($doc->findnodes("par/par1/par2[\@id = $variable]"))
{

}
于 2017-05-08T08:39:19.420 回答