Perl 更改文件扩展名(ods为csv),并为每个文件获取输出
我有许多ods格式的文件,我想用perl代码将它们转换成csv格式。另外,我有一个perl代码,可以用其他字符替换某些字符,但是对于每个文件,我必须将其名称记录下来,因此我希望能够同时处理一组文件,并对每个文件进行修改,从而获得输出。 到目前为止,我的代码如下所示:Perl 更改文件扩展名(ods为csv),并为每个文件获取输出,perl,Perl,我有许多ods格式的文件,我想用perl代码将它们转换成csv格式。另外,我有一个perl代码,可以用其他字符替换某些字符,但是对于每个文件,我必须将其名称记录下来,因此我希望能够同时处理一组文件,并对每个文件进行修改,从而获得输出。 到目前为止,我的代码如下所示: #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @repertoire =glob('/home/test/Desktop'); # warn
#!/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'
}
}
#/usr/bin/perl
严格使用;
使用警告;
使用数据::转储程序;
my@repertoire=glob('/home/test/Desktop');
#警告转储程序\@曲目;
foreach my$fileName(@repertoire)
{
打开(在“中,除了在glob
调用中缺少关闭”
之外,还应该在路径中添加一个通配符,以便glob可以真正返回一个列表:
my @repertoire = glob '/home/test/Desktop/*.ods';
另外,尝试使用一个更具“说服力”的变量名:@files
表示一个文件列表,但实际上是一个文件行列表
你的问题是什么?这段代码不会在使用strict;
下编译;
我的代码可以读取文件的内容,并且正则表达式工作得很好。我现在的问题是:如何在同一目录中打印每个文件的输出。请参阅我文章中的代码,我重新编辑了它。