I'd certainly drop the && do { ... redo } hack which I find to be not even close to worth the "surprise" factor (plus the maintainance problems of not noticing when you forget a "redo"). And I'd add a different hack (single-argument for) which I think offers a big win in this specific case:
for( $self->{gamedescr}{Game} ) {
while( ! m/\G\z/mgc ) {
if( m/\G($REnumber)\s*/mgc ) {
my $num=$1;
#...
} elsif( m/\G($REanymove)\s*/mgc ) {
push @{$self->{GameMoves}}, $1;
$color = $switchcolor{$color};
} elsif( m/\G($REcomment|$REeolcomment|$RERAV|$RENAG|$REe
+scape)\s*/mgc ) {
#...
} else {
die "Invalid input...";
}
}
}
-
tye
(but my friends call me "Tye")