#!/usr/bin/env perl use strict; use warnings; my $input = "I am a GIRL"; my $output = []; # split input by non-words ... if you need to keep non-word # characters then you'll need a different regex foreach my $word ( split( /\W+/, $input ) ) { # if the word is all upper case and it's not a single letter if( $word =~ /^\p{Uppercase}+$/ && length( $word ) > 1 ) { push( @$output, $word ); } else { push( @$output, lc $word ); } } print join( ' ', @$output ), "\n";