0

这是我的数据结构。

   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";
            }

      }
}

这就是我得到的..

引用键的参数类型必须是 unblessed hashref 或 arrayref

更新:

这也行不通,顺便说一句

 sub GetPayLoad{

           my(@payloads);
           (@payloads)=@_;

        for my $payload (@payloads){

               for my $key (sort keys %$payload){
                   print "$payload->{$key} \n";
               }

        }

}

不能使用字符串(“TR”)作为哈希引用,而“严格引用”在

我在这个例子中创建我的代码:

在此处输入链接描述

但这并不重要

4

1 回答 1

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--');
于 2013-10-12T10:33:53.810 回答