处理目录中的所有文件

时间:2015-04-24 19:29:52

标签: perl

我是新来的,我需要帮助,我不是一个优秀的程序员,但我在网页(Java)的开发中更多。 malheuereusement我还没有找到这个领域的实习职位,但我发现在其他领域没有其他选择,我可以接受,不幸的是我的培训大师不是程序员,他是系统的主管,它甚至我让他发现了perl中的一些东西。进来我的问题: 我能够实现一个解析file-xml的perl脚本,但为此我必须去我的编辑器perl写下我所有文件的名字,不幸的是我有成千上万的文件,xml,我喜欢这段代码必须能够找到位于文件夹中的all-xml文件和以下性质解析器,我没有任何时间开始编写我的编辑器数千个文件的名称。那是我的问题。 如果我拥有4或6个文件,我已经在我的编辑器中编写了名称,我将立即收到结果

我可以用某种方式总结:

保存在PC上的文件夹中的

1-(提取XML Perl脚本) 2- Perl-script搜索文件夹中的XML文件 3- perl-script进程(解析)fichiers_xml 4- perl-script返回解析文本文件的结果

这是Ipaserfür实现的代码,它运行良好

use strict;
use warnings;
use XML::Twig;
use File::Find;

my $file1 = shift or die 'No file1';
my @files = @ARGV or die 'No files';

my $FileResult = 'result.csv';
open( my $FhResult, '>', $FileResult )or die ("Unable to open file $FileResult\n$!");
my $twig1= XML::Twig->new(   
        twig_handlers => {   
                'Parameter' => sub {

                        my $attr_name = $_->{'att'}->{'name'} // 'fault';
                        print $FhResult $attr_name . ",";
                },
        },
);

print $FhResult( (split('_', $file1,2))[0] . ',' );
$twig1->parsefile($file1);

for my $file (@files) {
    my $twig2 = XML::Twig->new(
        twig_handlers => {
            'Parameter' => sub {
                my $attr_value = $_->{'att'}->{'value'} // 'fault';
                print $FhResult $attr_value . ",";
            },
        },
    );

    print $FhResult ( split( '_', "\n$file", 2 ) )[0] . ',';

    $twig2->parsefile($file);
}

close $FhResult;

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您需要一种方法来查找目录中的所有XML文件。

以这种方式:

 chdir $the_directory_we_want_to_process;
 foreach my $xml_file ( glob('*.xml') ) {
   process_the_file($xml_file);
 }

glob('*.xml')函数执行shell模式匹配,以生成当前目录中以' .xml'

结尾的所有文件的名称列表

这是另一个:

opendir(DH, $the_directory_we_want_to_process)
while ( $file = readdir(DH) ) {
   next unless /\.xml$/;
   process_the_file($xml_file); 
}
closedir(DH);