2011-07-18 10 views
1

AppConfig::Fileを設定ファイルの処理に使用しようとしています。しかし、私は常にオブジェクトから空の値を取得しています。次のコードです:AppConfig ::値を取得するファイル

my $state = AppConfig::State->new({ 
    CREATE=>1, 
    }); 
my $cfgfile = AppConfig::File->new($state); 
$cfgfile->parse('sample.cfg'); 
my $temp = $cfgfile->{foo}; 
print "foo value: $temp\n"; 

これはsample.cfgにされています

## comment 
foo = me 

は私が間違って何をしましたか?前もって感謝します。

答えて

2

解決策は、変数の定義にARGCOUNT設定を含めることでした。ファイルから動的に行う方法がわかりません。

use warnings; 
use strict; 

use AppConfig ':argcount'; 
use AppConfig::File; 

my $state = AppConfig::State->new({ 
    CREATE=>1, 
    }); 
$state->define('foo', { ARGCOUNT => ARGCOUNT_ONE }); 
my $cfgfile = AppConfig::File->new($state); 
$cfgfile->parse('sample.cfg'); 
print "state value: '", $state->foo(), "'\n"; 
+0

私は前にこの方法を試してみましたが、それはエラーを示していますtestAppConfig.plラインで 'パッケージを経由して、オブジェクトのメソッド「foo」を見つけることができません「のAppConfig ::ファイルは、」任意の他のアイデアを55.'? – Ken

+0

[AppConfig :: State](http://search.cpan.org/~abw/AppConfig-1.66/lib/AppConfig/State.pm)には、 ' - > get(" foo ")'である。おそらく '$ state-> foo()'を実行する必要がありますか?変数はStateに保存されるかもしれませんが、Fileで解析されます。 – TLP

+0

$ state-> foo()は 'me'を返すのではなく' 1'を返します。他の考えですか? – Ken

0

パーティーに少し遅れましたが、すべてをあらかじめ定義したくない場合は、この機能があります。

use warnings; 
use strict; 

use AppConfig ':argcount'; 

my $config = AppConfig->new({ 
    CREATE => 1, 
    GLOBAL => { ARGCOUNT => ARGCOUNT_ONE }, 
    }); 
$config->file('sample.cfg'); 

print $config->foo(); 
# or 
print $config->get('foo'); 
関連する問題