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
>
>