#!/usr/local/bin/perl require 'jcode.pl'; require 'timelocal.pl'; # ここから下の数値を変更してください。 # 日本たばこ産業販売の煙草のタール量は以下のWebサイトから調べられる # http://www.jtnet.ad.jp/WWW/JT/JTI/outline/tobacco/syouhinJ.html $jcode = 'jis'; # 漢字コード。'jis','sjis','euc'のどれか $start = '1999/12/01 00:00:00'; # 禁煙を始めた日時 $pack_per_day = 1.5; # 1日に喫煙する箱数 $cig_per_pack = 20; # 1箱あたりの本数 $cost_per_pack = 250; # 定価(1箱あたり) $tar_per_cig = 6; # タール量(mg/1本) $life_per_cig = 5.5 * 60; # 一本喫煙する毎に縮む寿命(秒) # ここから下は変更しないでください # 禁煙秒数を算出 $now = time; $elapse = ($now - &plain2time($start)); # 喫煙本数 $cig = int(($elapse / (60 * 60 * 24)) * ($pack_per_day * $cig_per_pack)); # 喫煙箱数 $pack = int($cig / $cig_per_pack); # 喫煙金額 $cost= int($cig * ($cost_per_pack / $cig_per_pack)); # 喫煙タール量 $tar= $cig * $tar_per_cig; if($tar > 100_000){ $tar = sprintf ("%0.2fKgのタール", $tar / 1_000_000); }elsif($tar > 100){ $tar = sprintf ("%0.2fgのタール", $tar / 1_000); }else{ $tar = sprintf ("%0.2fmgのタール", $tar); } # 延ばした寿命 $life= &elapse($cig * $life_per_cig); # 禁煙期間 #$elapse = &elapse($elapse); $elapse = elapse2(&plain2time($start), $now); # コンマを入れる $cig =~ s/(\d{1,3})(?=(?:\d\d\d)+(?!\d))/$1,/g; $pack =~ s/(\d{1,3})(?=(?:\d\d\d)+(?!\d))/$1,/g; $cost =~ s/(\d{1,3})(?=(?:\d\d\d)+(?!\d))/$1,/g; $output = < $cig本(約$pack箱、$cost円分)の煙草($tar)を我慢
$life平均寿命が延長
EOF # 任意の漢字コードに変換 &jcode'convert(*output, $jcode); # 出力 print $output; # おしまい exit; # $time = &plain2time($plain_date); # 1999/01/01 00:00:00形式から、UNIX time_t形式に変換 sub plain2time{ local($plain) = @_; ($yea,$mon,$day,$hou,$min,$sec) = ($plain =~ m#^(\d{2,4})/(\d{1,2})/(\d{1,2})\s+(\d{1,2}):(\d{1,2}):(\d{1,2})#); $yea -= 1900 if $yea > 1900; &timelocal($sec,$min,$hou,$day,$mon - 1,$yea); } # $string = &elapse($time); # 経過秒数から、週日時分を算出 sub elapse{ local($elapse) = @_; $week = int($elapse / (60 * 60 * 24 * 7)); $elapse = $elapse - ($week * 60 * 60 * 24 * 7); $day = int($elapse / (60 * 60 * 24)); $elapse = $elapse - ($day * 60 * 60 * 24); $hour = int($elapse / (60 * 60)); $elapse = $elapse - ($hour * 60 * 60); $min = int($elapse / 60); $elapse = $elapse - ($min * 60); if($week){ "$week週間と$day日、$hour時間と$min分間"; }elsif($day){ "$day日と$hour時間$min分間"; }else{ "$hour時間と$min分間"; } } sub elapse2{ my ($from, $to) = @_; my ($sec_f, $min_f, $hou_f, $day_f, $mon_f, $yea_f) = localtime($from); my ($sec_t, $min_t, $hou_t, $day_t, $mon_t, $yea_t) = localtime($to); my ($sec , $min , $hou , $day , $mon , $yea ); # 単純に引いとく $sec = $sec_t - $sec_f; $min = $min_t - $min_f; $hou = $hou_t - $hou_f; $day = $day_t - $day_f; $mon = $mon_t - $mon_f; $yea = $yea_t - $yea_f; # マイナスが出たら、それなりに対処 if($sec < 0){ $min--; $sec += 60; } if($min < 0){ $hou--; $min += 60; } if($hou < 0){ $day--; $hou += 24; } if($day < 0){ $mon--; $day += 30; } if($mon < 0){ $yea--; $mon += 12; } my $ret; $ret .= "$yea年" if $yea; $ret .= "$monヶ月" if $mon; $ret .= "と" if $ret; $ret .= "$day日" if $day; $ret .= "$hou時間" if $hou; $ret .= "$min分" if $min; $ret .= "$sec秒" if $sec; # printf ("%s/%s/%s %s:%s:%s\n", $sec_f, $min_f, $hou_f, $day_f, $mon_f, $yea_f); # printf ("%s/%s/%s %s:%s:%s\n", $sec_t, $min_t, $hou_t, $day_t, $mon_t, $yea_t); $ret; }