[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:990) Re: [Release] Q=mm=pt



>インターネット越しだと反応が悪いので、

あぁ、なむば。さんがもっとハヤーなマシンをご提供してくれればいつでも反応がよくなりますよ(^^;;;;; 
それまではこんなんでどうでしょ?

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