sub double_it { return join ' ', $_[0] =~ /\w(?=\w(?<=(..)))/g; } #### sub double_it { local ($_) = @_; (my @chars1) = (my @chars2) = split //; pop @chars1; shift @chars2; return join ' ', grep { !/\s/ } map { $chars1[$_] . $chars2[$_] } 0..$#chars1; } #### sub double_it { local ($_) = @_; my @list = /(\w)(?=(\w))/g; my @pairs; push(@pairs, shift(@list).shift(@list)) while @list; return join(' ', @pairs); } #### sub double_it { our @pairs; local *pairs; () = $_[0] =~ /(\w)(?=(\w))(?{ push(@pairs, "$1$2"); })/g; return join(' ', @pairs); }