use Data::Dumper; use Carp; use strict; use warnings; sub write_to_file { my ($file,$data,$small)=@_; open my $OUT,">$file" or croak "Error with $file:$!"; my $dumper=Data::Dumper->new([$data],["my_dump"]); $dumper->Indent($small ? 0 : 2); print $OUT $dumper->Dump; close $OUT; return $dumper->Dump; } sub read_from_file { my $file=shift; local $/; open my $IN,"$file" or croak "Error with $file:$!"; my $data=<$IN>; close $IN; my $my_dump; eval $data; croak "from $file I get error $@" if $@; return $my_dump; } my $test={key=>[qw(this is a list)], subhash=>{qw(so is this one but it must have pairs inside)}}; write_to_file("test_dumper.dmp",$test); my $var=read_from_file("test_dumper.dmp"); print Dumper($test,$var);