#!/usr/bin/env perl use strict; use warnings; use Text::Balanced 'extract_bracketed'; my $delim = '([{<'; my $prefix = qr{[^$delim]*}; my $string = 'The use of parentheses (indicates that the (writer [considered] the {information}) less an afterthought).'; my @parts = extract_bracketed($string, $delim, $prefix); print " i) $parts[2]$parts[1]\n"; print "ii) $parts[0]\n"; my ($trimmed_start) = $parts[2] =~ /^(.*?)\s*$/; print " I) $trimmed_start$parts[1]\n"; print "II) $parts[0]\n";