【发布时间】:2014-07-23 14:29:04
【问题描述】:
我已经编写了一个代码来访问 perl 中的嵌套数据(非常复杂)数据结构。
<%method searchFeatureInFG>
<%args>
$featureGroup
$featureNameHash
</%args>
<%init>
my $foundFeature = 0;
my $foundGroup = undef;
my $foundIndex = undef;
if(defined $featureGroup && defined $featureNameHash){
for(my $i = 0; $i < @$featureGroup; $i++){
#print "<pre>".Data::Dumper::Dumper($featureGroup->[$i]->{'features'})."</pre>";
if(ref($featureGroup->[$i]) eq 'HASH'){
if(defined $featureNameHash->{$featureGroup->[$i]->{'name'}}){
$foundGroup = $featureGroup;
$foundIndex = $i;
$foundFeature = 1;
}
elsif(defined $featureGroup->[$i]->{'features'}){
for(my $j = 0; $j<scalar @{$featureGroup->[$i]->{'features'}} ; $j++){
for(my $k=0;$k<scalar @{$featureGroup->[$i]->{'features'}->[$j]->{'features'}};$k++) {
if (defined $featureGroup->[$i]->{'features'}->[$j]->{'features'}->[$k]->{'name'}) {
print $featureGroup->[$i]->{'features'}->[$j]->{'features'}->[$k]->{'name'}."\n";
}
}
last if !defined $featureGroup->[$i+1]->{'features'};
}
}
}
}elsif(defined $featureNameHash->{$featureGroup->[$i]}){
$foundFeature = 1;
$foundGroup = $featureGroup;
$foundIndex = $i;
}
last if($foundFeature);
}
}
return ($foundFeature, $foundGroup, $foundIndex);
</%init>
</%method>
这给了我如下错误。
Global symbol "$i" requires explicit package name at
Global symbol "$foundFeature" requires explicit package name at
Global symbol "$foundGroup" requires explicit package name at
Global symbol "$featureGroup" requires explicit package name at
Global symbol "$foundIndex" requires explicit package name at
这些错误是什么意思?
【问题讨论】:
-
你怎么能写了这段代码却不知道
strict错误是什么意思?另外,这不是 Perl 代码,它是在其他工具中用于创建 Perl 代码的东西。 -
@TLP,它看起来像梅森。
-
您应该将
logic放入一个perl 模块中,并且在Mason component中只调用该模块并执行模板操作。如果它是一个模块,它更容易调试。您正在尝试将旧的HTML::Mason转换为Mason,但您应该了解其中的差异。%args已从Mason消失(阅读:metacpan.org/pod/distribution/Mason/lib/Mason/Manual/…)