in reply to Re^2: Help Me to Sort out from this
in thread Help Me to Sort out from this

The key to this kind of problem is that when the line begins with a "continue-command"(plus) you want to process the rest of the line using the last "state" you were in, but when it doesnt begin with a "continue-command"(plus) you want to capture the new state, process the rest of the line with the new state, and remember that new state as the last_state for any following "continue-command"(plus) lines. Something like this

my $last_state=''; while (my $line= <DATA>) { chomp $line; next unless ($line); if (substr($line,0,1) eq '+') { # if line starts with a plus use last_state to process process($last_state,substr($line,1)); } else { # otherwise set last_state and process with it my @parts=split(' ',$line,2); $last_state=$parts[0]; process($last_state,$parts[1]); } } # line sub process { my $state=shift; my $input=shift; ... do stuff based on $state and $input ... } # process