2010-12-24 6 views
0

私の主なPerlプログラムから次のスクリプトを呼び出しています。スクリプトはプロセス名を取り、PIDを返します。 スクリプトが必要とキーワード使用して、私のメインのPerlコードに含まれている:Perlの警告と正規表現に関する問題regexpコンパイルでの初期化されていない値の使用

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のregexpコンパイルで初期化されていない$ procNameの使用19

残りのスクリプトは正常に機能しているようです。 $ procNameは$ procName = & _ [0]によって初期化されていると私は理解しています。

私はデバッグのためにprintステートメントを入れました。$procNameは値を返して初期化されます。なぜ私はこれらの警告を得ているのか誰にも分かりますか?

答えて

6

require "getPid.pl";は、getPid.plに含まれるコードを評価します。実際にpidGetter()関数を2回呼び出します:require 'スクリプトとメインスクリプトです。 require 'スクリプト内に$ARGV[0]undefであるため、警告が表示されます。

+0

ありがとうございますこれは問題を解決しました –

+0

この回答を「受け入れる」のはなぜですか?それは完璧です。 – reinierpost

関連する問題