2017-05-04 11 views
0

.pmファイルでは、私はハッシュ%DIFF_VARIABLESを持っており、$DIFF_VARIABLES{'MAIN'}{'value'}の値を抽出したいと考えています。メイクファイルから.pm/xmlの値を取得する方法

私はこれをMakefileから実行したいと思います。

私はMakefileの

MY_VAR := ($shell perl -Mconfig -e "$DIFF_VARIABLES{'MAIN'}{'value'}" /home/my_path/TEST_MODULE_1.pm) 

でこれをしようとしています。しかし、それが機能していません。

私はさまざまな方法で試しましたが、私は間違いを犯していると思います。以下の提案に基づいて


ので、ここで ..私はこれを試してみましたが、それでもそのは私のために働いていない私がやったことです。 PERL Moduleから目的の値を探しているコードを置いた別のperlファイルを作成しました。さて、Makefileの中で私が実行perlのファイル

しかし、まだそれがここにMakefileで......

作業ではありませんが、私がやったことであること -

// comment --Lets say VAR_1's value came as 2. 

VAR_1 = $(shell perl ./my_new_perl_file.pl) export VAR_1 

ifeq ($(VAR_1), 1) ...do task1 else ..do task2 endif 

しかし、それは動作しません。私が明示的にメイクファイルの上にVAR_1 = 1を定義すると、それは働いています...

何か提案がありますか? pls ..

+0

モジュール内の '%DIFF_VARIABLES'ハッシュは' my'で定義されたレキシカル変数か、 'our'または' use vars'で定義されたパッケージ変数ですか? –

+0

これは 'our'の変数で定義されています –

+0

'TEST_MODULE_1.pm'の内容を表示する必要があります。あなたが書いたものは.pmファイルをPerlコマンドの入力として渡しますが、それは決して読み込まれません。値を得るためには、ハッシュモジュールを*実行*する必要があります。 – Borodin

答えて

2

print値を呼び出しプロセスに渡すためには値が必要です。

package Value; 

our %DIFF_VARIABLES = (
    MAIN => { value => 'foo' }, 
); 

1; 

シェルの値が、我々はこのようなコードを使用することができることを印刷するには::

$ perl -MValue -E'say $Value::DIFF_VARIABLES{MAIN}{value}' 
foo 

私たちは、このようなシェル変数に割り当てることができます。

$ VALUE=`perl -MValue -E'say $Value::DIFF_VARIABLES{MAIN}{value}'` 
$ echo $VALUE 
foo 
ここでは本当に簡単なパッケージです

そしておそらくそれを($(shell ...)を使って)あなたのMakefileに似たようにすることができます。

+0

返信ありがとうございましたDave。私はあなたが提案したものを試していますが、私にとってはうまくいかないようです。更新情報を投稿します。 –

+0

私の組織の質問を更新しました。 –

関連する問題