[ic] TrackSub is Broke?
Duane Hinkley
duane at downhomewebdesign.com
Sun May 1 11:51:17 EDT 2005
Mike Heins wrote:
>Quoting Duane Hinkley (duane at downhomewebdesign.com):
>
>
>>I'd like to use the option in the Track.pm module to define my own
>>subroutine to save the tracking information but it appears to be broke
>>or just impossible to do. I've tried about every way I can think of to
>>define TrackSub in my catalog.cfg file so $Vend::Cfg->{TrackSub}
>>containing a reference to a subroutine. There's no way to make it work.
>>
>>What get's me the closest to working is putting the following in
>>interchange.cfg
>>
>>AddDirective TrackSub
>>
>>Then I put the following in catalog.cfg;
>>
>>TrackSub customtrack
>>TrackSub <&EOR
>>sub {
>> return 'test';
>>}
>>EOR
>>
>>That gives me the following error:
>>
>>Runtime error: Can't use string ("test") as a subroutine ref while
>>"strict refs" in use at /usr/lib/interchange/lib/Vend/Track.pm line 188.
>>
>>Could someone let me know how to define a subroutine ref to make this
>>work? Or is this just broke?
>>
>>
>
>I had never used it, so I didn't know about the mechanism. It
>seems to me this in interchange.cfg is the only (relatively)
>easy way to do it:
>
>GlobalSub hook_to_parser <<EOS
>sub {
> sub parse_customtrack {
> my ($var, $name) = @_;
> my $sub = $C->{Sub}->{$name} || $Global::GlobalSub->{$name};
> return $sub || '';
> }
>}
>EOS
>
>AddDirective TrackSub customtrack
>
>Then in your catalog.cfg:
>
>Sub <<EOR
>sub trackfoo {
> Log("Called trackfoo");
>}
>EOR
>
>TrackSub trackfoo
>
>The TrackSub can then be the name of a GlobalSub or a Sub -- it needs
>to open and write a file or program to do something useful, of course.
>
>
>
Wow, Mike. I would have never figured that one out.
If I changed the Track.pm to use the same method for defining the
subroutine to use as the Payment.pm uses to call the payment modules,
that seems like a simpler way for future users to plug in a custom
tracking module. Then they would just have to pass the name of the
module to use.
Would that work better?
--
Sincerely,
Duane Hinkley
Down Home Web Design, Inc.
(208) 424-0572 Fax(208) 587-0738
duane at downhomewebdesign.com
www.downhomewebdesign.com
More information about the interchange-users
mailing list