なぜかわからないので教えてください。
仕事で古いperl スクリプトのメンテナンスを担当しているのですが、
if 文の記載の仕方で結果が異なることがありました。
文法的には正しく見えるのに。。なぜかわかる方いますでしょうか??
perl のversion は v5.8.8 です。
##修正前
my($LATMAX,$LATMIN,$LONMAX,$LONMIN)=(-90,90,-360,720); foreach my $f (split(',', $outstr)){ my $file = "$BASE_DIR/$f.cdf"; my($lat_max,$lat_min,$lon_max,$lon_min) = &read_file( $file ); print "lat_max,lat_min,lon_max,lon_min = $lat_max,$lat_min,$lon_max,$lon_min\n"; $LATMAX = $lat_max if ($LATMAX < $lat_max); $LONMAX = $lon_max if ($LONMAX < $lon_max); $LATMIN = $lat_min if ($LATMIN > $lat_min); $LONMIN = $lon_min if ($LONMIN > $lon_mim); }
結果
loop 1回目
lat_max,lat_min,lonmax,lonmin = 45.0771311169872,37.3816325368991,331.308254870577,320.359240081112
LATMAX,LATMIN,LONMAX,LONMIN = 45.0771311169872,37.3816325368991,331.308254870577,320.359240081112
loop 2回目
lat_max,lat_min,lonmax,lonmin = 45.4778632422891,35.6423653537993,331.41255387756,324.856717470009
LATMAX,LATMIN,LONMAX,LONMIN = 45.4778632422891,35.6423653537993,331.41255387756,324.856717470009
==>$LONMIN = $lon_min if ($LONMIN > $lon_min); が効いてない??
##修正後
my($LATMAX,$LATMIN,$LONMAX,$LONMIN)=(-90,90,-360,720); foreach my $f (split(',', $outstr)){ my $file = "$BASE_DIR/$f.cdf"; my($lat_max,$lat_min,$lon_max,$lon_min) = &read_file( $file ); print "lat_max,lat_min,lon_max,lon_min = $lat_max,$lat_min,$lon_max,$lon_min\n"; if ($LATMAX < $lat_max){$LATMAX = $lat_max;} if ($LONMAX < $lon_max){$LONMAX = $lon_max;} if ($LATMIN > $lat_min){$LATMIN = $lat_min;} if ($LONMIN > $lon_min){$LONMIN = $lon_min;} print "LATMAX,LATMIN,LONMAX,LONMIN = $LATMAX,$LATMIN,$LONMAX,$LONMIN\n"; }
結果
loop 1回目
lat_max,lat_min,lonmax,lonmin = 45.0771311169872,37.3816325368991,331.308254870577,320.359240081112
LATMAX,LATMIN,LONMAX,LONMIN = 45.0771311169872,37.3816325368991,331.308254870577,320.359240081112
loop 2回目
lat_max,lat_min,lonmax,lonmin = 45.4778632422891,35.6423653537993,331.41255387756,324.856717470009
LATMAX,LATMIN,LONMAX,LONMIN = 45.4778632422891,35.6423653537993,331.41255387756,320.359240081112
if ($LONMIN > $lon_min){$LONMIN = $lon_min;} は正しい。
となりました。
文法的にはどちらも正しそうなのに、結果が変わりました。。なぜなんでしょうか?
調べてもわからなかったのでこちらで質問しました。
同じような経験がある方、どうか理由を教えていただければと思います。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/06 06:48
2018/12/06 06:52
2018/12/06 06:55