2012-09-12 53 views
0

我有很多ods格式的文件,我想通過perl代碼將它們轉換爲csv格式。另外,我有一個perl代碼,可以替代別人的某些字符,但是對於每個文件,我都必須將其名稱粘貼在一起,所以我希望能夠同時處理一堆文件,併爲每個文件輸出一個文件與修改。 到目前爲止,我的代碼如下所示:更改文件擴展名(ods到csv)並獲得每個文件的輸出

#!/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' 
    } 
} 
+1

這段代碼不會在'use strict'下編譯;' – Zaid

回答

1

除了缺少你的glob通話結束",你應該添加一個通配符路徑,使水珠才能真正返回一個列表:

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

此外,嘗試使用更多的「告訴」變量名稱:@files建議一個文件列表,但實際上是一個文件行的列表。

你的問題到底是什麼?

+0

我的代碼可以讀取文件的內容和正則表達式。我現在的問題是:如何在同一個目錄中打印每個文件的輸出。看到我的帖子的代碼,我重新編輯它。 – Funmatica