1

我有以下

use Config::IniFiles;
my $cfg = new Config::IniFiles( -file => "/path/configfile.ini" );
print "The value is " . $cfg->val( 'Section', 'Parameter' ) . "."
if $cfg->val( 'Section', 'Parameter' );

尽管以上内容几乎都有意义,但我不确定是什么-file意思

my $cfg = new Config::IniFiles( -file => "/path/configfile.ini" );

上面是说功能中的$file参数设置为/path/configfile.ini?或者是别的什么

4

3 回答 3

2

在这种情况下-file是一个普通的字符串,即表达式可以写成

my $cfg = Config::IniFiles->new("-file" => "/path/configfile.ini");

=>运算符会导致其左侧的单词被解释为字符串,因此您不必引用它。

于 2012-08-09T10:03:00.597 回答
0

我建议您使用现代 oop 风格:

my $cfg = Config::IniFiles->new( -file => "/path/configfile.ini" );

请在 CPAN 中检查此模块的来源:Config::IniFiles

-file => "/path/configfile.ini" 后,保存到参数$self->{cf} = $v,然后ReadConfig。

于 2012-08-09T09:59:25.707 回答
-1

Config::IniFiles文档中:

-file 文件名

指定要从中加载参数的文件。这个“文件”实际上可能是以下任何东西:

  1. 文件的路径名

    $cfg = Config::IniFiles->new( -file => "/path/to/config_file.ini" );
    
  2. 一个简单的文件句柄

    $cfg = Config::IniFiles->new( -file => STDIN );
    
  3. 一个文件句柄全局

    open( CONFIG, "/path/to/config_file.ini" );
    $cfg = Config::IniFiles->new( -file => *CONFIG );
    
  4. 对 glob 的引用

    open( CONFIG, "/path/to/config_file.ini" );
    $cfg = Config::IniFiles->new( -file => \*CONFIG );
    
  5. 一个IO::File对象

    $io = IO::File->new( "/path/to/config_file.ini" );
    $cfg = Config::IniFiles->new( -file => $io );
    

    或者

    open my $fh, '<', "/path/to/config_file.ini" or die $!;
    $cfg = Config::IniFiles->new( -file => $fh );
    
  6. 对标量的引用(需要较新版本的IO::Scalar

    $ini_file_contents = <<EOT
    [section name]
    Parameter=A value
    Setting=Another value
    EOT
    
    $cfg = Config::IniFiles->new( -file => \$ini_file_contents );
    
于 2012-08-09T10:00:01.473 回答