我需要在perl中的小数点后面只保留两个数字

时间:2014-02-24 09:23:28

标签: perl cgi perl-module

例如:4.5674 => 4.6

我在CGI中尝试过以下代码。但我无法得到输出。

use Math::Round;
use Math::Round qw(:all);
use strict;
use warnings;

my $rounded = nearest(.1, 4.65);
print $rounded;

正在显示以下错误

Illegal character \015 (carriage return) at //ms/dist/perl5/PROJ/Math-Round/0.06/lib/perl5/Math/Round.pm line 1.
(Maybe you didn't strip carriage returns after a network transfer?)
BEGIN failed--compilation aborted at ......

请帮助获取此输出。

2 个答案:

答案 0 :(得分:2)

关于舍入数字,请使用sprintf函数

#!/usr/bin/perl

my $n = 4.5674;

print sprintf('%.02f',$n);

接下来将Windows行结尾转换为Unix行结尾,在* nix机器上使用以下命令

$ dos2unix my_program_file.pl

答案 1 :(得分:0)

看起来原始脚本是在Windows上编写的,现在在UNIX上使用错误的行结尾(CR LF而不是LF)。

要用LF(UNIX行结尾)替换CR LF(Windows行结尾),请通过此正则表达式运行该文件:

s/\012\015/\n/g;

执行此操作的简单perl文件将是:

use warnings;
use strict;

while(<>) {
    $_ =~ s/\012\015/\n/g;
    print $_;
}

你按照以下方式运行:

$ perl fixlineendings.pl oldfile.pl > newfile.pl