实际问题是我的输入是xml文件,只是示例输入看起来像这样
<student>
<number>24</number>
<education>bachelors</education>
<specialization>computers </specialization>
<address>
<name="michel"/>
<house_number="128"/>
<town=proddutoor/>
</address>
</student>
<student>
<number>23</number>
<education>ph.d.</education>
<specialization>physics </specialization>
<address>
<name="clar"/>
<house_number="12"/>
<town=kadapa/>
</address>
</student>
我需要提取类似这样的信息
$var1={
student=>[
{
'number'=>'24',
'education'=>'bachelors',
'specilization'=>'computers',
'address'=>'name=michel'
'house_number=128'
'town=proddutoor',
}
{
'number'=>'23',
'education'=>'ph.d.',
'specilization'=>'physics',
'address'=>'name=clar'
'house_number=12'
'town=kadapa',
}
我需要像这样打印我的哈希并将此哈希存储在新文件中。我在提取地址信息方面遇到了问题。我没有得到这样的地址标记元素。
答案 0 :(得分:1)
Backslash found where operator expected ... near "store_fd \"
就是错误
store_fd \%hash, $file1;
并且您尚未定义函数store_fd
。默认情况下,Storable不会导出store_fd
;你必须要求它。听起来你没有。
从您的一些评论中,您也可能拼错了函数名称。 Perl区分大小写; Store_fd
是与store_fd
完全独立的功能。
这是一个完整的例子:
#!/usr/bin/perl
use strict;
use warnings;
use Storable qw(store_fd);
my %hash = (key => 'value');
my $file1;
open $file1, '>', "result.stored" or die $!;
store_fd \%hash, $file1;
请注意,您不应使用Storable写入名为result.xml
的文件,因为Storable不会编写XML。它编写自己的格式。如果要编写XML,可以使用其他模块,如XML::Simple或XML::Writer。但是,在我给你一个很好的例子之前,你必须提供更多关于你希望你的XML看起来的细节。
答案 1 :(得分:0)
我建议您使用XML::Simple
库进行简单的XML操作(请记住,这取决于您处理和输出XML文件的确切需求)。
答案 2 :(得分:0)
您正在商店句子中使用文件名作为文件名。 根据文档,您可以传递名称:
store \%nums,'result.xml';
或:
store_fd \%nums, $file1;