This thread讨论了在Bash脚本中运行Python代码的方法。
有没有办法在Perl脚本中做类似的事情?即是否有任何方法运行在Perl脚本上键入的Python代码?请注意,我不是要求从Perl脚本运行Python 文件。我问的是直接在同一个包含Perl脚本的文件中运行Python代码(与其他线程讨论如何运行Perl代码的Bash脚本相同)。
示例:
# /bin/perl
use 5.010
my $some_perl_variable = 'hello';
# ... BEGIN PYTHON BLOCK ...
# We are still in the same file. But we are now running Python code
import sys;
print some_perl_variable # Notice that this is a perl variable
for r in range(3):
print r
# ... END PYTHON BLOCK ...
say "We are done with the Perl script!"
say "The output of the Python block is:"
print $output"
1;
应打印:
We are done with the Perl script!
The output of the Python block is:
hello
1
2
3
我们完成了perl脚本
答案 0 :(得分:4)
听起来你会对Inline
模块感兴趣。它允许Perl以许多其他语言调用代码,并依赖于每种语言的支持模块。
你没有说你想做什么,但你提到了Python,并且有一个Inline::Python
。
答案 1 :(得分:2)
是的,Perl可以使用相同的技术(here-docs)。
Bash中的Perl:
perl <<'END' # note single quotes to avoid $variable interpolation
use 5.010;
say "hello world";
END
或
perl -E'say "hello from perl"'
Perl中的Bash:
use autodie; # less error handling
open my $bash, "|-", "bash";
print $bash <<'END'; # single quotes again
echo hello from bash
END
Perl in Bash in Perl:
use autodie; # less error handling
open my $bash, "|-", "bash";
print $bash <<'END'; # single quotes again
perl <<'INNER_END'
use 5.010;
say "hello inception";
INNER_END
END
(我在命令行上讽刺地测试了另一个heredoc)