アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは、現在シェルスクリプトからperlを呼び出し、
その実行結果を受け取るというシンプルな所で悩んでいます。

Perlからプログラムの終了時にexitで
値を返しているのですが、どの値を返しても0が返ってきます。
受け取り側はシェルスクリプトです。
exitには何か特殊な要素があるのでしょうか?
ご存知の方がいたらご教授下さい。
よろしくお願いします。

#
#perlのソース
#(i=0の場合・i=1の場合)
#

if(i == 1) {
exit 1;
}
exit 0;

A 回答 (2件)

No1です。


if(i == 1) {
exit 1;
}
は、if($i == 1)の間違いでしょう。
$i = 1;とすると$iに1がセットされますが、
i = 1;でiに1をセットしたことにはなりません。(セット出来ません)
従って、exit 0;が実行されます。
但し、念のため、exit 1;の行のみを生かし、ほかは全てコメントにして実行してみたらどうでしょうか。それで0が表示されるようでしたら、シェル側の問題だと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
原因が判明しました。

exitのみのコードに変えてもダメだったので、
原因が何かかなり悩んでいたのですが、
別のpmファイルのEND処理が
exitした後で通ってることが判明しました。

pmファイルのEND処理でshコマンドが実行されていた為、
今回のような問題が起きました。

対応として、shコマンドをperlロジックに
書き直しました。

perl-sh間だけの関係にとらわれていましたが、
pmファイルが関係してるのは気付きませんでした。

perlは触り始めたばかりなので、
全体像が見えていませんでした。

ご教授ありがとうございました。

お礼日時:2003/10/30 10:11

perlの戻り値の問題と言うよりは、シェルスクリプトの問題かと思われます。

シェルスクリプトが正しい戻り値を表示していない可能性があります。
シェルの種類、実際に呼び出しているシェルのスクリプトの内容をここで提示されてみては如何ですか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
原因が判明しました。

exitのみのコードに変えてもダメだったので、
原因が何かかなり悩んでいたのですが、
別のpmファイルのEND処理が
exitした後で通ってることが判明しました。

pmファイルのEND処理でshコマンドが実行されていた為、
今回のような問題が起きました。

対応として、shコマンドをperlロジックに
書き直しました。

perl-sh間だけの関係にとらわれていましたが、
pmファイルが関係してるのは気付きませんでした。

perlは触り始めたばかりなので、
全体像が見えていませんでした。

ご教授ありがとうございました。

お礼日時:2003/10/30 10:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!