#! perl -slw use strict; use Data::Dump qw[ pp ]; use Time::HiRes qw[ time ]; our $DIFF ||= 0; my $perl = q[c:\Perl510\bin\perl5.10.0.exe]; my $filter = q[find /V "strict" | find /V "warnings"]; my %results; while( <*.pl> ) { my( $name ) = m[(^[^.]+).pl]; my $label = sprintf "%-20.20s", $name; my $res = $results{ $label } = {}; print "Testing $name"; my $LOC = 0+ qx[ $perl -MO=Deparse $name.pl 2>nul | $filter | wc -l]; $res->{ LOC } = $LOC; my $start = time; my @output = qx[ $perl $name.pl input.txt ]; my $end = time; $res->{ ELAPSED } = sprintf "%5.2f", $end - $start; $res->{ OUTCOUNT } = @output; $res->{ SCORE } = $res->{ ELAPSED } * $res->{ LOC }; next unless $DIFF; open my $sort, "| sort > $name.srt" or warn "Couldn't create sorted output for $name" and next; printf $sort "$_" for @output; close $sort; $results{ $label }{ DIFF } = [ qx[ diff -adU 0 output.srt $name.srt ] ]; } pp \%results;