sori, errata. biar bisa handle non-number dengan baik.
#!/usr/bin/perl
# dari perlfaq4
sub getnum {
use POSIX qw(strtod);
my $str = shift;
$str =~ s/^\s+//;
$str =~ s/\s+$//;
$! = 0;
my($num, $unparsed) = strtod($str);
if (($str eq '') || ($unparsed != 0) || $!) {
return undef;
} else {
return $num;
}
}
sub is_numeric { defined &getnum }
sub my_sprintf {
my $fmt=shift;
my @copy=@_;
for (@copy) { $_ = 0 if is_numeric($_) and $_ == 0 }
sprintf($fmt,@copy);
}
sub my_printf {
print my_sprintf(@_);
}
$a=0;
my_printf "%f\n",$a * -1;
my_printf "% #-7.3f\n",$a * -1;
#print $a * -1, "\n";
my_printf "% #-7.3f\n",0 * -1;
--
Steven Haryanto <[EMAIL PROTECTED]>
--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]