# count length of the strings my %len; foreach $nr (keys %data) { foreach my $att (@attr) { $len{$att} = 0; # <====== here update_max(%len, $att, $data{$nr}{$att}); } } #### sub update_max(\%$$) { my ($ref_data, $att, $val) = @_; if (! $ref_data->{$att} ) { $ref_data->{$att} = 0; } my $siz = $ref_data->{$att}; my $siz2 = length($val); if ($siz < $siz2) { $ref_data->{$att} = $siz2; } }