[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Strange Perl



День добрый!

Имеем Debian 3.0r0, и вот такой скрипт:

=from-here

$whole =<<"EOT";
X
{
       From=12
       Name=Ellementale
}

X11
{
       From=1090
       Name=Tr12
}
}
EOT

while ($whole) {
        if ($whole =~ /^([\s\n]+)/o) { strip \$whole, length $1 }
        elsif ($whole =~ /^(X\d*\n\s*{)/o) {
                my %tmp_marker = ();
                $marker_ref = \%tmp_marker;
                strip \$whole, length($1)
        }
        elsif ($whole =~ /^}/o) {
                if ($marker_ref) { push @markers, $marker_ref;  $marker_ref = undef }
                strip \$whole, 1
        }
        elsif ($marker_ref && $whole =~ /(\w+)=(.+)/o) {
                $marker_ref->{$1} = $2;
                strip \$whole, length($1)+length($2)+1
        }
}
=cut

Если поменять местами два последних elsif'а, скрипт перестаёт
работать, хотя логика (с моей точки зрения) не нарушается.

Где я дурак? Или надо bugreport писать?

  

-- 
Severny Morskoy



Reply to: