更改文件扩展名(ods到csv)并获取每个文件的输出

时间:2012-09-12 17:43:29

标签: perl

我有许多ods格式的文件,我想通过perl代码将它们转换为csv格式。另外,我有一个perl代码,可以替换其他人的某些字符,但是对于每个文件,我必须将其名称粘贴,所以我希望能够同时处理一堆文件,并为每个文件输出一个随着修改。 到目前为止,我的代码看起来像这样:

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;


my @repertoire =glob('/home/test/Desktop');


# warn Dumper \@repertoire;
foreach my $fileName (@repertoire)
{
    open(IN, "<$fileName") or die "Can't read file '$fileName' [$!]\n";
    print "$fileName\n" ;
    @files=<IN>;
    close(IN);

    foreach $file (@files)
    {
     $file =~ /(\x{0625}\x{0646}\b.+?)\./[[    ]]/g)
     my $new=$file;
   print $new;
   print "\n";
   system("cp @repertoire/$file @repertoire/$new") # copy output of each file in  '/home/test/Desktop'
    }
}

1 个答案:

答案 0 :(得分:1)

除了在"调用中缺少结束glob之外,你应该在路径中添加一个通配符,这样glob实际上可以返回一个列表:

my @repertoire = glob '/home/test/Desktop/*.ods';

另外,尝试使用更“有说服力”的变量名称:@files建议一个文件列表,但实际上是一个文件行列表。

你究竟是什么问题?