如何在perl中使用system()时防止exec错误

时间:2014-03-30 09:42:54

标签: perl exec tk

我使用perl Tk使用以下代码创建任务管理器。

my $mw=MainWindow->new;
$mw->title("Task Manager");
$numproc = `ps|wc -l`;
$i=2;
@a=1;
while($i <= $numproc){
    my $p=`sh printproc.sh $i`;
    system($p);
    $mw->Checkbutton(-text=>$p)->pack;
    $i=$i+@a;

}
MainLoop;

printproc.sh具有以下内容

ps|head -$1|tail -1

我得到一个窗口,每个进程都列为checkButton,但每个进程都会出现以下错误。

  

不能执行&#34; 2645&#34;:在first.pl第11行没有这样的文件或目录。

如何避免此错误?

1 个答案:

答案 0 :(得分:3)

my $p=`sh printproc.sh $i`;
system($p);

这将获取运行printproc.sh的输出并将其存储在$p中,然后尝试执行该操作,就好像它是一个命令一样。删除system($p);行。