perl - 在模块版本检查期间传递给 Perl VERSION 子例程的参数
问题描述
我定义了一个 Perl 模块,如下所示:
#!/usr/bin/env perl
use strict;
use warnings;
package Sample;
use Data::Dumper;
our $VERSION = v1.10;
sub VERSION
{
my ($class, $version) = @_;
print ("version is $version\n");
print Dumper ($version);
}
传入的值的性质$version
取决于模块的导入方式:
$ perl -e 'use Sample 1.0'
version is 1
$VAR1 = '1';
但是,如果所需的模块版本指定为 v-string:
$ perl -e 'use Sample v1.0'
version is
$VAR1 = v1.0;
$version
在第二种情况下传入的是什么数据类型?它显然不是一个简单的标量,也不是参考。
解决方案
v 字符串是一个字符串。每个数字都假定为 Unicode 代码点并转换为该字符,因此您实际打印出来的是 chr(1) 。字符(0)。您可以使用以下脚本证明这一点
my $vstring = v80.101.114.108
print $vstring, "\n";
这将打印Perl
推荐阅读
- arrays - 如何在索引处访问数组字典的数组值?
- isabelle - 在 Isabelle 中完善定义
- python - 无法使用 Python 请求会话模块登录网站
- node.js - 如何在开发模式下针对大量记录优化 MongoDB 查询?
- python - 遍历 pandas 数据框中的特定列和行以执行检查
- javascript - 使用 JQuery 访问嵌套的 CSS 选择器
- python - / 不支持的操作数类型:'Adam' 和 'int
- jquery - 如何使用 JQuery 在导航栏中更改列表项/元素的背景颜色?
- json - 没有从烧瓶路由到 ReactJS 前端的响应
- corda - selection.AbstractCashSelection.unconsumedCashStatesForSpending 时出现不可恢复的检查点错误 - 硬币选择失败