use warnings; use strict; use List::Util qw/ min max sum /; my $a = -55; my $b = -54; my $c = -55; my $d = -54; FILE: for (1..110) { my $file = "x_$a\_to_$b\_y$c\_to_$d"; open(my $in_fh, '<', $file) or die "opening '$file': $!"; my @column8; # FRESH, NEW, EMPTY ARRAY for each file! while(<$in_fh>){ push @column8, (split(/\s+/, $_))[7]; } next FILE if @column8 < 2; # are min/max valid? my $ZMAX = max @column8; my $ZMIN = min @column8; my $thick = $ZMAX - $ZMIN; print "$thick\n"; $c++; $d++; }