0

プロジェクトのために Python を Perl に翻訳しています。私が求めているのは、ヒント、または私の問題の出発点です。

if問題: Python の複数行の/ for/whileステートメント (1 ブロックのインデントがそれぞれ 4 つのスペースに相当すると仮定) を Perl に変換するにはどうすればよいですか?

これをPerlで書いているので、ある種のデータ構造(配列など)を使用して、同じレベルのインデントを持つ連続した行のブロックをキャプチャすることを考えていましたが、これを行う方法が正確にはわかりません?

別の可能な方法は、次の行を「覗く」ことです (私は を使用して Python ファイルを読み込んでいますwhile (<>))。しかし、それはポインタを次の行に変更します。

Python コードの例を次に示します。

#!/usr/bin/python
import sys

x = 4
for i in range(0, x+1):
    print i
    i = i + 1

うまくいけば、次のように翻訳されます。

#!/usr/bin/perl -w

$x = 4;
foreach $i (0..$x) {
    print $i, "\n";
    $i = $i + 1;
}
4

1 に答える 1

3

なぜ誰もがこれをやりたがるのか理解できませんが、Python を Perl に変換すると主張するPerthonというプロジェクトがあるようです。

少なくとも、彼らは正規表現を使用する代わりにParse::RecDescentを使用して正しい方法でそれを行っています ;-)

于 2012-04-22T16:16:15.830 に答える