使用未初始化的变量警告

时间:2017-06-21 12:44:54

标签: perl unix warnings strict

我正在使用GetOptions从perl

获取值
GetOptions(
       'lines=s'=>\$globallines,
        );

这里,lines是一个可选参数。当用户没有输入值时,我收到use of uninitialized variable警告,我在if语句中使用lines变量。我无法修复此警告。你能帮帮他吗?

对不起,如果这是一个愚蠢的问题,我是perl的新手。

if($globallines>0){#<SOME CODEEE>

2 个答案:

答案 0 :(得分:1)

发生了什么 - 如果没有提供参数,则值未定义。 (不是零)。

因此,在数字上进行比较会产生错误。

有一些可能的解决方案,但最简单的是:

if ( $globallines and $globallines > 0 ) { 

或者,如果未定义,可能只是初始化它:

$globallines //= 0; #sets it to zero if undef. 

答案 1 :(得分:1)

如果-lines选项是...... er ...可选(!),那么当省略该选项时,您希望该行为是什么?选择默认值并在调用GetOptions()之前指定该值。

my $globallines = 0; # Or whatever value is appropriate

GetOptions(
   'lines=s' => \$globallines,
);

此外,您不想lines=i而不是lines=s吗?这将确保您只获得一个整数。

相关问题