0
如果我按原样运行此脚本,它将起作用。
但是,为什么这不适用于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> $!";"
它与JSON合作。但是我还没有理解''如果它发生在数据中('c.f.字符串表达式中的双反斜杠和sprintf表达式中的双百分比)''''',你就犯了不编码分隔符的典型错误。 – 2011-05-14 13:59:51
考虑用反斜杠表示的字符串中的特殊字符。当你需要表达反斜杠本身时,你做了什么?对于更复杂的例子,研究PCX中的RLE。然后将你的知识应用于这种情况,如果任何元素已经包含'\ 0',你的@array会发生什么。 – daxim 2011-05-15 07:50:13