perl -MBenchmark -e 'timethese( 1000, { cat => sub { my $str = qx|cat /usr/share/dict/words|; }, read => sub { local $/; open my $f, "/usr/share/dict/words" or die $!; my $str = <$f>; } } )' Benchmark: timing 1000 iterations of cat, read... cat: 6 wallclock secs ( 1.69 usr 1.34 sys + 0.28 cusr 2.34 csys = 5.65 CPU) @ 330.03/s (n=1000) read: 1 wallclock secs ( 0.58 usr + 0.58 sys = 1.16 CPU) @ 862.07/s (n=1000)