#!/usr/bin/perl use strict; use warnings; my $words = "this is a series of words"; $words =~ s{((\w+(?:'\w+)*))}{ my( $res, $y ); ( ( $res, $y ) = &link( $1 ) ) ? "$res $y" : $1 }ge; print "$words\n"; sub link { my $word = shift; if( $word eq 'series' ){ return( ( ucfirst $word ), $word ); } return; }