my $blank = ' '; my $fldSep = "\x1c"; my $recSep = "\x1e"; my $SAV; my $RETRIEVE; open $SAV, '>', 'tempsav.hsh' or die "Can't open save file"; store_rec($VAR1); store_rec($VAR2); close $SAV; sub store_rec { my $hashRef = shift; my ($key,$val); while (($key,$val) = each %$hashRef) { $val = '' if !defined $val; # guard against non=printing fld/rec sep in values $val =~ s/$fldSep/?/g; $val =~ s/$recSep/?/g; print $SAV "$key $val$recSep"; } print $SAV $fldSep; 1; } # store open $RETRIEVE, '<', 'tempsav.hsh' or die "Can't open save file"; $/ = $recSep; while (<$RETRIEVE>) { my ($key,$val); $_ =~ s/$recSep$//; for my $fld (split $fldSep, $_) { ($key,$val) = split(' ',$fld,2); # Remove rec sep in values print "$key => |$val|\n"; } } close $RETRIEVE;