1. 程式人生 > >[經驗總結]Perl輸出csv檔案

[經驗總結]Perl輸出csv檔案

#!/usr/bin/perl -w

# File:getinfo.pl
# Creator: thinkhy
# Usage: ./getinfo path outputfile
# Date:2010年 03月 07日 星期日 15:23:18 CST

# 回覆樑同學的需求,寫了個Perl指令碼來實現功能:
#ubuntu系統:一個目錄下有100個左右dat和txt檔案,現需要你利用指令碼程式把該目錄下的每個檔案的大小和行數計算出來,並把結果顯示到一個excel檔案中,第一列為檔名,第二列為檔案大小,第三列為檔案中字元的行數!


$path= $ARGV[0];# 查詢的路徑
$output= $ARGV[1]; # 輸出的csv檔名(不包括副檔名)


if(!$path|| !$output) {
print"Usage: ./getinfo path outputfile/nHave fun!/n";
exit;
}

chomp($path);

# 副檔名
$ext1= "dat";
$ext2= "txt";

$cmd= "find $path-regex /".*//.//(//($ext1//)//|//($ext2//)//)/$/"-exec ls -1 /"{}/"//;";

@files= `$cmd`;

$i=0;
foreach(@files) {
$filename= $files[$i];
chomp($filename);

$cmd= "wc -l $filename|cut -d' ' -f1
";
$myline= `$cmd`;
chomp($myline);

$cmd= "stat -c /"%s/"$filename";
$mysize= `$cmd`;
chomp($mysize);

$files[$i] = "$filename,$mysize,$myline/n";
$i++;
}

$filename= "$output.csv";
open(LOG1, "> $filename")
ordie"Couldn't open $filenamefor writing: $!";
print"@files";
printLOG1"@files"; # 為什麼用@files輸出,除第一行外的行首都多了一個空格。