use Data::Dumper; my @matrix = (); $matrix[2]->[3]= "What's goin on?"; print "Before grep:\n", Dumper(\@matrix); grep{ /Huh?/ }@$_ for @matrix; print "\nAfter grep:\n", Dumper(\@matrix); __DATA__ Before grep: $VAR1 = [ undef, ${\$VAR1->[0]}, [ ${\$VAR1->[0]}, ${\$VAR1->[0]}, ${\$VAR1->[0]}, 'What\'s goin on?' ] ]; After grep: $VAR1 = [ [], [], [ undef, ${\$VAR1->[2][0]}, ${\$VAR1->[2][0]}, 'What\'s goin on?' ] ];