shとperlのデータ連携&perl出力
初めて記載します。宜しくします。
perlでプログラムするのが初めてでなので、大分間違ってるかもしれません。
※UNIX環境でシェルで日付差分(yyyymmddhhmmss)を求めたいのですが、「date -d」コマンドは使用出来ません。
シェルを実行しコマンドラインにて入力された【引数1】:実行区分(1 or 2)【引数2】:日付(yyyymmddhhmmss)、【引数3】:日付(yyyymmddhhmmss)と区分をperlに引数として渡して、perlでは"引数3-引数2"をして日数を算出しファイルに出力させたいです。
perl名:MCPFZAR_Compl.pl
実行コマンド例: perl MCPFZAR_Compl.pl 1 20110302000000 20110306000000
以下にperlのプログラムを掲載します。
#!/opt/perl/bin/perl
⇒入力パラメータチェック実行
# 日付1を年、月、日、時、分、秒に切り分け
$L_Year = int(substr($ARGV[1],0,4));
$L_Mon = int(substr($ARGV[1],4,2));
$L_Day = int(substr($ARGV[1],6,2));
$L_Hour = int(substr($ARGV[1],8,2));
$L_Min = int(substr($ARGV[1],10,2));
$L_Sec = int(substr($ARGV[1],12,2));
# 取得日付チェック関数を実行する。
($L_Ret, $L_Ret_Msg) = &MCPFLCF_DayExists($L_Year, $L_Mon, $L_Day, $L_Hour, $L_Min, $L_Sec);
# 異常終了した場合
if( $L_Ret != 0 ){
# エラーを返却する。
return ($L_Error_End, "$L_Err_MSG_4 [$L_Ret_Msg]");
}
# 日付1を秒に変換
$L_Time1 = timelocal($L_Sec, $L_Min, $L_Hour, $L_Day, $L_Mon - 1, $L_Year);
⇒同様に日付2も変換
# 日付1と日付2の差分を取る。
$L_TimeRet = ($L_Time2 - $L_Time1);
# ファイルに書き込む為に、ファイルopenしてから書込み
open (OUT,"> $outfile");
# 結果形式種別が1の場合
if($ARGV[0] == 1){
# 結果を日数で参照渡しする。
$L_LET = int($L_TimeRet / (60 * 60 * 24));
print OUT "$outfile";
}
# 結果形式種別が2の場合
elsif($ARGV[0] == 2){
# 結果を秒で参照渡しする。
$L_LET = $L_TimeRet;
print OUT "$outfile";;
# CLOSEする
close(OUT);
シェルを実行すると、エラーにはなりませんが
ファイルの出力もされません。
かなりどうしたらよいかわからない状態なので回答宜しくお願い致します。
足りない情報がありましたらご教授願います。
お礼
うっかり間違いだったんですね。 きちんと作ってそうなサイトでも間違えていることもあるんですね。 でも、動作確認してれば間違えることはないですね。 やはりプログラムは検証が必要だと改めて思いました。 どうもありがとうございました。