例如: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 ......
请帮助获取此输出。
答案 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