#! perl -slw use strict; use Time::HiRes qw[ time ]; my $string = 'X' x 1e6; my $ref = \$string; my $subRef = \substr $string, 0; my $start; my $x; $start = time; $x = substr $string, $_*50, 50 for 0 .. 2e4; print time() - $start; $start = time; $x = substr $$ref, $_*50, 50 for 0 .. 2e4; print time() - $start; $start = time; $x = substr $$subRef, $_*50, 50 for 0 .. 2e4; print time() - $start; __END__ c:\test>junk1 0.0107600688934326 0.0100328922271729 22.2601997852325 c:\test>\Perl510\bin\perl5.10.0.exe junk1.pl 0.00995421409606934 0.0109601020812988 21.9631989002228