# indexer, so it's save to leave type="" undefiend
# - lookup will (of course) return one or more values
+use warnings;
+use strict;
+
sub mem_lookup {
my @out;
foreach (@_) {
if (/^(.+)\s=>\s(.+)$/) {
my ($k,$v) = ($1,$2);
# store in array if it doesn't exist
- if (! grep(/^$v$/, @{$main::cache->{mem_lookup}->{$k}})) {
+ if (! grep(/^\Q$v\E$/, @{$main::cache->{mem_lookup}->{$k}})) {
push @{$main::cache->{mem_lookup}->{$k}}, $v;
#print STDERR "## mem_lookup store: $k => $v [",join("|",@{$main::cache->{mem_lookup}->{$k}}),"]\n";
}
my ($pre,$k,$post) = ($1,$2,$3);
if ($main::cache->{mem_lookup}->{$k}) {
#print STDERR "## mem_lookup fetch $k == ".join("|",@{$main::cache->{mem_lookup}->{$k}})."\n";
- foreach my $v (@{$main::cache->{mem_lookup}->{$k2}}) {
+ foreach my $v (@{$main::cache->{mem_lookup}->{$k}}) {
push @out,$pre.$v.$post;
}
}
}
#print STDERR "mem_lookup dump: ",Dumper($main::cache->{mem_lookup}),"\n";
#print STDERR "out: ".Dumper(@out)."\n" if (@out);
- return @out;
+ return wantarray ? @out : shift @out;
}
1;