When I run the following script:
my @arr = [1..5000000]; for($i=0; $i<5000000; $i++) { $arr[$i] = $i; if($i % 1000000 == 0) {
Or, implicitly handling the pack for you, there is Tie::Array::PackedC:
use Tie::Array::PackedC; # make @arr use $arr_storage for storing packed elements, by default using 'l!' pack format tie my @arr, 'Tie::Array::PackedC', my $arr_storage;
vec may also be of interest.