in reply to Parse and Dump from Same Code

Your reader package could have private scoped variables; they wouldn't have to be globals visible from outside. For example:
package BinaryReader; use strict; { # scope to hide variables my $report; sub getReport { return $report; } # Other reader functions, the only things # that are allowed to update the report. } # end of scope 1;