http://www.perlmonks.org?node_id=581685

#!/usr/bin/perl use strict; use warnings; my $m = shift @ARGV; chomp $m; my %func = ( '01' => sub { return $m / ( ( 10 + $_[0] )**0.1 ) }, '02' => sub { return $m / ( ( 10 + $_[0] )**0.2 ) }, '03' => sub { return $m / ( ( 10 + $_[0] )**0.3 ) }, '04' => sub { return $m / ( ( 10 + $_[0] )**0.4 ) }, '05' => sub { return $m / ( ( 10 + $_[0] )**0.5 ) }, '06' => sub { return $m / ( ( 10 + $_[0] )**0.6 ) }, '07' => sub { return $m / ( ( 10 + $_[0] )**0.7 ) }, '08' => sub { return $m / ( ( 10 + $_[0] )**0.8 ) }, '09' => sub { return $m / ( ( 10 + $_[0] )**0.9 ) }, ); for ( sort keys %func ) { print "$_:\n"; my $f = $func{$_}; for ( 10, 20, 50, 100, 200, 500, 1000, 2000, 5000 ) { my $v = int( $f->($_) ); printf "%-4d: %-150s %d\n", $_, '@' x $v, $v; } print "\n\n"; }