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

时间:2012-08-03 14:20:19

标签: perl parameter-passing filenames

我将两个文件名从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中没有这样的文件或目录

2 个答案:

答案 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

它会起作用尝试