perl数字格式转换

查看mytop源码,学到的几个小技巧,获益匪浅

 

  
  
  
  
  1. #!/usr/bin/perl  
  2. use strict; 
  3. use warnings; 
  4. use Data::Dumper; 
  5.  
  6. my $number = $ARGV[0]; 
  7. my $c = $ARGV[1]; 
  8.  
  9. sub commify($) 
  10.     local $_  = shift; 
  11.     chomp($_); 
  12.     return 0 unless defined $_; 
  13.     1 while s/^(\d+)(\d{3})/$1,$2/ and print Dumper($_);  ##,从右边开始,3位一个
  14.     return $_; 
  15.  
  16.  
  17. sub make_short($) 
  18.     my $number = shift; 
  19.     my $n = 0; 
  20.     while ($number > 1_025) { $number /= 1024; $n++; }; 
  21.     return sprintf "%.1f%s", $number, ('','k','M','G''T')[$n];  ##切片
  22.  
  23.  
  24. print commify($number),"\n"
  25. print make_short($number),"\n" if $c; 

# perl commify.pl 1230098 y

$VAR1 = '1230,098';
$VAR1 = '1,230,098';
1,230,098
1.2M

[root@cz perl]# perl commify.pl 1230098
$VAR1 = '1230,098';
$VAR1 = '1,230,098';
1,230,098

 

fyi : http://jeremy.zawodny.com/mysql/mytop/

你可能感兴趣的:(per,数字格式转换)