# use constant Max_Num_32_bit => 2 ** 32; # Use: ## n - number of 64bit packed numbers in string # my @Numbers = UnPack( n, $stringpack ); ## string input, array output sub UnPack { my ( $todo, $input ) = @_; if ( @_ != 2 || length $input < $todo * 8 ) { warn "Invalid input for UnPack()\n"; return; } my @output; for my $arno ( 0 .. $todo - 1 ) { my $pack = substr $input, $arno * 8, 8; my ( $upper, $lower ) = unpack 'N N', $pack; push @output, $upper * Max_Num_32_bit + $lower ; } return @output; }