在INI文件perl中读取新格式

时间:2014-04-03 03:51:49

标签: linux perl ubuntu parameters cgi

我有关于INI文件的另一个问题。我的老师更新了文件的配置。现在我的代码无法读取这个新的配置文件。它的格式已经改变。如何在perl中的INI文件中读取这种格式?

[section1]
value1
value2

正如您所看到的,INI文件的格式现在只包含值。参数消失了。 perl怎么读这行?它没有任何参数,只剩下。我只想阅读。我之前使用Config :: Tiny来读取该行,但我似乎无法解决这个问题:

my $file = "file directory";

my $Config = Config::Tiny->read($file);
$Config->{"section1"}->{_};

我的代码错了吗?因为我无法从此代码中获取输出。任何人都可以帮我解决这个问题吗?谢谢。

1 个答案:

答案 0 :(得分:0)

你需要自己处理:

#!/usr/bin/perl

use 5.10.0;

sub read_not_ini
{
    my $file = shift;

    my %values;
    my $section;

    open my $fh, '<', $file or die "Can't read $file: $!";
    while (<$fh>)
    {
        # skip comments, blank lines.
        next if /^\s*#/ or /^\s*$/;

        # don't need/want end-line character.
        chomp;

        if (/^\[([^\]]+)\]/)
        {
            my $s = $1;
            $section = $values{$s} //= [];
        }
        elsif($section)
        {
            push @$section, $_;
        }
        else
        {
            say STDERR "$file: values without a section: line $.";
        }
    }
    return \%values;
}

my $Config = read_not_ini(shift); # pass in as param
say for @{$Config->{"section1"}};