Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 更改文件扩展名(ods为csv),并为每个文件获取输出_Perl - Fatal编程技术网

Perl 更改文件扩展名(ods为csv),并为每个文件获取输出

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

我有许多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'
    }
}
#/usr/bin/perl
严格使用;
使用警告;
使用数据::转储程序;
my@repertoire=glob('/home/test/Desktop');
#警告转储程序\@曲目;
foreach my$fileName(@repertoire)
{

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

my @repertoire = glob '/home/test/Desktop/*.ods';
另外,尝试使用一个更具“说服力”的变量名:
@files
表示一个文件列表,但实际上是一个文件行列表


你的问题是什么?

这段代码不会在
使用strict;
下编译;
我的代码可以读取文件的内容,并且正则表达式工作得很好。我现在的问题是:如何在同一目录中打印每个文件的输出。请参阅我文章中的代码,我重新编辑了它。