check-diff.pl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #!/usr/bin/perl -w
  2. #
  3. # $Header: /cvsroot/nsnam/ns-2/bin/check-diff.pl,v 1.2 2000/10/17 18:10:08 haoboy Exp $
  4. use strict;
  5. use Carp;
  6. sub convert_line_left { 
  7.     my ($line, $res) = @_;
  8.     my ($pos);
  9.     $pos = length($line);
  10.     $pos-- while (! (substr($line,$pos,1) =~ /[0-9,])(]/));
  11.     $line = substr($line, 0, $pos);
  12.     $line =~ s/(/\(/g;
  13.     $line =~ s/)/\)/g;
  14.     $line =~ s/[/\[/g;
  15.     $line =~ s/]/\]/g;
  16.     $line =~ s/*/\*/g;
  17.     return $line;
  18. }
  19. sub convert_line_right {
  20.     my ($line, $res) = @_;
  21.     my ($pos);
  22.     chop($line);
  23.     $pos = 0;
  24.     $pos++ while (! (substr($line,$pos,1) =~ /[0-9]/));
  25.     $line = substr($line, $pos);
  26.     $line =~ s/(/\(/g;
  27.     $line =~ s/)/\)/g;
  28.     $line =~ s/[/\[/g;
  29.     $line =~ s/]/\]/g;
  30.     $line =~ s/*/\*/g;
  31.     return $line;
  32. }
  33. if ($#ARGV != 2) {
  34. print "Usage: check-diff.pl <test_out1> <test_out2> left|rightn";
  35. exit 0;
  36. }
  37. my ($buf, $file1, $file2, $ret);
  38. $file1 = $ARGV[0];
  39. $file2 = $ARGV[1];
  40. open(FP, "diff --side-by-side --suppress-common-lines $file1 $file2 |") || 
  41.     die "can't open pipe.n";
  42. while (<FP>) {
  43.     /  </ && do {
  44. next if ($ARGV[2] ne "left");
  45. $buf = convert_line_left($_);
  46. $ret = `egrep -e '$buf' $file2`;
  47. if ($? >> 8) {
  48.     chop;
  49.     print "line not found in file $file2:nt$bufn";
  50. }
  51. next;
  52.     };
  53.     /  >/ && do {
  54. next if ($ARGV[2] ne "right");
  55. $buf = convert_line_right($_);
  56. $ret = `egrep -e '$buf' $file1`;
  57. if ($? >> 8) {
  58.     chop;
  59.     print "line not found in file $file1:nt$bufn";
  60. }
  61. next;
  62.     };
  63. }
  64. exit 0;