Как включить XML-путь в хэш с помощью Perl - PullRequest
1 голос
/ 14 декабря 2011

У меня есть несколько 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-файла в структуре хэш-данных. Может ли кто-нибудь помочь мне.
Заранее спасибо

1 Ответ

5 голосов
/ 14 декабря 2011

В подпрограмме для File :: Find, $ File :: Find :: name - это полное имя пути.Передайте это вашей подпрограмме Hash_information.

...
find(
    sub {
        return unless ( /(_service\.xml)$/ and -f );
        Hash_information($File::Find::name);
...
sub Hash_information {
my ($path) = @_;
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...