小编Sub*_*ash的帖子

如何避免将重复值推送到Perl数组中

我需要从包含多个重复值的输入中添加数组中的唯一元素.

如何避免将重复值推送到Perl数组中?

arrays perl

11
推荐指数
2
解决办法
2万
查看次数

需要Perl正则表达式,它与从3.10.1.0开始的每个软件版本以及所有其他版本编号都匹配

这是我的测试用例。

在版本3.10.0.0之前可以使用的cmd_1在以后的版本中将不起作用。Cmd_2在3.10.1.0中引入,将是以后的有效替换。

我需要为上述情况添加一个条件。对于3.10.1.0之前的旧版本,必须执行cmd_1,而对于3.10.1.0及更高版本,则必须执行cmd_2。

我尝试如下:

if ( ( $version =~ /^3\.10\.[1-9]/ ) || ( $version =~ /^3\.[1-9][0-9]/ ) || ( $version =~ /^[4-9]/ ) {
    # execute cmd_2;
}else{
    # execute cmd_1;
} 
Run Code Online (Sandbox Code Playgroud)

上述正则表达式在某些情况下会失败。例如,在version = 3.10.0.0的情况下,将执行cmd_2,这是无效的。

Cmd_2必须在以下版本中执行:

3.10.1.03.10.2.03.11.0.03.11.2.03.20.0.04.0.0.05.0.0.010.0.0.0

Cmd_1必须在以下版本中执行:

3.10.0.03.9.0.03.1.0.03.0.0.02.0.0.01.0.0.0

我尝试了一些正则表达式,但找不到理想的正则表达式。请帮我解决一下这个。

提前致谢。

regex perl version

6
推荐指数
2
解决办法
101
查看次数

如何从perl脚本发送布尔值而不将它们转换为字符串

我将Perl数据结构传递给encode_json,并使用其返回值作为输入来发布到restful API.

例:

$data = (input1 => true);
$json_data = encode_json($data);
print $json_data; // Prints: ["input1":"true"]

$url= http://api.example.com/resources/getDataAPI
$headers = {Accept => 'application/json', Authorization => 'Basic ' . encode_base64($username . ':' . $password)};

$client = REST::Client->new();
$client->POST($url,($json_data,$headers));
Run Code Online (Sandbox Code Playgroud)

这一切都很好.

最近,另一个开发人员进行了很少的输入参数验证检查,REST严格接受布尔值,没有引号.

我现在需要发送我的输入

$data = '["inout1":true]'
$client = REST::Client->new();
$client->POST($url,($data,$headers));
Run Code Online (Sandbox Code Playgroud)

我的所有脚本都失败了,因为输入数据使用encode_json函数编码为JSON格式.

我可以手动形成JSON数据,但输入数据有时会非常庞大​​.无法识别它们并随时修改.

有没有办法可以实现没有引号的传递布尔值?

perl json boolean

5
推荐指数
1
解决办法
2617
查看次数

标签 统计

perl ×3

arrays ×1

boolean ×1

json ×1

regex ×1

version ×1