当我在foreach循环中使用“load_xml”时,是否需要或者我应该使用的等效“close”cmd?我一直在谷歌上搜索,但我还没找到。
对标有“< - HERE too”的行进行同样的关注?我每次都在创建一个“新”模式。我不必担心我正在创建这些“新”或“加载”实例,但我不是在关闭它们吗?
注意:每个xml_file都不同,因此有一个不同的xsd文件,因此循环的原因。
my $parser = XML::LibXML->new({keep_blanks=>(0)});
foreach my $xml_file (@xml_file_list)
{
my $dom = $parser->load_xml(location => $xml_file) or die;
my $schema_file = $xsd_path."/".$xsd_file;
my $schema = XML::LibXML::Schema->new(location => $schema_file); #<--HERE too
eval { $schema->validate($dom)};
if ($@)
{
print "File failed validation: $@\n";
}
}
答案 0 :(得分:2)
$ dom与my
一起声明。因此,一旦变量超出范围,对象就会被销毁(除非有对它的引用)。
如果你想在范围结束之前摆脱对象,你甚至可以尝试undef $dom
。