#!/usr/bin/perl -w
use strict;

{
  # Основной цикл.
  while (<>)
  {
    # Обрабатываем все hunk, сколько бы их ни было:
    while (m/^@@/){
      # начался hunk
      my ($old, $new, $hunk) = ('', '', '');
      $hunk .= $_;

      # Зачитываем весь hunk
      while (<>) {
        # hunk закончился, как только попалась не-diff строка
        last unless (m/^([-+ ])(.*)$/s);
        $hunk .= $_;
        $old .= $2 if (($1 eq '-') or ($1 eq ' '));
        $new .= $2 if (($1 eq '+') or ($1 eq ' '));
      }

      # Убираем "лишние" разрывы строк
      s/"\s*\n\s*"//g for ($old, $new);
      # Убираем комментарии
      s/^\s*#.*\n//mg for ($old, $new);
      
      if ($new ne $old) {
        # были изменения
        # print "OLD:($old):OLD\n";
        # print "NEW:($new):NEW\n";
        # print "HUNK:($hunk):HUNK\n";
        print $hunk;
      }
      # else
      # {
      #   print "remove:\n";
      #   print "OLD:($old):OLD\n";
      #   print "NEW:($new):NEW\n";
      # }
    }
    # После завершения hunk в $_ осталась первая строка не-hunk.
    # Её надо print.
    print;
  }
}
