#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %hash = ( 'key1' => 'test1', 'key2' => 'test2', 'key3' => 'test3', ); print Dumper \%hash; my @new_keys = keys %hash; y/key[0-9]/alt[0-9]/ for @new_keys; @hash{@new_keys} = delete @hash{keys %hash}; print Dumper \%hash; __END__ $ perl test.pl $VAR1 = { 'key1' => 'test1', 'key2' => 'test2', 'key3' => 'test3' }; $VAR1 = { 'alt3' => 'test3', 'alt2' => 'test2', 'alt1' => 'test1' };