http://www.perlmonks.org?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"; } }

Replies are listed 'Best First'.
Re^2: Problems reading records from file
by sanjay nayak (Sexton) on Oct 23, 2006 at 10:23 UTC
    Hi
    Thanks a lot for your suggestion? It works fine according to my requirment. But this block is not executed at the end .
    unless(@array){ print "There is no item remaining in the file"; last; }
    It does not print "There is no item remaining in the file" at the end.