use Data::Dump qw(dump); my @dna = qw(A T T G C); print dump \@dna; my @view = ( sub : lvalue { $dna[1] }, sub : lvalue { $dna[2] }, ); #mutate $view[0]->() = 'x'; $view[1]->() = 'x'; print dump \@dna; $view[0] = sub : lvalue { $dna[4] }; print dump \@dna; # print ["A", "T", "x", "G", "x"] #### $view[0]->() #### $view[0]