use strict; use warnings; sub scramble { lc $_[0] =~ s{(^.{$_[1]}|.{$_[1]}$)} {join '', (split '', $1)[map -$_, 1..$_[1]]}reg; } print scramble( "Institute", 3 ), "\n"; print scramble( "Babraham", 2 ), "\n";