我写了下面的Perl脚本,它生成了一个警告,但我无法弄清楚为什么。
#!/usr/local/bin/perl -w
$status = $ENV{ STATUS };
if ( $status eq "" )
{
$status = 0;
}
else
{
$status = 1;
}
它说"在./x.pl线4: 字符串eq中使用未初始化的值。
"
第四行是“if ($status eq "")
”的行,但变量已经初始化了...
我该如何摆脱这个警告?
我写了下面的Perl脚本,它生成了一个警告,但我无法弄清楚为什么。
#!/usr/local/bin/perl -w
$status = $ENV{ STATUS };
if ( $status eq "" )
{
$status = 0;
}
else
{
$status = 1;
}
它说"在./x.pl线4: 字符串eq中使用未初始化的值。
"
第四行是“if ($status eq "")
”的行,但变量已经初始化了...
我该如何摆脱这个警告?
$ENV{ STATUS }
可能未定义。
如果你跑步
export STATUS=blah
在运行Perl脚本之前,在Shell中运行,它会起作用。
修复它
#!/usr/local/bin/perl -w
$status = $ENV{ STATUS };
if (!defined($status) || $status eq "" )
{
$status = 0;
}
else
{
$status = 1;
}
另一个选择是
$status = $ENV{ STATUS } // ;
如果未定义,它将把$status
设置为空字符串,但是//
运算符只存在于Perl 5.10及更高版本中。与之等效的5.10之前的语法是。
$status = defined $ENV{STATUS} ? $ENV{STATUS} : ;
尽管很多人会假装。
$status = $ENV{ STATUS } || ;
但是这会将 $ENV{STATUS}
的值从0更改为一个空字符串,这可能会对您造成影响或不造成影响。
这些都是通用的答案。然而,在你发布的特定代码中,将其全部替换为
$status = defined $ENV{STATUS} ? 1 : 0;
简单 (jiǎn dān)
$status = defined $ENV{STATUS};
(如果你把没有固定价值的东西改成空洞而不是0)是更好的选择。
I am building a Web interface to monitor an embedded system. I have built a Perl script which runs remote commands and gathers output from that system. Now what I need is a Web interface which makes ...
How do I tell what type of value is in a Perl variable? $x might be a scalar, a ref to an array or a ref to a hash (or maybe other things).
When I try a "chdir" with a filehandle as argument, "chdir" returns 0 and a pwd returns still the same directory. Should that be so? I tried this, because in the documentation to chdir I found: "...
I ve read the doc for GetOptions but I can t seem to find what I need... (maybe I am blind) What I want to do is to parse command line like this myperlscript.pl -mode [sth] [inputfile] I can use ...
I m a little confused about what is going on in Perl constructors. I found these two examples perldoc perlbot. package Foo; #In Perl, the constructor is just a subroutine called new. sub new { #I ...
I would like to submit a form to a CGI script localy (w3c-markup-validator), but it is too slow using curl and apache, I want to use this CGI script more than 5,000 times in an another script. and ...
So I m running perl 5.10 on a core 2 duo macbook pro compiled with threading support: usethreads=define, useithreads=define. I ve got a simple script to read 4 gzipped files containing aroud 750000 ...
A Google search yields a number of results - but which ones are the best? The Perl site appears to contain two - perlboot and perltoot. I m reading these now, but what else is out there? Note: I ve ...