Perl:无法打开文件名作为参数传递的文件

Raj*_*Raj 1 perl filenames parameter-passing

我将两个文件名从DOS批处理文件传递给Perl脚本.

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

只有输入文件在物理上存在,而Outputfile必须由脚本创建.

open HANDLE, $OutputFileName or die $!;
open (HANDLE, ">$OutputFileName);
open HANDLE, ">$OutputFileName" or die $!;
Run Code Online (Sandbox Code Playgroud)

这三个都失败了.

但是以下工作正常.

open HANDLE, ">FileName.Txt" or die $!; 
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

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

Bor*_*din 6

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

像这样

open my $out, '>', $OutputFileName or die $!;
Run Code Online (Sandbox Code Playgroud)

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

如果要提供不存在的文件名路径,则还需要创建中间目录.

模具字符串会告诉你确切的问题.当失败时你会得到什么信息?