我将两个文件名从DOS批处理文件传递给Perl脚本。
my $ InputFileName = $ ARGV [0]; 我的$ OutputFileName = $ ARGV [1];
只有输入文件在物理上存在,而Outputfile必须由脚本创建。
open HANDLE, $OutputFileName or die $!;
open (HANDLE, ">$OutputFileName);
open HANDLE, ">$OutputFileName" or die $!;
这三个都失败了。
然而以下工作正常。
open HANDLE, ">FileName.Txt" or die $!;
正确的语法是什么?
编辑:错误消息是:在行nn
的Batchfile.pl中没有这样的文件或目录答案 0 :(得分:6)
正确的方法是使用open
的三参数形式(模式作为单独的参数)和词法文件句柄。 die
也没有大写D
。
喜欢这个
open my $out, '>', $OutputFileName or die $!;
但是假设您在实际代码中正确拼写die
,那么您的上一个示例应该可以正常工作。
如果要提供不存在的文件名路径,则还需要创建中间目录。
模具字符串会告诉您确切的问题。当失败时你会得到什么信息?
答案 1 :(得分: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
它会起作用尝试