无法弄清楚此文件希望读取的格式

时间:2015-06-13 22:51:52

标签: regex perl

我有一个perl块,应该从静态文件中读取IRC主机掩码,权限级别和注释。在Perl(我是认证的新手)和正则表达式之间,我在创建文件时遇到了一些麻烦。

sub read_users {
    @users = ();

    open CONFIG, "<", "users";
    while (my $line = <CONFIG>)
    {
        next if $line =~ /^\s*#/;
        my ($mask, $level, $comment) = split /\s+/, $line, 3;

        push @users, [$mask, $level];
    }
    close CONFIG;
}

目前该文件为:

<CONFIG>
irc.hostmask.goes.here 500 comment

那不行。我看到它在哪里提到用户这个词,而正则表达式省略了空格。我对此抱怨不已,尝试了各种配方而没有运气。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

文件的每一行必须是:

  • 注释(被忽略),由可选空格,#和任意文本组成
  • a&#34; mask&#34;,&#34; level&#34;和&#34; comment&#34;,由空格分隔,在掩码之前没有前导空格。掩码和级别不能包含空格,但注释可以。

<CONFIG>不是有效行;表达式my $line = <CONFIG>只读取CONFIG文件句柄中的一行并将其存储在$line中,而while会导致重复此行,直到<CONFIG>返回false值(通常undef在文件结尾处。)