sub parse1 { my ($filehandle,$data) = @_; # read from $filehandle and add to $data } sub parse2 { my ($filehandle,$data) = @_; # read from $filehandle and add to $data } # etc. #### my %data; $data{piece1} = parse1($fh); $data{piece2} = parse2($fh); sub parse1 { my ($filehandle) = @_; # read from $filehandle return $data; } sub parse2 { my ($filehandle) = @_; # read from $filehandle return $data; }