Perl警告和regex在regexp编译中使用未初始化值时出现问题

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

我正在从我的主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
{
   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
,您将得到警告