0

バックグラウンド:

perl スクリプトをさまざまなサーバー (すべて AIX UNIX) で実行する必要があります。perl スクリプトには、xml スクリプトからのデータが必要です。データを読み取るだけで、書き込みやその他の変更アクションはありません。xml スクリプトの内容は時々変更されます。

問題:

aix サーバーはモジュールをインストールしないため、perl スクリプトで xml パーサー モジュール (XML::LibXML など) を使用できません。また、それらを 1 つずつインストールしたくありません。多くの aix サーバーがあります。

xml モジュールをインストールした 1 つの Linux サーバー (red Hat Linux) があります。また、すべての aix サーバーがアクセスできます。

xml モジュールを必要とせずに、xml データを perl スクリプトに渡す方法はありますか? 最初にLinuxでxmlを解析してから、出力を入力としてperlスクリプトに渡しますか? 実行可能かどうかはわかりません。

4

3 に答える 3

1

XML が複雑でない場合は、XML を他の形式に変換する簡単なスクリプトを作成できます。単純なハッシュなど、Data::Dumper を使用してファイルにダンプし、AIX で出力を評価します。

複雑な場合は、XML の独自のメモリ内表現を作成し (属性、子要素、テキスト ノード、名前空間に注意してください... 入力はどのくらい複雑ですか?)、それをダンプ/評価する必要があります。

評価するサンプルコード: (未テスト)

# read the data to variable
open my $fh, "<", "dumpfile.txt" or die "file not found";
my $dump = do { local $/ = <$fh> };
close $fh;
# eval the dump
my $VAR1;
eval $dump;
于 2013-10-31T07:53:19.273 に答える
1

利用可能な XML データの .xsd スキーマがある場合 (スキーマがあることは常に良い考えです)、XML::CompileXML データを perl データ構造に変換するために使用できます。YAML 表現を作成するためXML::Compileの便利なスクリプトも付属しています。xml2yaml

XML データを perl データ構造に変換するためのもう 1 つの一般的なモジュールは、XML::Simple. 残念ながら、 にXML::Simpleは利用可能なスキーマがないため、データ構造を作成する方法 (つまり、スカラー値または配列値を作成しようとしている場合) を推測する必要があり、驚きにつながります。のドキュメントでXML::Simpleは、このモジュールの使用は推奨されないと明示的に述べています。

データ構造を取得したら、シリアル化形式 (YAML、JSON、Storable、Data::Dumper...) を決定し、データを他のシステムに転送するだけです。

于 2013-10-31T08:11:12.443 に答える