[Perl] ファイルサイズ表示のための小さな関数

Posted by
ぴろり
Posted at
2005/12/24 11:38
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
開発メモ カテゴリ
 Perl でファイルサイズ表示を Windows ちっくにするための小さな関数+αのメモ。 ファイルサイズを 0〜999bytes、0.98K(≒1000)〜999Kbytes、0.98M(≒1000K)〜999Mbytes、 …と常に最大 3 桁で表示します。
このエントリーをはてなブックマークに追加  

use strict;
use warnings;

my $filesize = 123456;
printf 'filesize = %s bytes', comma ($filesize);

my @unit = ('', 'k', 'M', 'G', 'T', 'P');
my @ret = filesizenize ($filesize);
printf ' = %s%s bytes', $ret[0], $unit[$ret[1]];
exit;

;# 指定された数値に3桁毎にコンマを付与する
sub comma { my ($v) = @_; 1 while ($v =~ s/(d+)(ddd)/$1,$2/); $v; }

;# ファイルサイズ(バイト数)をWindowsちっくに正規化
sub filesizenize {
	my ($p, $v) = (0, @_);
	($v /= 1024., $p++) while (999 < $v);
	(round ($v, 2 - int log ($v) / log 10), $p);
}

;# 指定された桁数で小数点以下($rが負数の場合は桁数)を四捨五入する
sub round { my ($v, $r) = @_; int ($v * 10 ** $r + 0.5) / 10 ** $r; }

$icomma ($i)filesizenize ($i)
999999(999, 0)
10001,000(0.98, 1)
10241,024(1, 1)
12341,234(1.21, 1)
1234012,340(12.1, 1)
123400123,400(121, 1)
12345671,234,567(1.18, 2)
このエントリーをはてなブックマークに追加  



関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。