#! usr/bin/perl use strict; use warnings; use Text::Balanced qw/extract_bracketed/; while( ) { my $in = $_; print "\nIN : $in"; ## input my $out = $in; ## OK if you never have \<\> inside \<\> $out =~ s/\<([^\>]+)\>/\n\{$1\}\n/g; print "\tOUT 1 : $out"; ## simple output ## Have to be more clever if it does ## extract balanced delimiters my @extracted = extract_bracketed($in, '<>'); if (!defined$extracted[0]){ ## undefined if no balanced delimiters existed ## so print straight out print "\tOUT 2 : $in"; } else { ## balanced delimters were found, ## so process them as before print "\tOUT 2 : "; for (@extracted){ s/^\<(.+)\>$/\n\{$1\}\n/g; print $_; } } } __DATA__ [SOUR] Por Gisela Orozco 312.527.8461/ Chicago\ Por Gisela Orozco< ttl>312.527.8461/ Chicago <>extra bumphf