2011-09-12 53 views
4

什麼是最優雅的方式來解析科學表示給出一個整數,即我有線條狀解析在Perl科學整數表示

value=1.04738e+06 

輸入文件當然,我可以匹配所有組件(領先數字,小數位,指數)並計算結果,但在我看來,有一種更直接的方法。

回答

10
% perl -e 'print "1.04738e+06" + 0' 
1047380 

你只需要強制它一個數字,Perl會DWIM。

1

供參考:looks_like_number()Scalar::Util可能會派上用場。

#!/usr/bin/env perl 

use strict; 
use warnings; 

use Scalar::Util qw(looks_like_number); 

my $line = "value=1.04738e+06"; 
my ($tag, $value) = split /\s*=\s*/, $line, 2; 

if(looks_like_number($value)){ 
    $value = 0 + $value; 
} 
print "$tag=$value\n";