#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; my $x = { a => [ 1, 2 ], c => [ qw( a b c ) ], d => 100 }; print 'original: ', Dumper $x; # one by one replacement: c -> b, d -> c $x->{b} = delete $x->{c}; $x->{c} = delete $x->{d}; print 'modified: ', Dumper $x; # in one run replacement: b, c -> c, d @$x{qw( c d )} = delete @$x{qw( b c )}; print 'reverted: ', Dumper $x;