我的问题是im打印的返回值没有被翻译成值。
我在测试文件中有以下代码。
#!/usr/bin/perl -I/srv/www/jonathan/m/www
my $var = sprintf("$%.1f lbs",(77*2.20462));
print $var;
它返回:0.1f
而不是我需要看到的值。
我在这里做错了什么?我是个新手。
答案 0 :(得分:2)
你的问题是Perl将“$%。1f”解释为变量$%
,后跟“.1f”。 $%
是一个特殊的Perl变量,包含“当前所选输出通道的当前页码”(参见perlvar),其值为0,因此打印的是字符串“0.1f”。
这有几种方法。
您可以删除美元符号:sprintf("%.1f lbs",(77*2.20462))
。但是这会改变你显示的字符串。
你可以逃避美元告诉Perl它并不特别:sprintf("\$%.1f lbs",(77*2.20462))
。
但我认为有更好的解决方案。 Perl将美元符号视为双引号字符串中的特殊字符。但是你的字符串没有理由被双引号。因此,只需更改格式字符串即可使用单引号:sprintf('$%.1f lbs',(77*2.20462))
。
最后一个是我使用的解决方案。
答案 1 :(得分:1)
Perl使用 dolar($)符号来声明标量变量,您需要从sprintf中删除$
符号。
更正后的代码
my $var = sprintf("%.1f lbs",(77*2.20462));
print $var;
输出
169.8 lbs