2009-05-26 3 views
9

私はこの単純なPerlスクリプトを持っている:PerlのData :: Dumperで変数名を制御するにはどうすればいいですか?

#! /usr/bin/perl -w 

use strict; 
use Data::Dumper; 

my %foo = ('abc' => 1); 

print Dumper(\%foo); 

それは出力:

$VAR1 = { 
      'abc' => 1 
     }; 

は、どのように私の代わりに、このことは、出力作るのですか?ダンプするスカラーの1、および使用するための名前の1:

%foo = (
     'abc' => 1 
     ); 

答えて

23
print Data::Dumper->Dump([ \%foo ], [ qw(*foo) ]); 

拡張構文は、二つの配列リファレンスを取ります。名前に接頭辞*があり、対応するスカラーが配列参照またはハッシュリファレンスの場合、配列またはハッシュ割り当てが生成されます。

+0

ああ、私は私が考える(またはのperldocからペーストをコピー)括弧の間にできたすべてのものを貼り付けしようとしたが、私はこの問題は、私がダンパを(使用していたことに気づいたしていませんでした:: Dumper-> Dump()。 – raldi

8

ysthの回答に加えて、OvidのData::Dumper::Namesモジュールを使用することができます。

2

また、Data::Dumper::Simpleもそうです。データの代わりに)

+0

ソースフィルタに注意してください。それはかむ。 –

4
use Data::Dumper; 

$Data::Dumper::Terse = 1; 

print '%foo = '.(Dumper \%foo); 
+0

これを展開して、コードが質問に答える理由を説明するとよいでしょう。 – pjmorse

+0

最も単純で最良のソリューションです。 Pythonの 'pformat'のように – saeedgnu

関連する問題