[ic] Problems using SearchOp
Tim Good
tim.g at edsd.com
Wed Jul 5 09:44:48 EDT 2006
> -----Original Message-----
> From: interchange-users-bounces at icdevgroup.org
> [mailto:interchange-users-bounces at icdevgroup.org] On Behalf
> Of Kevin Walsh
> Sent: Wednesday, July 05, 2006 6:37 AM
> To: interchange-users at icdevgroup.org
> Subject: Re: [ic] Problems using SearchOp
>
> "Tim Good" <tim.g at edsd.com> wrote:
> > I am trying to create my own op for searching on $somedate ge than
> > today.
> > Folling directions at:
> > http://www.icdevgroup.org/pipermail/interchange-users/2005-A
> > pril/042874.html
> > Which differ slightly from:
> > http://www.icdevgroup.org/interchange-doc-5.2.0/frames/icdat
> > abase_32.html
> >
> > Interchange: 5.4.1 stable, Perl: Perl 5.8.7 non-threaded
> Here is what
> > I put in my catelog.cfg :
> >
> > ## Custom search op for greater than todays date ## used to filter
> > auctions which haven't started yet ## from search results.
> > CodeDef auctionstart SearchOp
> > CodeDef auctionstart Routine <<EOR
> > sub {
> > my ($self, $i, $pat) = @_;
> > $pat = reverse($pat);
> > $pat = qr($pat)i;
> >
> > return sub {
> > my $itemstart = shift;
> > return ($itemstart ge "2006-07-03 00:00:00");
> > };
> > }
> >
> You don't need the two $pat lines in there, by the way. They
> were useful in the code you copied/pasted but are not used at
> all in your code.
Thanks for pointing this out. I had realized that.
>
> On the other hand, you might want to pass your date string in
> as a mv_searchspec (se=yourdatestring), and capture that in
> $pat, instead of hard-coding the value in your code.
>
This was exactly my original thoughts but hard coded it to lessen the
Troubleshooting points.
> >
> > And the error I get is:
> >
> > search error: Limit subroutine creation: Can't use an
> undefined value
> > as an ARRAY reference at /usr/local/interchange/lib/Vend/Search.pm
> > line 653.
> >
> Try this patch:
>
> *** lib/Vend/Search.pm- Wed Jul 5 12:44:01 2006
> --- lib/Vend/Search.pm Wed Jul 5 13:30:27 2006
> ***************
> *** 649,656 ****
> $c->[$i] =~ tr/ \t//;
> my $o = $c->[$i];
> $c->[$i] = $s->{mv_numeric}[$i]
> ! ? [ @{$numopmap{$o}} ]
> ! : [ @{$stropmap{$o}} ];
> if(! $c->[$i]) {
> my $r;
> $c->[$i] = [$r, $o], next
> --- 649,656 ----
> $c->[$i] =~ tr/ \t//;
> my $o = $c->[$i];
> $c->[$i] = $s->{mv_numeric}[$i]
> ! ? $numopmap{$o}
> ! : $stropmap{$o};
> if(! $c->[$i]) {
> my $r;
> $c->[$i] = [$r, $o], next
>
> The dereference and re-reference seems wasteful to me, and is
> the cause of the problem you reported. If there's a reason
> for doing that, and I can't see one, then it can be done
> later in the code.
>
Kevin thank you for you time in figuring out the patch.That is exactly
What the doctor ordered. Cheers!
> --
> _/ _/ _/_/_/_/ _/ _/ _/_/_/ _/ _/
> _/_/_/ _/_/ _/ _/ _/ _/_/ _/ K e v i n
> W a l s h
> _/ _/ _/ _/ _/ _/ _/ _/_/ kevin at cursor.biz
> _/ _/ _/_/_/_/ _/ _/_/_/ _/ _/
> _______________________________________________
> interchange-users mailing list
> interchange-users at icdevgroup.org
> http://www.icdevgroup.org/mailman/listinfo/interchange-users
>
More information about the interchange-users
mailing list