2

我有一个工作 perl 脚本,它打开一个输入文件,解析它,然后打开一个输出文件并将解析的输出写入它。现在我希望能够将文件拖放为脚本。应该读取该文件,写入的文件应该具有相同的名称但扩展名不同,并存储在删除文件的同一目录(!)中。脚本本身使用 PAR:Packer 转换为 exe。我正在使用 Windows 7 和最新版本的 Strawbery Perl (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 回答