簡體   English   中英

如何在Python中使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM