1

我将 DOS 批处理文件中的两个文件名传递给 Perl 脚本。

我的 $InputFileName = $ARGV[0]; 我的 $OutputFileName = $ARGV[1];

只有输入文件物理存在,而输出文件必须由脚本创建。

open HANDLE, $OutputFileName or die $!;
open (HANDLE, ">$OutputFileName);
open HANDLE, ">$OutputFileName" or die $!;

这三个都失败了。

但是,以下工作正常。

open HANDLE, ">FileName.Txt" or die $!; 

什么是正确的语法?

编辑:错误消息是:在第 nn 行的 Batchfile.pl 中没有这样的文件或目录

4

2 回答 2

6

正确的方法是使用带有词法文件句柄的三参数形式open(将模式作为单独的参数)。也die没有资本D

像这样

open my $out, '>', $OutputFileName or die $!;

但是假设您die在实际代码中拼写正确,您的最后一个示例应该可以工作。

如果您提供的文件名路径不存在,那么您还需要创建中间目录。

骰子串会告诉你确切的问题。失败时您会收到什么消息?

于 2012-08-03T14:30:58.833 回答
0

代码:

$file_name = $ARGV[1];

open (OUTPUT "> $file_name") or error("unable to create or open $file_name");

print OUTPUT "hello world";

close(OUTPUT);

要执行的命令:

perl perl_file.pl data.txt

它会工作尝试

于 2012-08-03T15:25:21.010 回答