... my $state="outside"; my @servicelines; my $desc_flag; #is 1 if description found while ($line = ) { if ($state eq "outside") { print MYFILE $line; if ($line=~/^\s*define service/) { $state="inside"; @servicelines=(); $desc_flag=0; } } else if ($state eq "inside") { if ($line=~/^\s*}/) { @servicelines= removesam(@servicelines) if ($desc_flag); print @servicelines; print $line; $state="outside"; } elsif ($line=~/^\s*service_description/) { push @servicelines, $line; $desc_flag=1; } else { push @servicelines, $line; } } } ...