use Data::Dump; %f = 1..8; dd\%f; delete @f{1..4}; dd\%f; $f=\%f; delete @{$f}{1..8}; dd $f; __END__ { 1 => 2, 3 => 4, 5 => 6, 7 => 8 } { 5 => 6, 7 => 8 } {}