#!/usr/bin/perl -w if ($#ARGV != 1) { print STDERR "usage: minus_inout < current_trace\n"; exit 0; } my $START_END = $ARGV[0]; my $TRACE_FILE = $ARGV[1]; #print STDERR "reading $START_END...\n"; open(STARTEND, "cat $START_END 2>/dev/null |") or die "Can't read $START_END\n$!"; my @startend = ; close(STARTEND); my $name = ""; my $count = 0; my %map; foreach my $se_line (@startend) { if ($se_line =~ /^(\d+)$/) { $count = $1; $map{$name} = $count; } else { $name = $se_line; } } #print STDERR "reading $TRACE_FILE...\n"; open(TRACEFILE, "cat $TRACE_FILE 2>/dev/null |") or die "Can't read $TRACE_FILE\n$!"; my @tracefile = ; close(TRACEFILE); foreach my $se_line (@tracefile) { if ( $se_line =~ /^(\d+)$/ ) { $count = $1; if (defined $map{$name}) { my $init_calls = $map{$name}; my $d = $count - $init_calls; if ($d > 0) { # print STDOUT "$name$d\n"; print STDOUT "$name"; } } else { # print STDOUT "$name$count\n"; print STDOUT "$name"; } } else { $name = $se_line; } }