首页 > 解决方案 > 从 Perl 调用 Python 脚本

问题描述

我正在尝试在 perl 中捕获 python 退出代码形式。

我的python代码py_test.py:

import sys
sys.exit(sys.argv[1])

我的 perl 代码 test.pl:

#!/usr/bin/perl -w
$res = system("python py_test.py ".$ARGV[0]);
print("\$res ==== $res \n >>>". $? ."\n");

我跑了:

perl test.pl 4

结果是:

4
$res ==== 256
>>>256

我在 32 位 RHEL 5.3 上使用 python 2.4.3 和 perl 5.8.8。

有人可以帮我理解这里发生了什么,我似乎无法理解这种行为,我做错了什么吗?(我看了这个代码几个小时,我从来没有遇到过系统这么奇怪的东西)

标签: pythonperl

解决方案


我发现了我的问题。我进入了 sys.exit argv[1],但在开始时,python 将其视为字符串。在我将其更改为 sys.exit(int(argv[1])) 后一切正常。

这也解释了为什么它打印“4”......


推荐阅读