[ic] TrackSub is Broke?
Mike Heins
mike at perusion.com
Sat Apr 30 23:00:46 EDT 2005
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.
--
Mike Heins
Perusion -- Expert Interchange Consulting http://www.perusion.com/
phone +1.765.647.1295 tollfree 800-949-1889 <mike at perusion.com>
Nature, to be commanded, must be obeyed. -- Francis Bacon
More information about the interchange-users
mailing list