![](/img/trans.png)
[英]How do I use (or convert, or view) inline Python objects in Perl?
[英]How to use Perl objects and Methods in Python
我需要在我正在編寫的新 python 腳本中使用以前開發的 Perl 代碼。 我遇到的問題是我無法使用 import 將 Perl 文件導入到 python 代碼中,因為它們都是用 Perl 編寫的。有沒有一種方法可以繞過它並仍然以某種方式將 perl 代碼與我的 python 代碼一起使用重寫 50+ perl 個程序。
一個例子
在 perl 文件中,我可以定義一輛 object 汽車,顏色為紅色、make nissan 和 model altima,我需要能夠將其實現到我的 python 代碼中。
不能直接合理組合Perl和Python代碼。 雖然有一些方法可以實現互操作性(例如用 C 語言編寫膠水代碼),但它遠非無縫,而且可能比重寫所有代碼需要更多的努力。
在這種情況下,我嘗試做的是用一個簡單的命令行界面包裝舊代碼。 然后,Python 代碼可以通過 subprocess.run subprocess.run()
或check_output()
運行 Perl 腳本。 如果需要在程序之間傳輸復雜數據,使用 JSON 通常是最簡單的。或者,用簡單的 REST API 包裝舊代碼也可能有效,特別是如果 Perl 代碼必須在多個交互中攜帶一些 state。
這適用於重用獨立的業務邏輯片段,但不適用於重用 class 定義。
如果您可以修改(而不是重寫)Perl 代碼,您可以讓它轉儲 JSON 數據,以便 Python 腳本可以讀取它。這是一個示例。
原始 Perl 腳本:
use warnings;
use strict;
use JSON;
my $file = 'data.json';
my %h = (
foo => 'bar',
baz => ['a', 'b', 'c'],
raz => {
ABC => 123,
XYZ => [4, 5, 6],
}
);
my $json = encode_json \%h;
open my $fh, '>', $file or die $!;
print $fh $json;
close $fh or die $!;
Python腳本讀取數據:
#!/usr/bin/python
import json
file = 'data.json';
data = json.loads(open(file).read())
print(data)
本質上就是數據output的翻譯。 以約定的格式轉儲數據,然后讀回。這樣,您就不必擔心從另一種語言運行一個程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.