use List::Util qw[ max maxstr ]; my @data2d = ...; my $max = max( map max( @$_, ), @data2d ); #### use List::Util qw[ max ];; sub maxNd { max( map{ ref() ? maxNd( @$_ ) : $_ } @_ ) };; my @b = ...;; print maxNd( @b );; 9981