如何将结果哈希存储到新文件中

时间:2011-10-25 07:56:35

标签: xml perl

实际问题是我的输入是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',
                   }

我需要像这样打印我的哈希并将此哈希存储在新文件中。我在提取地址信息方面遇到了问题。我没有得到这样的地址标记元素。

3 个答案:

答案 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::SimpleXML::Writer。但是,在我给你一个很好的例子之前,你必须提供更多关于你希望你的XML看起来的细节。

答案 1 :(得分:0)

我建议您使用XML::Simple库进行简单的XML操作(请记住,这取决于您处理和输出XML文件的确切需求)。

答案 2 :(得分:0)

您正在商店句子中使用文件名作为文件名。 根据文档,您可以传递名称:

store \%nums,'result.xml';

或:

store_fd \%nums, $file1;