gpt4 book ai didi

perl - sysopen 示例不起作用

转载 作者:行者123 更新时间:2023-12-01 01:08:35 24 4
gpt4 key购买 nike

我得到了这个 perl 示例,该示例旨在演示 sysopenprintf ,除了到目前为止它只演示死亡。

#! /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";
....

最佳答案

O_RWDR , O_EXCL , 和 O_CREAT都是在 Fcntl 中定义的常量模块。
放线

use Fcntl;

靠近脚本顶部。

关于perl - sysopen 示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com