在perl中,无法迭代数组中的哈希
这是我的数据结构在perl中,无法迭代数组中的哈希,perl,Perl,这是我的数据结构 my @mysqlBooleanNumeric=( ( 'TR'=>" OR 1=1--", 'FAL'=>" OR 1=2--"), ('TR'=>"/**/OR/**/1=1--", 'FAL'=>"/**/OR/**/1=2--" ) ); 我在函数中使用它 sub main{ GetPayLoad(@mysqlBooleanNumeric); } sub Ge
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";
}
}
}
这就是函数
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";
}
}
}
这就是我得到的
引用上键的参数类型必须为未lessed hashref或arrayref
更新:
顺便说一句,这也不行
sub GetPayLoad{
my(@payloads);
(@payloads)=@_;
for my $payload (@payloads){
for my $key (sort keys %$payload){
print "$payload->{$key} \n";
}
}
}
在中“strict refs”时不能将字符串(“TR”)用作哈希引用
我创建的代码如下示例所示:
但它并不意味着匿名散列在花括号中,而不是圆括号中:
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--');
这是一个混乱的解决方案。我想要一个散列数组。当我使用该语法时,它还认为数组中有8个元素。.为什么?@user2873728:解决方案是第一个代码示例。他是说您所编写的代码相当于第二个代码示例。