#! /usr/bin/env perl use strict; use warnings; use Data::Dumper; my %data = ( what => [ 1,2,3 ], ever => [ qw( a b c ) ], ); my $file = "/tmp/filename.txt"; ### save %data to file as %name open my $wh, '>', $file or die "open($file,w) failed: $!"; print $wh Data::Dumper->Dump( [ \%data ], [ "*name" ] ); close $wh or die "close($file) failed: $!"; ### read to a lexical variable ### retrieve %name from file (you need to know %name before) open my $rh, '<', $file or die "open($file,r) failed: $!"; my %name; eval do { local $/; <$rh> }; close $rh; print Data::Dumper->Dump( [ \%name ], [ '*name_it' ] );