如何使用 perl 将 xml 路径包含到哈希中
我的目录中有一些 xml 文件,因此我在该目录中搜索所需的 xml 文件,并使用下面的脚本将 xml 数据存储在哈希数据结构中。但我的问题是我需要将每个 xml 文件的文件路径保存在哈希中但是任何人都可以帮助我如何在哈希数据中保存文件路径 我使用上面的脚本编写了这样的脚本
#!/usr/bin/perl
use warnings;
use strict;
use XML::Simple;
use Carp;
use File::Find;
use File::Spec::Functions qw( canonpath );
use Data::Dumper;
my @ARGV ="C:/Main/work"; die "Need directories\n" unless @ARGV;
find(
sub {
return unless ( /(_service\.xml)$/ and -f );
Hash_information();
return;
},
@ARGV
);
sub Hash_information {
my $path= $_;
my $xml = new XML::Simple;
my $data = $xml->XMLin("$path", ForceArray => [
'Service','SystemReaction','SW','HW','Component' , 'BM'],
KeyAttr=>{Service=>'Id'} );
print Dumper ($data);
return;
}
,我从文件夹中获取所有服务 xml 文件并使用 XML::Simple 存储在哈希数据结构中。现在我想将每个xml文件的文件路径保存在哈希数据结构中。任何人都可以帮助我吗?
提前致谢
I have some xml files in a directory , so I am searching required xml files in that directory and storing xml data in a hash data structure using below script. But my problem is I need to save the file path of each xml file in the hash But Can any one help me how to save file path in hash data
I written script like this
#!/usr/bin/perl
use warnings;
use strict;
use XML::Simple;
use Carp;
use File::Find;
use File::Spec::Functions qw( canonpath );
use Data::Dumper;
my @ARGV ="C:/Main/work"; die "Need directories\n" unless @ARGV;
find(
sub {
return unless ( /(_service\.xml)$/ and -f );
Hash_information();
return;
},
@ARGV
);
sub Hash_information {
my $path= $_;
my $xml = new XML::Simple;
my $data = $xml->XMLin("$path", ForceArray => [
'Service','SystemReaction','SW','HW','Component' , 'BM'],
KeyAttr=>{Service=>'Id'} );
print Dumper ($data);
return;
}
using above script I am getting all service xml files form folder and using XML::Simple storing in a hash data structure. Now I want to save file path of each xml file in the hash data structure. Can any one help me.
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 File::Find 的子例程中,$File::Find::name 是完整路径名。将其传递给您的 Hash_information 子例程。
In the subroutine for File::Find, $File::Find::name is the complete path name. Pass that to your Hash_information subroutine.