Perl Multiple If Help

Hi Friends, i had a tough time in picking up all matching patterns. Additional lines are also picked up. Please help. The below is the input file from which a pattern is matched.

###Input File  Begin #####
-----[deleted 50 after 49]-----
<   public static final String EMC_EMAIL_SEND_TEST_BUTTON = "button.emcEmailSendTest";
-----[after 70 inserted 70-74]-----
>   public static final String EMPTY_MODEM_TIMEOUT = "advancedCallHomeDialog.editCallHomeCenterDialog.modemTimeout.text";
>   public static final String EMPTY_MODEM_RETRYINERVAL = "advancedCallHomeDialog.editCallHomeCenterDialog.modemRetryInterval.text";
>   public static final String EMPTY_MODEM_MAXRETRIES = "advancedCallHomeDialog.editCallHomeCenterDialog.modemMaxRetries.text";
>   
>   
-----[after 104 inserted 109]-----
>   public static final String OSEM_PORT_NUMBER = Xul.getString("advancedCallHomeDialog.configView.osemPort.text");
-----[deleted 117 after 121]-----
<   public static final String emcEmailPanelStr = Xul.getString("advancedCallHomeDialog.configView.emcEmailPanel.text");
-----[120 changed to 124-131]-----
< 
---
>   public static final String ssllabel = Xul.getString("advancedCallHomeDialog.configView.ssl.text");
>   public static final String timeoutInterval = Xul.getString("advancedCallHomeDialog.timeoutInterval.text");
>   public static final String retryInterval = Xul.getString("advancedCallHomeDialog.retryInterval.text");
>   public static final String maxRetries = Xul.getString("advancedCallHomeDialog.maxRetries.text");
>   public static final String min = Xul.getString("advancedCallHomeDialog.min.text");
>   public static final String sec = Xul.getString("advancedCallHomeDialog.sec.text");
>   
###Input File  END #####
##### My Script Begin ######
 
foreach my $line1 (@wholeThing)
{
 if($line1=~m/inserted/) 
 {
 print $line1;
  print $line1;
  $insflag=1;
  next;
 }
 if($insflag eq 1)
 { 
 if($line1=~/^>/)
 {
 print "LINE $line1";
  if($line1=~/^>\s+$/)
  {
          $insspace++;
  }
  elsif($line1=~/^<\s+$/)
  {
          $insspace++;
  }
      elsif($line1=~/\/\*.*\*\//)
      {
          $inscmd++;
      }
  elsif($line1=~/\/\//)
  {
          $inscmd++;
      }
      elsif($line1=~/\/\*/)
      {
          $inscmd++;
          $insind=1;
      }
      elsif($line1=~/\*\//)
      {
          $inscmd++;
          $insind=0;
      }
      elsif($line1=~/\*./)
      {
          $inscmd++;
          $insind=0;
      }
      elsif($line1=~/\#./)
      {
          $inscmd++;
          $insind=0;
      }  
      elsif($insind==1)
      {
          $inscmd++;
      }
      else
      {
          $inscode++;
   print $inscode;
   print $line1;
      }
 
 }
 }
 }
$insflag=0;
print "Insert Commented Lines : $inscmd\n";
print "Insert Code Lines : $inscode \n";
print "Insert Empty Lines : $insspace \n"; 
 
#### My Script End #######

The output should be like it matches "inserted" and counts all the lines that follow the match but my script is picking the lines which follow under pattern "changed". Insert has only 4 lines(marked in red) but it is picking 6 lines additionally following under pattern changed and showing output as Insert Code Lines : 10. But it actually is 4. Please help.

Maybe something like this ?

$ 
$ 
$ cat f8
-----[deleted 50 after 49]-----
<   public static final String EMC_EMAIL_SEND_TEST_BUTTON = "button.emcEmailSendTest";
-----[after 70 inserted 70-74]-----
>   public static final String EMPTY_MODEM_TIMEOUT = "advancedCallHomeDialog.editCallHomeCenterDialog.modemTimeout.text";
>   public static final String EMPTY_MODEM_RETRYINERVAL = "advancedCallHomeDialog.editCallHomeCenterDialog.modemRetryInterval.text";
>   public static final String EMPTY_MODEM_MAXRETRIES = "advancedCallHomeDialog.editCallHomeCenterDialog.modemMaxRetries.text";
>   
>   
-----[after 104 inserted 109]-----
>   public static final String OSEM_PORT_NUMBER = Xul.getString("advancedCallHomeDialog.configView.osemPort.text");
-----[deleted 117 after 121]-----
<   public static final String emcEmailPanelStr = Xul.getString("advancedCallHomeDialog.configView.emcEmailPanel.text");
-----[120 changed to 124-131]-----
< 
---
>   public static final String ssllabel = Xul.getString("advancedCallHomeDialog.configView.ssl.text");
>   public static final String timeoutInterval = Xul.getString("advancedCallHomeDialog.timeoutInterval.text");
>   public static final String retryInterval = Xul.getString("advancedCallHomeDialog.retryInterval.text");
>   public static final String maxRetries = Xul.getString("advancedCallHomeDialog.maxRetries.text");
>   public static final String min = Xul.getString("advancedCallHomeDialog.min.text");
>   public static final String sec = Xul.getString("advancedCallHomeDialog.sec.text");
>   
$ 
$ 
$ ##
$ perl -lne 'if (/^-+\[.*inserted.*/) {$in=1}
>            elsif (/^-+\[.*[^inserted].*/) {$in=0}
>            elsif (!/^[><]\s*$/ && $in==1) {$count++}
>            END {print "Insert Code Lines = $count"}
>           ' f8
Insert Code Lines = 4
$ 
$ 

tyler_durden