我想根据系统的结果做出决定 - 外部推荐的输出。 喜欢:在我的代码中,我正在执行一个系统命令,如果该命令出错,那么我必须做一些不同的事情。 请帮助我实现这个目标:
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中的值 我认为在这种情况下我不应该使用系统
答案 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
}
要记住的一件事是,反引号通常/可能会返回换行符,因此您需要考虑到这一点。使用正则表达式可以让你快速解决这个问题。