use warnings; use strict; use 5.10.0; my $x; sub delchar { $x =~ s/(\w)// ? $1 . delchar() . $1 : "x" } $x='abc'; say delchar(); # => "cccxccc" sub del1 { $x =~ s/(\w)// ? $1 . del2() . $1 : "x" } sub del2 { $x =~ s/(\w)// ? $1 . del3() . $1 : "x" } sub del3 { $x =~ s/(\w)// ? $1 . del4() . $1 : "x" } sub del4 { $x =~ s/(\w)// ? $1 . del5() . $1 : "x" } $x='abc'; say del1(); # => "abcxcba"