确保变量作为整数传递

时间:2013-07-03 20:42:15

标签: json perl

如何确保将变量值作为整数传递?我有一个传递给JSON调用的变量,如果我通过getopts设置值,然后在事件中将值传递给JSON,则失败。无论是在命令行上输入值还是通过设置的默认值输入,都会失败。

例如:

my $code = $opt_s||'4';

但是,如果我像这样设置硬编码值:

$code = '4';

这很有效。

API期望提供int。我假设我的变量在第一种情况下被转换为字符串但是,我无法弄清楚如何阻止这种行为。

由于 蜂

2 个答案:

答案 0 :(得分:2)

我会考虑一个有缺陷的API,因为Perl认为有符号整数(IV)四,无符号整数(UV)四,浮点数(NV)四,8位字符串(PV,UTF8 = 0)四和72 -bit字符串(PV,UTF8 = 1)四个相同的值。 (而且这甚至不计算重载的对象和神奇的变量!)

您可以使用带数字并返回数字的操作将值的表示形式转换为数字格式之一(IV,UV或NV):

0+$code

如果您想要专门使用IV,则可能需要访问perlapi。

答案 1 :(得分:0)

要获取数字的整数部分,请使用int() http://perldoc.perl.org/functions/int.html

另见:

Perl是否有round()函数?那么ceil()和floor()怎么样? http://perldoc.perl.org/perlfaq4.html#Does-Perl-have-a-round%28%29-function%3F-What-about-ceil%28%29-and-floor%28%29%3F-Trig-functions%3F