所以我有这段代码,分析传递给 CGI 调用的参数值。
我有这段代码可以做到这一点。
if (defined($passed_args->{'between'})) {
my $between = $passed_args->{'between'};
my $date_field = @$between[0];
my $start_date = @$between[1];
my $end_date = @$between[2];
my $gdt_regex = /[0-9]{4}(-)((0[1-9])|(1[0-2]))(-)((0[1-9])|([1-2][0-9])|(3[0-1]))(\s)(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])/;
if (!defined($passed_args->{$date_field}) && $start_date =~ $gdt_regex && $end_date =~ $gdt_regex) {
$self->error('between parameter not populated correctly.');
return;
}
$query_url .= $date_field . "BETWEEN" . $start_date . "@" . $end_date . "^";
delete $passed_args->{'between'};
}
start_date 和 end_date 的值采用如下格式:
2019-04-04 00:00:00
在我的服务器日志中,我反复收到此警告:
Use of uninitialized value $_ in pattern match (m//) at /my/script.pm line 6316
第 6316 行对应于:
my $gdt_regex = /[0-9]{4}(-)((0[1-9])|(1[0-2]))(-)((0[1-9])|([1-2][0-9])|(3[0-1]))(\s)(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])/;
据我所知,在对未初始化的值进行模式匹配时会出现该错误。但是,当我将正则表达式分配给变量时,为什么会得到它?捕获组是否存在导致 Perl 崩溃的问题?还是我错过了其他东西?
据我所知,这并没有伤害任何东西,但这经常出现在我的日志中,我想清除它。