0

我有许多 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'
    }
}
4

1 回答 1

1

"除了在调用中缺少关闭之外glob,您还应该在路径中添加一个通配符,以便 glob 可以真正返回一个列表:

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

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

你的问题到底是什么?

于 2012-09-12T17:47:32.700 回答