2012-08-14 142 views
0

我想讓Perl腳本運行一些Matlab代碼,然後等待,然後在Linux中運行另一個Matlab代碼。如果Matlab代碼失敗,那麼它應該給出錯誤消息。即使Matlab代碼1或2發生錯誤,下面的Perl腳本也會運行。當Matlab代碼失敗時,如何停止Perl腳本併發出錯誤消息?運行Matlab代碼失敗時,如何停止Perl腳本?

print("run Matlab code 1!\n"); 
`matlab -nodisplay -r myfile1`; 

print("run Matlab code 2!\n"); 
`matlab -nodisplay -r myfile2`; 

print("End!\n"); 

回答

1

首先,存儲命令的返回碼你正在運行:

my $returnCode = system("matlab -nodisplay -r myfile1"); 

然後,移動到下一個步驟之前,請確保返回代碼爲0(或任何表示成功你的情況):

if ($returnCode != 0) { 
    die "Command did not finish successfully."; 
} 

只要確定什麼是有效的返回碼,並告訴腳本在任何其他情況下死亡。

+1

要使用理智的錯誤消息啓用自動錯誤處理,只需在該程序中添加'use autodie qw(:all)'。閱讀http://stackoverflow.com/a/3478060 – daxim 2012-08-14 09:40:38