in reply to A demanding parser
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:
- tye (but my friends call me "Tye")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..."; } } }
|
---|