--- links/csv2js.pl 2007/08/23 11:28:39 2 +++ links/csv2js.pl 2007/08/23 12:00:29 5 @@ -7,7 +7,7 @@ use Text::CSV::Separator qw(get_separator); use Carp qw/confess/; use LWP::Simple; -use Imager; +use Number::Bytes::Human qw/format_bytes/; use JSON::Syck; use Data::Dump qw/dump/; @@ -52,7 +52,7 @@ my $multiplier = { kb => 1024, - mb => 1024 * 1204, + mb => 1024 * 1024, gb => 1024 * 1024 * 1024, }; @@ -72,6 +72,20 @@ return shift @out; } +sub human { + my $s = shift; + + if ( $s =~ m/(\d+)\s*($multiplier_regex)/i) { + my ( $v, $m ) = ( $1, lc($2) ); + my $factor = $multiplier->{$m}; + confess "can't find multiplier $m" unless defined $factor; + my $new = format_bytes( $v * $factor, bs => 1024 ); + warn "## [$s] $v * $factor ($m) -> $new\n"; + return $new; + } + return; +} + while (<$csv_fh>) { $csv_parser->parse($_); my @fields = $csv_parser->fields; @@ -106,10 +120,10 @@ $h->{ $l . '_short' } = $v; } - if ( $v =~ m/(\d+)\s*($multiplier_regex)/) { - my $new = $1 * $multiplier_regex->{$2}; - warn "## $v -> $new\n"; - $v = $new; + if ( my $human = human( $v ) ) { + $h->{ $l . '_' . $j . '_human' } = $human; + } else { + $h->{ $l . '_' . $j } = $v; } $split_stats->{$v}->{$j}++;