如何避免打印额外信息

时间:2011-07-14 05:49:17

标签: perl

在我的Perl代码中,我使用了以下行:

$host=$hostname if ($host eq undef);

在输出中,我收到以下消息:

Use of uninitialized value $host in string eq at cli.pl line 18.

虽然我没有使用strict。如何避免在输出上打印此消息?

3 个答案:

答案 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作为其值, 仅当$hostundef时,$host才会获得$hostname的值

答案 2 :(得分:1)

我想你想要

$host //= $hostname;

//是“已定义或”运算符。 // =是它的赋值版本。