#!/usr/bin/env perl use warnings; use strict; use FindBin; use File::Spec::Functions qw/catfile/; use File::Temp qw/tempfile tempdir/; use IPC::System::Simple qw/systemx/; my $COLS = 20; my $ROWS = 1_000_000; my $AWKSCRIPT = catfile($FindBin::Bin,'11121118.awk'); my $PERLSCRIPT = catfile($FindBin::Bin,'example.pl'); my $expdir = tempdir(CLEANUP=>1); my ($tmpinfh, $infn) = tempfile(UNLINK=>1); { warn "Generating data...\n"; chdir $expdir or die $!; my $c = 'a'; my @cols = map { $c++ } 1..$COLS; print $tmpinfh join("\t", @cols), "\n"; my %fh; open $fh{$_}, '>', $_ or die $! for @cols; for ( 1..$ROWS ) { my @row = map { int rand 1000 } 1..$COLS; print $tmpinfh join("\t", @row), "\n"; print {$fh{$cols[$_]}} $row[$_] ,"\n" for 0..$COLS-1; } close $fh{$_} for @cols; close $tmpinfh; } { warn "Running awk...\n"; my $workdir = tempdir(CLEANUP=>1); chdir $workdir or die $!; systemx('/usr/bin/time', 'awk', '-f', $AWKSCRIPT, $infn); systemx('diff','-rq',$expdir,$workdir); } { warn "Running perl...\n"; my $workdir = tempdir(CLEANUP=>1); chdir $workdir or die $!; systemx('/usr/bin/time','perl',$PERLSCRIPT,$infn); systemx('diff','-rq',$expdir,$workdir); }