use List::Util qw[ shuffle ];; @n = 1 .. 2**20;; @encoded = shuffle @n;; @encode{ @n } = @encoded;; @decode{ @encoded } = @n;; print total_size $_ for \( %encode, %decode );; 44036216 44068014