use strict; use warnings; use Data::Dumper; my %hash = ("NETWORK1" => "A", "NETWORK2" => "B", "TYPE1" => "C", "TYPE2" => "D"); my @keys = grep /^NETWORK/, keys %hash; my %hashslice1; @hashslice1{@keys} = @hash{@keys}; print Dumper(\%hashslice1); @keys = grep /^TYPE/, keys %hash; my %hashslice2; @hashslice2{@keys} = @hash{@keys}; print Dumper(\%hashslice2);