如果按原样运行此脚本,则可以正常运行
但为什么这不适用于cgi
?
当我使用_\01_
代替_\00_
时,它也适用于cgi
。
#!/usr/bin/env perl
use warnings;
use 5.012;
### script_1.cgi #########################################
my @array = ( '1524', '2.18 MB', '09/23/03', '_cool_name_', 'type' );
my $row = join "_\00_", @array;
say $row;
# submit $row to script_2.cgi
### script_2.cgi #########################################
# ...
# my $row = $cgi->param('row');
# my $name;
if ( $row =~ /_\00_([^\00]+)_\00_type\z/ ) {
# $name = $1;
say "Name: <$1>";
} else {
die "<$row> $!";
}
# Software error:
# <1524_�_2.18 MB_�_09/23/03_�__cool_name__�_type> at script_2.cgi line of "die "<$row> $!";"
答案 0 :(得分:5)
对我而言,_cool_name_
说。您可能与CGI.pm using \0
already for itself发生冲突,但由于您没有发布完整的代码,因此没有人可以肯定地说。
我将利用这个机会解开问题。你应该学到的课程是: