这是我的数据结构。
my @mysqlBooleanNumeric=(
( 'TR'=>" OR 1=1--", 'FAL'=>" OR 1=2--"),
('TR'=>"/**/OR/**/1=1--", 'FAL'=>"/**/OR/**/1=2--" )
);
我在一个函数中使用它。
sub main{
GetPayLoad(@mysqlBooleanNumeric);
}
这是功能。
sub GetPayLoad{
my(@payloads,%categories,$key,$value);
(@payloads)=@_;
for my $i (0 .. $#payloads ) {
foreach my $key ( keys $payloads[$i] )
{
print "$payloads[$i]{$key}\n";
}
}
}
这就是我得到的......
引用键的参数类型必须是非散列的hashref或arrayref
更新:
这也不起作用,BTW
sub GetPayLoad{
my(@payloads);
(@payloads)=@_;
for my $payload (@payloads){
for my $key (sort keys %$payload){
print "$payload->{$key} \n";
}
}
}
中的“strict refs”时,不能使用字符串(“TR”)作为HASH引用
我在此示例中创建了我的代码:
但它确实没有人。
答案 0 :(得分:1)
匿名哈希是用大括号引入的,而不是圆括号:
my @mysqlBooleanNumeric = (
{ TR => ' OR 1=1--', FAL => ' OR 1=2--'},
{ TR => '/**/OR/**/1=1--', FAL => '/**/OR/**/1=2--'},
);
使用圆括号等同于
my @mysqlBooleanNumeric = ( 'TR', ' OR 1=1--', 'FAL', ' OR 1=2--',
'TR', '/**/OR/**/1=1--', 'FAL', ' \/**/OR/**/1=2--');