[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桁で丸める
	}
$_;#処理結果を戻す
}