Hi Chris,

On Monday 08 April 2013 14:45:40 Chris Nighswonger wrote:

> > However, this code borks:
> > ...
> > __DATA__
> > 
> > __Python__
> > 
> > def pykota_version():
> >     from pykota.version import __version__
> >     return __version__
> > 
> > The error is:
> >   File "<string>", line 3
> >   
> >     from pykota.version import
> >     
> >                               ^
> > 
> > SyntaxError: invalid syntax

Using perl Makefile.PL -debug when building Inline::Python gives a good hint. 
With this flag it will print loads of information including Python source code 
it compiles to stderr.

This gives us:

py_eval: code:                                                                  
                                                                                
                                  
def pykota_version():                                                           
                                                                                
                                  
    from pykota.version import 
py_eval: main_module=0x7fd023985be8
py_eval: globals=0x229aac0
py_eval: type=1
py_eval: context=257
  File "<string>", line 3
    from pykota.version import 
                              ^
SyntaxError: invalid syntax

I've never used DATA file handles in Perl much less with Inline::Python, so 
I'm not exactly sure. But the debug output looks like the Python source code 
ends at __version__. So I guess, the code reading the DATA file processes 
everything from __Python__ to the next marker and treats every word enclosed 
in double underscores as such marker.

Indeed, every other way of giving Python source code to Inline::Python seems 
to work ok.

Regards,
Stefan

Reply via email to