use strict; my $position = 0; my $line = 1; my $oldbyte = 0; my $filesize = -s $ARGV[0]; my $byte; my $oldbyte; print "File size is $filesize bytes.\n"; open(INPUT,$ARGV[0]) || die "can't open $ARGV[0]:\n"; while ($position < ($filesize - 1)){ read INPUT, $byte, 1, 0; my $val = ord $byte; if ( $val == 10 ) { if ( $oldbyte ==1) { $line++; $oldbyte = -1; } $oldbyte++; } if ( ($val < 32 && $val != 10 || $val > 126) ) { print "Line $line byte value $val at offset $position is out of ASCII text range!\n"; } #print ord $byte,"\n"; $position++; undef $byte; seek(INPUT, $position, 0); } print "$line lines in file!\n";