http://qs321.pair.com?node_id=579956


in reply to Problems reading records from file

You don't need a while-loop. You should use a for-loop.
And the test if any element is in the array should be unless(@array){...}.
You have to use the modifier g to delete "all" things from '#' to the end of line...

#!/usr/bin/perl use strict; use warnings; { local $/; open DATA, '<',"san.txt" or die $!; my @blocks = map { [ split /\n/ ] } ( split /(?=ITEM NO:)/, ( map { s/#.*?\n//sg; $_ } <DATA> )[0] +); close DATA; for(@blocks){ my @array = @$_; unless(@array){ print "There is no item remaining in the file"; last; } print "@array\n"; } }