Perl警告和regex在regexp编译中使用未初始化值时出现问题
我正在从我的主Perl程序调用以下脚本。脚本采用进程名称并返回其PID。 该脚本包含在我的主要perl代码中,使用require关键字:Perl警告和regex在regexp编译中使用未初始化值时出现问题,regex,perl,warnings,initialization,Regex,Perl,Warnings,Initialization,我正在从我的主Perl程序调用以下脚本。脚本采用进程名称并返回其PID。 该脚本包含在我的主要perl代码中,使用require关键字: require "getPid.pl"; 并称之为使用: &pidGetter($processName); getPid.pl是: #!/usr/bin/perl -w use strict; use warnings; use Proc::ProcessTable; pidGetter($ARGV[0]); sub pidGetter
require "getPid.pl";
并称之为使用:
&pidGetter($processName);
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;
}
但是,当调用脚本时,我得到以下警告:
在getPid.pl第19行的regexp编译中使用未初始化值$procName
脚本的其余部分似乎运行良好。
据我所知,$procName由$procName=&[0]初始化
我已经输入了print语句进行调试,$procName
确实返回了一个值,所以它被初始化了。有人知道我为什么会收到这些警告吗?code>需要“getPid.pl”代码>计算getPid.pl
中包含的代码。因此,您实际上调用了pidgeter()
函数两次:在require
'd脚本和主脚本中。由于$ARGV[0]
在require
'd脚本中是undef
,您将收到警告。require“getPid.pl”代码>计算getPid.pl
中包含的代码。因此,您实际上调用了pidgeter()
函数两次:在require
'd脚本和主脚本中。由于$ARGV[0]
在require
'd脚本中是undef
,您将得到警告