{ local $/ = '===='; open local(*FILE1), '<', shift or die $!; #### local $_ = ; while () { my @header_data = header_extract($_); my $data = ; # second read my @data = data_extract($data); # ... } close DATA1 or die $!; redo if @ARGV; }