我知道$ msg有多少参数但是我无法弄清楚如何计算$ cmd_data中{x}的数量。 如果我有两个计数,我可以比较,然后看看用户是否为cmd输入了足够的参数。
我用m / {(\ d +)} / g尝试了它,然后使用标量来获取匹配数。 但这总是归零。
用$ msg中的params替换$ cmd_data中的{x}的代码。
my $syntax_error = 0;
my @params = split(/\s+/, $msg);
my $msg_param_count = @params;
for(my $i = 1; $i < $msg_param_count; $i++) {
$cmd_data =~ s/\{$i\}/$params[$i]/g;
}
$server->command(sprintf("msg $target %s.", $cmd_data));
输出
$msg = "!test param1 param2 param3";
$cmd_data = "test command: {1} {2} {3}";
$output = "test command: param1 param2 param3";
答案 0 :(得分:2)
计算字符串中匹配的数量:
use strict;
use warnings;
my $cmd_data = "test command: {1} {2} {3}";
print scalar(() = $cmd_data =~ m/{(\d+)}/g);
输出
3
如果您之前的问题是指南,我怀疑这是XY Problem。