/ / Nie mogę ustalić formatu, jaki ten plik ma odczytać - regex, perl

Nie można dowiedzieć się, jakiego formatu ten plik oczekuje do przeczytania - regex, perl

Mam blok perla, który powinien czytaćz pliku statycznego dla maski hosta IRC, poziomu uprawnień i komentarza. Pomiędzy Perlem (w którym jestem certyfikowanym nowicjuszem) a wyrażeniem regularnym mam problem z utworzeniem pliku.

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

Plik obecnie odczytuje:

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

To nie działa. Rozumiem, gdzie wspomina słowo „użytkownicy”, a wyrażenie regularne pomija białe znaki. Narzekałem nad nim wystarczająco i próbowałem różnych sformułowań bez powodzenia. Jakieś pomysły?

Odpowiedzi:

3 dla odpowiedzi № 1

Każda linia pliku musi być:

  • komentarz (który jest ignorowany), składający się z opcjonalnej białej spacji, #i dowolny tekst
  • „maska”, „poziom” i „komentarz”, oddzielone białymi spacjami, bez wiodących białych spacji przed maską. Maska i poziom nie mogą zawierać spacji, choć komentarz może.

<CONFIG> nie jest prawidłową linią; ekspresja my $line = <CONFIG> odczytuje tylko jedną linię z CONFIG uchwyt pliku i przechowuje go w $linei while powoduje, że powtarza się do <CONFIG> zwraca wartość false (zwykle undef na końcu pliku).