【发布时间】:2010-10-02 21:36:28
【问题描述】:
我正在重构一个在不同站点上执行一些操作的旧脚本。它需要使用一个配置文件,该文件现在是一个手动解析的文本文件,格式如下:
label:domain:username:password:path
当然,行数可能是无限的。
我知道有一些模块处理配置文件。哪一个最适合这种情况?
【问题讨论】:
我正在重构一个在不同站点上执行一些操作的旧脚本。它需要使用一个配置文件,该文件现在是一个手动解析的文本文件,格式如下:
label:domain:username:password:path
当然,行数可能是无限的。
我知道有一些模块处理配置文件。哪一个最适合这种情况?
【问题讨论】:
如果您希望更改格式,请查看此处的建议:
How do you manage configuration files in Perl?
如果您要解析 现有 格式,该格式看起来更像是一个逗号分隔的文件而不是“配置”文件,所以我会说使用 Text:: CSV(它允许您在构造函数中选择分隔符,因此您可以使用冒号分隔而不是逗号分隔),或者对于非常大的文件 Text::CSV_XS。
use Text::CSV; # Example adapted from POD
my @rows;
my $csv = Text::CSV->new ( { sep_char => ":" } )
or die "Cannot use CSV: ".Text::CSV->error_diag ();
open my $fh, "<:encoding(utf8)", "test.conf" or die "test.conf: $!";
while ( my $row = $csv->getline( $fh ) ) {
push @rows, $row; # $row is arrayref containing your fields
}
$csv->eof or $csv->error_diag();
close $fh;
【讨论】:
Text::xSV——我碰巧认为它的界面比Text::CSV的界面要合理得多。