出现以下错误:
名称“main :: s”仅使用一次:第22行可能错误。
第5行不是HASH参考。
sub addtwo {
my $params = shift;
my $s = $params->{structure};
if ( ref( $s ) eq "LIST" ) {
$c = 0;
foreach $e ( @{$s} ) {
$s->[$c] = addtwo( { structures => $e } );
$c++;
}
}
elsif ( ref( $s ) eq "HASH" ) {
if ( scalar keys %{$s} == 0 ) {
return undef;
}
else {
foreach my $e ( values %{$s} ) {
$s{$e} = addtwo( { structure => $s->{$e} } );
}
}
}
else {
$s = 1;
}
return $c;
}
print addtwo(
[
{ a => 1, b => 2, c => 3 },
{ d => 4, e => 5 },
[ 6, 7, 8 ],
9,
10,
11,
[ 12, 13, 14 ]
]
);
答案 0 :(得分:1)
请 将use strict
和use warnings 'all'
添加到您编写的每个 Perl程序的顶部。它不是初学者的安全网:它对于任何专业编程都是必不可少的
与%s
一样,您尚未声明$c
或$e
,除非您至少{my
,否则使用use strict
毫无意义。 1}}实际上
提供一个“解决方案”就是重写你所放下的大部分内容,所以我认为你最好实施到目前为止给出的建议
但是,正如我在评论中写的那样,请尝试一次编写一小部分程序,并确保在想要添加更多功能时有一个坚实的基础