Perl AppConfig::正在检索值的文件

Perl AppConfig::正在检索值的文件,perl,configuration,app-config,Perl,Configuration,App Config,我正在尝试使用来处理配置文件。但是,我总是从对象中得到一个空值。代码如下: 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"; 这在samp

我正在尝试使用来处理配置文件。但是,我总是从对象中得到一个空值。代码如下:

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

我做错了什么?提前感谢。

解决方案是在变量定义中包含该设置。不确定如何从文件中动态执行此操作

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";

派对有点晚了,但我发现如果你不想预先定义一切的话,这是可行的

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');

我以前尝试过这种方法,但它显示了错误:
无法通过testAppConfig.pl第55行的包“AppConfig::File”找到对象方法“foo”。
还有其他想法吗?在这方面,您有更多的方法来检索变量,例如
->get(“foo”)
。也许您需要执行
$state->foo()
?变量可能保存在状态中,但在文件中进行分析。
print ref$State->foo()
。在标量上下文中可能是1的数组。或者只是
print$state->foo()
。不。。还是不担心。。我试过
print ref$state->foo()但它不打印任何内容。然后对于
print$state->foo()
它打印一个
1
。解释如下:
变量是简单标志,不需要参数(ARGCOUNT=ARGCOUNT\u NONE),可以不带任何值指定。它们将被设置为值1,任何明确指定的值(除了“0”和“off”)都将被忽略