sub ext_s { # Returns characters in sorted order my ($s) = @_ ; my %h ; @h{split(//, $s)} = undef ; return join('', sort keys %h) ; } ; sub ext_o { # Returns characters in original order my ($s) = @_ ; my @h ; return join('', grep { !$h[ord($_)]++ } split(//, $s)) ; } ; #### sub ext_dw { my ($s) = @_ ; my %h ; $h{$_} = undef foreach split(//, $s) ; return join('', sort keys %h) ; } ; sub ext_cn { my ($s) = @_ ; my %h ; $s =~ s/(.)/$h{$1}++?'':$1/ge ; return $s ; } ;