# store in array if it doesn't exist
if (! grep(/^$v$/, @{$main::cache->{mem_lookup}->{$k}})) {
push @{$main::cache->{mem_lookup}->{$k}}, $v;
-#print STDERR "## mem_lookup store: $k => $v\n";
+#print STDERR "## mem_lookup store: $k => $v [",join("|",@{$main::cache->{mem_lookup}->{$k}}),"]\n";
}
} elsif (/^(.*)\[([^\[]*)\[([^\[\]]+)\]([^\]]*)\](.*)$/) {
# indirect lookup [prefix[key]suffix]
my ($pre,$prek,$k,$postk,$post) = ($1,$2,$3,$4,$5);
if ($main::cache->{mem_lookup}->{$k}) {
my @keys = @{$main::cache->{mem_lookup}->{$k}};
-#print STDERR "## mem_lookup fetch keys $k == ".join("|",@keys)."\n";
+#print STDERR "## mem_lookup fetch keys $pre|$prek|$k|$postk|$post == [".join("|",@keys)."]\n";
foreach my $k2 (@keys) {
- if ($main::cache->{mem_lookup}->{$prek.$k2.$postk}) {
- foreach my $v (@{$main::cache->{mem_lookup}->{$prek.$k2.$postk}}) {
- push @out,$pre.$v.$post;
+ my $full_k = $prek.$k2.$postk;
+ if ($main::cache->{mem_lookup}->{$full_k}) {
+ foreach my $v (@{$main::cache->{mem_lookup}->{$full_k}}) {
+ my ($pret,$postt) = ($pre,$post);
+ $pret=~s/\[$k\]/$k2/g;
+ $postt=~s/\[$k\]/$k2/g;
+ push @out,$pret.$v.$postt;
}
}
}
-#print STDERR "## mem_lookup return values $k == ".join("|",@out)."\n";
+#print STDERR "## mem_lookup return values $pre\[$prek\[$k\]$postk\]$post == [".join("|",@out)."]\n";
}
} elsif (/^(.*)\[([^\[\]]+)\](.*)$/) {
}
}
#print STDERR "mem_lookup dump: ",Dumper($main::cache->{mem_lookup}),"\n";
+#print STDERR "out: ".Dumper(@out)."\n" if (@out);
return @out;
}