#! perl -slw use strict; sub recurse { print \$_[0]; print ">> '$_[ 0 ]'"; if( length $_[ 0 ] ) { recurse( substr( $_[ 0 ] , 1, -1 ) ); $_[0] = " ( $_[0] ) "; } print "<< '$_[0]'"; return; } my $str = 'abcdefghij'; recurse $str; print $str; __END__ SCALAR(0x8126a70) >> 'abcdefghij' LVALUE(0x8126bc0) >> 'bcdefghi' SCALAR(0x812a454) >> 'cdefgh' SCALAR(0x812a520) >> 'defg' SCALAR(0x812a5ec) >> 'ef' SCALAR(0x812a6b8) >> '' << '' << ' (' << ' ( d' << ' ( c (' << ' ( b ( c' << ' ( a ( b ( c ( ) d ) ( ) ef ) ghij ) ' ( a ( b ( c ( ) d ) ( ) ef ) ghij )