true - but the 'real' _open_<type> sub's actually do a lot of other verification and initialisation as well, so that the rest of the code can do its work with the lines from the file. That work is fairly specific to the type of the file - certain types of file are compressed and others are plain - so the verifying and init are specific to the kind of open we do. Thats why I broke them apart into two subs - to keep the type specific code localised. I just didn't show those bits as they weren't specific to the concept I was querying.