On Sun, 19 Jan 2003, Nick Ing-Simmons wrote: > Dave Rolsky <autarch@urth.org> writes: > >I've read the Jenness/Cozens book and the various perldocs on XS, but I > >can find no hint of how to use the regex engine from XS. > > It is tricky and risky - trying to use perl's regex engine > to subsitute for Tcl's is one of the recurring porting issues > with perl/Tk. > > The main snag (as I recall) is that in perl you need an "OP" in order > to call some of regex engine. Sigh ... I was afraid someone would say something like that. > Unless you _really_ need this I strongly recommend writing the > "leaf" functions for this in perl and perl_call_sv()-ing them from your > XS code. Well, the main reason Ilya and I are working on this XS code (for Params::Validate) is to speed it up. Calling back and forth to Perl unnecessarily somewhat defeats the purpose. > Unless Hugo wants to give us a clean interface? That'd be cool for the future. One thing I'd say in general about XS is that it just doesn't expose enough of Perl's functionality, at least not in what's documented. And I include the Jenness/Cozens book in that documentation (good book, but it doesn't cover everthing I _want_ to do with XS). For example, in the Params::Validate XS code we need to find out what package the caller is in. Now, obviously Perl can do this, because we have the caller() function. Ilya somehow found the CopSTASHPV macro, and then I found an equivalent way to do this for Perl 5.00503, but it's all a nasty hack since this isn't a documented interface. It seems to me that ideally you could call any Perl function from XS. I realize that's extremely difficult, but there must be some subset of Perl's functionality easily available from XS that isn't documented (like CopSTASHPV). -dave /*======================= House Absolute Consulting www.houseabsolute.com =======================*/Thread Previous | Thread Next