Hello Kevin.

You can run perl code from tcl interpreter using (works for Tkx)
::perl::Eval {
   # perl code  
}

for example,
sub do_something {
   print "Hello\n";
}

Tkx::eval(<<EOT

# … TCL code
# ...
proc invoke_perl_code {} {
  ::perl::Eval {
     main::do_something();
  }
}

invoke_perl_code

EOT
);


--  
Best regards,
Alexander Nusov


On Sunday, August 19, 2012 at 9:19 PM, Kevin Walzer wrote:

> Hello all,
>  
> I'm learning Perl and Tkx and am wondering if it is possible to pass  
> Perl functions to the Tcl interpreter in a manner similar to Python's  
> "register" method in the Tkinter module. In Python, you can call  
> register("mypythonfunction"), which is then passed to the Tcl  
> interpreter as though it were a Tcl procedure. This functionality is  
> useful when interacting wtih the Tcl interpreter at a low level.
>  
> Let me explain my interest in this issue. I'm working on Mac OS X and am  
> trying to build a Perl/Tkx application that supports responding to  
> AppleEvents, i.e. you can script the Perl-based application via  
> AppleScript just like you can script Safari, iTunes, Photoshop, and  
> other apps. Perl, though, lacks up-to-date methods for integrating with  
> AppleScript; its current methods, such as  
> http://search.cpan.org/~cnandor/Mac-AppleEvents-Simple-1.18/Simple.pm,  
> are based on deprecated functions that don't work in a 64-bit context,  
> which is essential.
>  
> I've investigated alternative approaches for adding such functionality,  
> such as creating a SWIG-based extension, but SWIG doesn't allow  
> callbacks into the Perl interpreter. Another approach I've researched is  
> using SWIG to call out to a helper Perl application that would then call  
> the main Perl application via some sort of RPC mechanism, but all the  
> RPC mechanisms I've tried (numerous links at  
> http://search.cpan.org/~powerman/JSON-RPC2-0.1.1/lib/JSON/RPC2.pm#RATIONALE)  
> are all half-baked in some way. (If someone can point me to an RPC  
> module they've had success with, I'd be grateful. Ruby's "druby" module  
> is elegant and simple, but its lack of desktop app deployment tools for  
> the Mac make Ruby unsuitable.)
>  
> So the approach I'd like to try is installing AppleEvent handlers via  
> Tcl's TclAE package: this is a powerful package that can install the  
> appropriate AppleEvents and then execute event handlers in the Tcl  
> interpreter. Integrating this with Perl would, ideally, involve some  
> sort of mechanism where I can "register" a Perl function that is passed  
> to the Tcl interpreter and executed as if it were Tcl code.
>  
> Advice is appreciated.
>  
> Thanks,
> Kevin
>  
> --  
> Kevin Walzer
> Code by Kevin
> http://www.codebykevin.com
>  
>  


Reply via email to