2012-11-29 78 views
2

我有一個工作的perl腳本,它打開一個輸入文件,解析它,然後打開一個輸出文件並寫入解析的輸出到它。現在我希望能夠將文件放到腳本中。該文件應該被讀取,並且書面文件應該具有不同擴展名的相同名稱並存儲在文件從其中刪除的相同目錄(!)中。腳本本身使用PAR:Packer轉換爲exe文件。我使用的是Windows 7和最新版本的Perl Strawbery(5.16.2)如何將文件放到perl腳本中解析並將輸出文件寫入同一目錄

我檢查文件名的方法是:

unless ($#ARGV == -1) { 
    $filename = $ARGV[0]; 
} 

我這是怎麼打開輸入文件:

open (my $mel, "<", $filename) or die "\nFile does not exist.\n"; 

這是我怎麼打開輸出文件:

open (my $out, ">", 'majorEventLog.Prs') or die "Can't open output file: $!"; 

我所面臨的問題是輸入文件根本不認可。其次,我需要做什麼才能在同一個目錄中創建輸出文件?當我創建一個cmd文件時,輸入文件可以工作,但它將輸出文件存儲在我的主目錄中。但我不喜歡使用CMD,並且我還希望將輸出文件放在與輸入文件相同的目錄中。我如何需要更改我的代碼?

+1

是否死亡說'文件不exist'?同時發佈完整的代碼,至少是你在文件句柄中寫入的部分(用於輸出文件)。 –

+1

開放式操作可能會失敗還有其他原因。這將是更多的信息:打開$ mel,'<',$ filename或死「打開$ filename:$!」; – ddoxey

回答

1

使用此得到輸入文件名:

my $filename = shift; 
die ("Please provide input file\n") unless defined $filename; 
die ("$filename does not exist\n") unless -f $filename; 

使用此生成的輸出文件在同一目錄下:

use File::Basename; 
use File::Spec; 

my ($name, $directory, $suffix) = fileparse($filename); 
my $outfile = File::Spec->catfile($directory, "output.txt"); 
相關問題