【问题标题】:Problem with Perl warnings and regex Use of uninitialized value in regexp compilationPerl 警告和正则表达式的问题 在正则表达式编译中使用未初始化的值
【发布时间】:2010-12-24 11:21:18
【问题描述】:

我正在从我的主 Perl 程序中调用以下脚本。该脚本采用进程名称并返回其 PID。 该脚本使用 require 关键字包含在我的主要 perl 代码中:

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 行的正则表达式编译中使用未初始化的值 $procName

脚本的其余部分似乎运行良好。 据我了解 $procName 是由 $procName = &_[0];

初始化的

我已经放入了打印语句来调试,$procName 确实返回了一个值,所以它被初始化了。有谁知道我为什么会收到这些警告?

【问题讨论】:

    标签: regex perl warnings initialization


    【解决方案1】:

    require "getPid.pl"; 计算 getPid.pl 中包含的代码。所以你实际上调用了pidGetter() 函数两次:在require'd 脚本和主脚本中。由于 $ARGV[0]require'd 脚本中是 undef,因此您会收到警告。

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 2011-07-10
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多