python - 内联 - 在 perl 中从 python 访问 python 变量
问题描述
use Inline Python => <<END;
var_py = "test"
END
my $var1 = "from_perl";
print "var1 $var1\n";
print "variably from py $var_py\n";
输出:
var1 from_perl
从 py 可变
我得到内联 Python 中定义的 python 变量的空值。有人可以建议如何从 perl 中读取 python 中定义的变量吗
解决方案
use Inline Python => ( <<'__EOS__' =~ s/^[ ]{3}//mgr );
import sys
var_py = "test"
def get_var_py():
return var_py
def _get_global_var(name):
name = name.decode('UTF-8')
return globals()[name]
def _get_module_var(mod_name, var_name):
mod_name = mod_name.decode('UTF-8')
var_name = var_name.decode('UTF-8')
return getattr(sys.modules[mod_name], var_name)
__EOS__
sub get_global_var { my @args = @_; utf8::encode($_) for @args; _get_global_var(@args) }
sub get_module_var { my @args = @_; utf8::encode($_) for @args; _get_module_var(@args) }
say "Variable from py: " . get_var_py();
say "Variable from py: " . get_global_var('var_py');
say "Variable from py: " . get_module_var('__main__', 'var_py');
输出
Variable from py: test
Variable from py: test
Variable from py: test
推荐阅读
- drupal - 没有目标_blank的Ckeditor链接锚?
- pymongo - 试图在pymongo中获取带有日期的对象ID
- batch-file - 为什么这些 DOS 变量是空的?(例如 %DATE%、%ERRORLEVEL%)
- java - 删除主题后的 Broker 磁盘使用情况
- css - HTML5 + CSS:DIV左右浮动
- c# - 多对多自我参考
- tomcat - Tomcat 问题:我尝试部署 WAR 文件,但收到此消息:源服务器未找到目标资源的当前表示
- python - Python在读取JSON文件时抛出错误
- swift - 从其他视图控制器执行功能
- c# - 如何使用数据网格视图列值按升序排序?