加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中,如何在不生成警告的情况下检查Socket选项的存在?

发布时间:2020-12-15 23:23:10 所属栏目:大数据 来源:网络整理
导读:我正在使用Perl检查各种套接字选项的存在和默认值. #!/usr/bin/perl -wuse strict;use Socket;if (defined(SO_BROADCAST)) { print("SO_BROADCAST definedn");}if (defined(SO_REUSEPORT)) { print("SO_REUSEPORT definedn");} 当我运行它时输出: SO_BROA
我正在使用Perl检查各种套接字选项的存在和默认值.

#!/usr/bin/perl -w
use strict;
use Socket;

if (defined(SO_BROADCAST)) {
    print("SO_BROADCAST definedn");
}

if (defined(SO_REUSEPORT)) {
    print("SO_REUSEPORT definedn");
}

当我运行它时输出:

SO_BROADCAST已定义

您的供应商尚未定义Socket宏SO_REUSEPORT,在./checkopts.pl第9行使用

有没有办法在输出中不生成警告的情况下执行此操作?

解决方法

询问是否已定义sub,而不是是否定义了表达式的值:

if (defined &SO_REUSEPORT) { ... }

documentation for defined解释说:

You may also use defined(&func) to check whether subroutine &func has ever been defined. The return value is unaffected by any forward declarations of &func. Note that a subroutine which is not defined may still be callable: its package may have an AUTOLOAD method that makes it spring into existence the first time that it is called—see 07001.

如果将子导出到您的命名空间,则必须定义它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读