X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=perl%2FPrefix.pm;h=17ba83dca5b7ea6711c7b87fdbd2ce6f27e197ce;hb=3e78861c5df183d45e4dc69bcde40d9672ec7e58;hp=32b1e72ec0ec65c57ae4ba4218c3b163b394a8b1;hpb=da7476ca7af0722de0cab439f6f4eea3d767daf4;p=spider.git diff --git a/perl/Prefix.pm b/perl/Prefix.pm index 32b1e72e..17ba83dc 100644 --- a/perl/Prefix.pm +++ b/perl/Prefix.pm @@ -149,9 +149,12 @@ sub extract foreach $call (split /,/, $calls) { # first check if the whole thing succeeds my @nout = get($call); - push @out, @nout if @nout; - next if @nout > 0 && $nout[0] eq $call; - + if (@nout && $nout[0] eq $call) { + dbg("got exact prefix: $nout[0]") if isdbg('prefix'); + push @out, @nout; + next; + } + # now split the call into parts if required @parts = ($call =~ '/') ? split('/', $call) : ($call); @@ -167,8 +170,11 @@ sub extract # can we resolve them by direct lookup foreach $p (@parts) { @nout = get($p); - push @out, @nout if @nout; - next if @nout > 0 && $nout[0] eq $call; + if (@nout && $nout[0] eq $call) { + dbg("got exact prefix: $nout[0]") if isdbg('prefix'); + push @out, @nout; + next; + } } } @@ -184,8 +190,13 @@ sub extract # for ($i = 1; $i <= length $sp; ++$i) { # now start to resolve it from the right hand end for ($i = length $sp; $i >= 1; --$i) { - my @wout = get(substr($sp, 0, $i)); - next if @wout > 0 && $wout[0] gt $sp; + my $ssp = substr($sp, 0, $i); + my @wout = get($ssp); + if (isdbg('prefix')) { + my $part = $wout[0] || "*"; + dbg("Partial prefix: $sp $ssp $part" ); + } + next if @wout > 0 && $wout[0] gt $ssp; # last if @wout == 0; push @out, @wout; last if @wout;