1

DOSバッチファイルからPerlスクリプトに2つのファイル名を渡します。

私の$InputFileName= $ ARGV [0]; 私の$OutputFileName= $ ARGV [1];

入力ファイルのみが物理的に存在し、出力ファイルはスクリプトで作成する必要があります。

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

3つすべてが失敗します。

ただし、以下は正常に機能します。

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

正しい構文は何ですか?

編集:エラーメッセージは次のとおりです:行nnのBatchfile.plにそのようなファイルまたはディレクトリはありません

4

2 に答える 2

6

適切な方法は、open(モードを個別のパラメーターとして)の3パラメーター形式を字句ファイルハンドルで使用することです。また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 に答える