Global symbol "@keys" requires explicit package name ... Execution ... aborted due to compilation errors. #### $ perl -e ' my $x = "MIR200B miRNA"; my %h; my ($k, $v) = split /:/, $x; $h{$k} = $v; use Data::Dumper; print Dumper(\%h); ' $VAR1 = { 'MIR200B miRNA' => undef }; #### #!/usr/bin/env perl use strict; use warnings; my %data; while () { next if $. == 1; chomp; next unless length; my ($k, $v) = split; $data{$k} = $v; } # To test result use Data::Dumper; print "*** Hash ***\n"; print Dumper(\%data); print "*** Keys ***\n"; print "$_\n" for keys %data; print "*** Values ***\n"; print "$_\n" for values %data; __DATA__ GeneName GeneType APOL4 protein_coding CYP2C8 protein_coding NAALADL2 protein_coding NANOS3 protein_coding C20orf204 protein_coding MIR429 miRNA MIR200A miRNA MIR200B miRNA #### *** Hash *** $VAR1 = { 'NANOS3' => 'protein_coding', 'C20orf204' => 'protein_coding', 'APOL4' => 'protein_coding', 'MIR429' => 'miRNA', 'NAALADL2' => 'protein_coding', 'MIR200B' => 'miRNA', 'MIR200A' => 'miRNA', 'CYP2C8' => 'protein_coding' }; *** Keys *** NANOS3 C20orf204 APOL4 MIR429 NAALADL2 MIR200B MIR200A CYP2C8 *** Values *** protein_coding protein_coding protein_coding miRNA protein_coding miRNA miRNA protein_coding