如何使用XML :: Twig显示祖先?

时间:2012-06-15 10:34:32

标签: perl perl-module xml-twig ancestor

我不知道如何显示一个元素的ancestors_or_。

以下是使用方法ancestors_or_self()时收到的错误消息: 如果没有xxxx

的包或对象引用,则无法调用方法“print”
#!/usr/bin/perl -w
use warnings;
use XML::Twig;

my $t= XML::Twig->new;
my $v= XML::Twig::Elt->new;

$v= $t->first_elt('[@id]');
$v->print;
print ("\n\n");
$v->ancestors_or_self->print;

感谢您对Perl XML :: Twig的帮助

2 个答案:

答案 0 :(得分:2)

那是因为ancestors_or_self返回一个列表,你不能调用列表方法。请改用:

$_->print for $v->ancestors_or_self; 

答案 1 :(得分:2)

ancestors_or_self会返回一个列表 - 假设您需要该元素的路径,您还希望->path不是->print。当->path 返回路径时,您必须执行以下操作:

#!/usr/bin/perl -w
use warnings;
use XML::Twig;

my $t= XML::Twig->new;
my $v= XML::Twig::Elt->new;

$v= $t->first_elt('[@id]');
print $v->path . "\n";
print ("\n\n");
print $_->path . "\n" foreach $v->ancestors_or_self;