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: