在我的Perl代码中,我使用了以下行:
$host=$hostname if ($host eq undef);
在输出中,我收到以下消息:
Use of uninitialized value $host in string eq at cli.pl line 18.
虽然我没有使用strict
。如何避免在输出上打印此消息?
答案 0 :(得分:5)
使用defined
功能:
$host=$hostname if (!defined $host);
或缩短形式:
$host=$hostname unless $host;
(和use strict
,真的。)
答案 1 :(得分:2)
此运算符可能有所帮助:defined-or operator
$host = $host // $hostname;
如果定义了$host
,即使其值为''
,0
,'0'
,它也会使用$host
作为其值,
仅当$host
为undef
时,$host
才会获得$hostname
的值
答案 2 :(得分:1)
我想你想要
$host //= $hostname;
//是“已定义或”运算符。 // =是它的赋值版本。