繁体   English   中英

Perl脚本无输出

[英]No output from Perl script

我想在Perl中写一个包含这些行的文件

YOYO -O -i prod_mdin.150 -o prod_mdout.150  

YOYO -O -i prod_mdin.149.75 -o prod_mdout.149.75  

...

YOYO -O -i prod_mdin.10 -o prod_mdout.10

佩尔

print "SrepAring inpCKut filYes\n";

$decr = 0.25;

my $filename = 'report-4.5-3.txt';

open( my $BATCHFILE, '>', "$filename" );

$dihed = 150.0;

while ( $dihed <= 10.0 ) {

    $dihed -= $decr;

    print $BATCHFILE "
YOYO -O -i min_mdin.${dihed} -o min_mdout.${dihed} 
"
}

print "done\n";

close( $BATCHFILE );

您的代码执行此操作:

$dihed=150.0;
while ($dihed <= 10.0) {
  $dihed -= $decr;
  ...
}

while循环的第一次迭代中,布尔条件失败(因为150.0不小于或等于10.0)。 因此, while循环内的代码都不会执行。

也许您的布尔条件应该是$dihed >= 10.0

您的代码无法正常工作的原因是您的测试有错误的感觉:您从150开始,然后在值小于或等于 10的情况下循环运行,从不

重复添加浮点值也是一个不好的主意,因为不正确的结果会越来越多,并导致输出错误。 在这种情况下,您使用的是0.25,它恰好可以精确地表示为二进制分数,但是如果您想要不同的增量,则应该知道最好使用整数来进行计数并将其一一转换为浮点数

最后,您不要求整数中的任何小数位,而要求分数值中的两个小数位。 这可能不是绝对必要的,但是最好使用显式格式字符串以避免某些意外情况

这就是我写你的代码的方式

use strict;
use warnings 'all';

my $filename = 'report-4.5-3.txt';

open my $out_fh, '>', $filename
        or die qq{Unable to open "$filename" for output: $!};

for ( my $d = 150 * 4; $d >= 10 * 4; --$d ) {

    my $fmt = $d % 4 ? '%.2f' : '%.0f';
    my $dihed = sprintf $fmt, $d / 4;

    print $out_fh "\nYOYO -O -i min_mdin.${dihed} -o min_mdout.${dihed}\n";
}

输出

YOYO -O -i min_mdin.150 -o min_mdout.150

YOYO -O -i min_mdin.149.75 -o min_mdout.149.75

YOYO -O -i min_mdin.149.50 -o min_mdout.149.50

YOYO -O -i min_mdin.149.25 -o min_mdout.149.25

YOYO -O -i min_mdin.149 -o min_mdout.149

...

YOYO -O -i min_mdin.11 -o min_mdout.11

YOYO -O -i min_mdin.10.75 -o min_mdout.10.75

YOYO -O -i min_mdin.10.50 -o min_mdout.10.50

YOYO -O -i min_mdin.10.25 -o min_mdout.10.25

YOYO -O -i min_mdin.10 -o min_mdout.10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM