我有以下"帮助"子程序:
higherKey()
变量sub help {
print <<HELP;
useage: the script will apply a constant set of changes on the code files
Flags:
-dest: The output directory,
-source: The path to the diractory where the source code is.
-ver: The version of the code (default = $version)
HELP
exit 0;
}
设置为$version
但是当我调用子程序时,它只打印:
3.0
,即它不打印点和零,
我该如何解决这个问题?
答案 0 :(得分:1)
将版本指定为字符串:
my $version = "3.0";
或者使用printf
指定打印数值时的精度。
printf ( "%.1f", $version );
或者,如果你真的想让它变得有趣,那就让$version
成为一个doublevar,它在字符串和数字上下文中给出不同的值。 (这是炫耀 - 它可能是可维护代码的坏主意)。
use strict;
use warnings;
use Scalar::Util qw ( dualvar );
my $version = dualvar ( 3.0, "three point zero" );
print $version,"\n";
if ( $version >= 3.0 ) { print "3.0 or higher\n" };
如果将标量值指定为数字,则perl将其转换为数字。 3.0 = 3.00 = 3
所以它默认以最低精度打印。这就是你遇到这个问题的原因。
您可能会发现查看version
也很有用。
答案 1 :(得分:1)
修复帮助字符串中 目录 的拼写。
使用printf:
sub help {
printf(<<HELP, $version);
useage: the script will apply a constant set of changes on the code files
Flags:
-dest: The output directory,
-source: The path to the directory where the source code is.
-ver: The version of the code (default = %.1f)
HELP
exit 0;
}
输出:
useage: the script will apply a constant set of changes on the code files Flags: -dest: The output directory, -source: The path to the diractory where the source code is. -ver: The version of the code (default = 3.0)