- 締切済み
system関数で呼びだした、cshファイル周辺でのエラー
2~3日前にも質問させていただいた、Perl初心者leeeeeeeeです。先日に引き続き、前の業者が作ったPerlプログラムを、新しいサーバ上で動くようにする作業を行っているのですが、まだエラーが出ており困っています。以下が問題の部分です。 ○○.cgi # 削除シェルの実行 $rtn = system"$rm_csh $tmp_file $limit_date $touch_file"; if($rtn != 0) { # エラーログ出力 cm_errlog(__FILE__, "LOG013", ($rm_csh." ".$limit_date)); # エラーHTML出力 省略 # 異常終了 exit 1; } ここの、$rtnが、0になっていないようで、エラーページが表示されてしまいます。 ちなみに、$rm_csh は、tmpdel.cshというファイルで、以下が中身です。 ■ tmpdel.csh #!/usr/bin/csh set touch_fname = $3 set tmp_file = $1 touch -t $2 $touch_fname >& /dev/null set STS = $status if( $STS != 0) then exit 1 endif foreach file_name (`ls $tmp_file*`) test $file_name -ot $touch_fname && rm $file_name >& /dev/null end exit 0 ■ tmpdel.csh の #!/usr/bin/csh という部分が気になって、#!/usr/bin/perlとか、 #!/bin/cshにもしてみましたが動きませんでした。 何が原因でエラーが出ているのかが分かりません。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
お礼
複数回にわたるご回答誠に有難うございました。 昨日、問題を解決することができました。 結局、 tmpdel.csh の中の、 #!/bin/csh set touch_fname = $3 set tmp_file = $1 touch -t $2 $touch_fname >& /dev/null set STS = $status if( $STS != 0) then exit 1 ← ここを「exit 0」にしたら動きました。 endif 根本的な解決にはなっていませんが、 とにかく動くようになりました。 ありがとうございます。
補足
御回答ありがとうございます。 返答が遅れてしまい大変申し訳ありません! パスは、絶対パスで、 $rm_csh = /usr/local/apache/cgi-bin/▲▲/tmpdel.csh となっているので、パスに問題はないと思われます。