私はこのperlの例を取得しました。これは、これまでのところ死ぬことだけを示していることを除いて、sysopen
とを示していると思われます。printf
#! /usr/bin/perl
$filepath = 'myhtml.html';
sysopen (HTML, $filepath, O_RDWR|O_EXCL|O_CREAT, 0755)
or die "$filepath cannot be opened.";
printf HTML "<html>\n";
しかし、私がコードを実行するとき、それはただdie
sです。
myhtml.html cannot be opened. at file_handle.pl line 7.
myhtml.html
存在しませんが、O_CREAT
フラグによって作成されている必要があります。いけませんか?
編集
use strict
とに関する提案を含めるようにコードを編集しました$!
。以下は、新しいコードとその結果です。
#! /usr/bin/perl
use strict;
$filepath = "myhtml.html";
sysopen (HTML, '$filepath', O_RDWR|O_EXCL|O_CREAT, 0755)
or die "$filepath cannot be opened. $!";
printf HTML "<html>\n";
出力は、のために、use strict
私たちにたくさんのエラーを与えました:
Global symbol "$filepath" requires explicit package name at file_handle.pl line 3.
Global symbol "$filepath" requires explicit package name at file_handle.pl line 5.
Bareword "O_RDWR" not allowed while "strict subs" in use at file_handle.pl line 5.
Bareword "O_EXCL" not allowed while "strict subs" in use at file_handle.pl line 5.
Bareword "O_CREAT" not allowed while "strict subs" in use at file_handle.pl line 5.
Execution of file_handle.pl aborted due to compilation errors.
編集2
みんなの提案と助けに基づいて、これが最終的な作業コードです:
#! /usr/bin/perl
use strict;
use Fcntl;
my $filepath = "myhtml.html";
sysopen (HTML, $filepath, O_RDWR|O_EXCL|O_CREAT, 0755)
or die "$filepath cannot be opened. $!";
printf HTML "<html>\n";
....