我有许多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'
}
}
答案 0 :(得分:1)
除了在"
调用中缺少结束glob
之外,你应该在路径中添加一个通配符,这样glob实际上可以返回一个列表:
my @repertoire = glob '/home/test/Desktop/*.ods';
另外,尝试使用更“有说服力”的变量名称:@files
建议一个文件列表,但实际上是一个文件行列表。
你究竟是什么问题?