#! perl -slw use strict; use Time::HiRes qw[ time ]; my $t = time; my $s = chr(0); $s x= 112e6 * 4; substr( $s, $_ * 4, 4 ) = pack 'V', scalar <> for 0 .. 112e6-1; my $n = length( $s ) / 4; for( 0 ..$n ) { my $p = $_ + rand( $n - $_ ); my $x = substr( $s, $_*4, 4 ); substr( $s, $_*4,4 ) = substr( $s, $p*4,4 ); substr( $s, $p*4, 4 ) = $x; } print unpack 'V', substr( $s, $_ * 4, 4 ) for 0 .. $n; print STDERR time - $t;