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ことに加えて、パスにワイルドカードを追加して、グロブが実際にリストを返すことができるようにする必要があります。

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

また、より「わかりやすい」変数名を使用するようにしてください。@filesファイルのリストを示唆していますが、実際にはファイルの行のリストです。

あなたの質問は正確には何ですか?

于 2012-09-12T17:47:32.700 に答える