use strict; use warnings; use Test::More tests => 1; my $want = q#{'apple-A'=>[30,40,50,60], 'Orange-O'=>[40,20,30,60]}#; my @records; # Discard header ; # Loop over data for () { chomp; s/^\s+//; push @records, sprintf q#'%s-%s'=>[%i,%i,%i,%i]#, split / +/, $_; } # Join them my $have = join (",\n ", @records); # Enclose it $have = "{$have}"; # Test it is $have, $want; __DATA__ Name Jan Feb Mar apr apple A 30 40 50 60 Orange O 40 20 30 60