#!/usr/bin/perl -w

use strict;
use Math::BigFloat;

$| = 1;

my $one = new Math::BigFloat "1.0";
my $ms = new Math::BigFloat "1e-3";
my $us = new Math::BigFloat "1e-6";
my $ns = new Math::BigFloat "1e-9";
my $ps = new Math::BigFloat "1e-12";

while (<>) {

# still need to fix when * exist, but no suffix
# still need to fix when suffix (s) exists, with si prefix or not

    $_ =~ s/,//g;

    if (/([-+0-9*.eE]+)\s+([munps])(s?)/i) {
	my $before=$`;
	my $after=$';
	my $n = $1;
	my $u = $2;

	$n =~ s/[*]/0/g;

	my $scale = $one;
	if ($u eq "m") {
	    $scale = $ms;
	} elsif ($u eq "u") {
	    $scale = $us;
	} elsif ($u eq "n") {
	    $scale = $ns;
	} elsif ($u eq "p") {
	    $scale = $ps;
	}

	my $v = Math::BigFloat->new("$n")->fmul($scale);

	print $before, $v, $after;
    } else {
	print $_;
    }
}

exit(0);
