0 regex perl warnings initialization
我从我的主要Perl程序调用以下脚本.该脚本采用进程名称并返回其PID.该脚本包含在我的主要perl代码中,使用require关键字:
require "getPid.pl";
Run Code Online (Sandbox Code Playgroud)
并使用:
&pidGetter($processName);
Run Code Online (Sandbox Code Playgroud)
getPid.pl是:
#!/usr/bin/perl -w
use strict;
use warnings;
use Proc::ProcessTable;
pidGetter($ARGV[0]);
sub pidGetter
{
my $ret="PROCESS ID NOT FOUND\n";
my $t = new Proc::ProcessTable;
my $procName = $_[0];
foreach my $p (@{$t->table})
{
if ($p->fname =~ /$procName/)
{
$ret = $p->pid;
}
}
return $ret;
}
Run Code Online (Sandbox Code Playgroud)
但是,当调用脚本时,我收到以下警告:
在getPid.pl第19行的regexp编译中使用未初始化的值$ procName
脚本的其余部分似乎运行正常.我的理解是$ procName由$ procName =&_ [0]初始化;
我已将print语句放入调试中,并$procName确实返回一个值,因此它已初始化.有谁知道为什么我收到这些警告?
require "getPid.pl";评估包含在中的代码getPid.pl.所以你实际上调用了pidGetter()两次函数:在require'd脚本和主脚本中.由于$ARGV[0]是undef内部require倒是剧本,你会得到警告.