perl -le 'my $max="-inf";$array=[[100,20,[32,4]],51,[621,7],[82]]; sub fm { map { $max = ($max < $_) ? $_ : $max } map { ref() ? fm($_) : $_ } @{$_[0]} }; fm($array); print $max ' 621