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]

Kirim email ke