2

私は、入力ファイルを開き、それを解析してから、出力ファイルを開き、解析された出力をそれに書き込む、動作するperlスクリプトを持っています。ここで、ファイルをドロップしてスクリプトにできるようにしたいと思います。ファイルを読み取り、書き込みファイルの名前を同じにし、拡張子を変えて、ファイルのドロップ元と同じディレクトリ(!)に保存する必要があります。スクリプト自体は、PAR:Packerを使用してexeに変換されます。Windows7と最新バージョンのStrawberyPerl(5.16.2)を使用しています

ファイル名を確認する方法は次のとおりです。

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を使用したくありません。また、出力ファイルを入力ファイルと同じディレクトリに配置したいと思います。コードを変更するにはどうすればよいですか?

4

1 に答える 1

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");
于 2012-11-30T10:38:22.020 に答える