sub printN($) { my $format = shift; sub { sprintf $format, @_ } } my %functions = ( -power => sub { exp( $_[0] )}, -log2 => sub { log( $_[0] )/log(2.0) }, -loge => sub { log( $_[0] ) }, -log10 => sub { log( $_[0] )/log(10.0) }, -round => sub { int($_[0] + ($_[0] <=> 0)*0.5) }, -trunc => sub { int $_[0] }, -f1 => printN "%.1f", -f2 => printN "%.2f", -f3 => printN "%.3f", -f4 => printN "%.4f", -f5 => printN "%.5f", );