从perl脚本中的外部命令输出中做出决定

时间:2013-12-06 12:13:39

标签: perl cmd

我想根据系统的结果做出决定 - 外部推荐的输出。 喜欢:在我的代码中,我正在执行一个系统命令,如果该命令出错,那么我必须做一些不同的事情。 请帮助我实现这个目标:

This is just algorithm ....... i am not able to get value from result  
$result = `dt add $dest_file -c porting`;
if($result = 'error')
{
    do something 1
}
else
{
    do something 2
}

请建议我检索$ result中的值 我认为在这种情况下我不应该使用系统

2 个答案:

答案 0 :(得分:1)

我们必须知道dt命令是什么。我假设它是DITrack,它以一种漂亮的Unix方式运行,这意味着它在失败时返回一个非零错误代码。

当Perl执行系统命令时,它返回$?中的退出值(排序......)。如果dt是DiTrack,它是一个标准实现的这样的Unix命令,并在它工作时返回零退出代码,并在它不起作用时返回非零退出代码,你可以使用{{1}确定它是否成功:

$?

问题是$result = qx(dt add $dest_file -c porting); # qx(...) preferred over back ticks. if ( $? != 0 ) { chomp $result; say qq(Everything is okay! Program returned $result); } else { die qq(Some sort of error has happened); } 返回退出代码和失败模式。这段代码来自system解析$?

$?

答案 1 :(得分:0)

您可以考虑使用正则表达式:

$result = `dt add $dest_file -c porting`;
  if($result =~ /error/)
  {
    do something 1
  }
  else
  {
    do something 2
  }

要记住的一件事是,反引号通常/可能会返回换行符,因此您需要考虑到这一点。使用正则表达式可以让你快速解决这个问题。