[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:991) Re: [Release] Q=mm=pt
あぁ、safari化け(^^;;;;;
#!/usr/bin/perl
#mm-Q-point相互換算
#(c)Show Ichikawa Copy Right 1999
# ym3s-ickw@asahi-net.or.jp
# byi07446@niftyserve.or.jp
# http://www.asahi-net.or.jp/~ym3s-ickw/showtime.html
#●History;
#v1.0.0 1999.1.7 七草粥も食べずに作りました(^_^;
while (1) {#無限ループ
print "ミリ(mm)・ポイント(pt)・級数(Q)を相互換算します。
数値を(単位コミで)入力してください。
〔終了する時は「E」をタイプするか、コマンド+ピリオドです〕\n";
chop($input = <STDIN>);
$ans_mm = $input;
$ans_Q = $input;
$ans_pt = $input;
if ($input =~ /mm|[?@粍?歉|ミリ|mm/) { #mm単位が入力された
$ans_Q =~ s/\D*([\d\.]+)\D*/$1 * 4 . Q/e;
$ans_pt =~ s/\D*([\d\.]+)\D*/&num($1 \/ 0.352778) . pt/e;
} elsif ($input =~ /[Q級歯Qq]/i) { #級単位が入力された
$ans_mm =~ s/\D*([\d\.]+)\D*/$1 \/ 4 . mm/e;
$ans_pt =~ s/\D*([\d\.]+)\D*/&num($1 \/ 0.352778 \/ 4) . pt/e;
} elsif ($input =~ /[ppPポ]/i) { #pt単位が入力された
$ans_mm =~ s/\D*([\d\.]+)\D*/&num($1 * 0.352778) . mm/e;
$ans_Q =~ s/\D*([\d\.]+)\D*/&num($1 * 0.352778 * 4) . Q/e;
} elsif ($input =~ /[EEe]/i) { #Eがタイプされた
print "ご利用ありがとうございました。またの起動をお待ちしております。
--jast 'mm Q pt' service halted--------------------------------\n\n";
last;
} else { #予想外のタイプ
print "!!入力エラーです。きちんと単位を入力しましたか?\n";
redo;
}
print "【Answer】$ans_mm = $ans_Q = $ans_pt\n\n"; #出力
}#while (1)
#↓商が小数点4桁以上を丸めるサブルーチン
sub num {
local($_) = @_;#引数の配列(@_)をローカルの参照行にする
local(@aa) = split(/\./, $_);#整数部と小数部に分割してリストにする
if (length($aa[1]) > 4) {#小数点が4桁以上なら...
$_ = sprintf("\(約\)%2.4f",$_);#小数点4桁で丸める
}
$_;#処理結果を戻す
}