use strict;
my $str = '>columns(array(\'f_motivo\' => new Expression("m.no_motivo"), \'f_descricao\' => new Expression("(\'Data: \' || to_char(fi.dt_inativacao, \'DD/MM/YYYY\') || \'. Descrição: \' || (case when fi.ds_motivo is null then \' - \' else fi.ds_motivo end))"), array(\'dt_order\' => \'dt_inativacao\')))';
my $regex = qr/(.*)(array\()([a-z=>'_ ]*)(\))(.*)/p;
my $subst = '$1[$3]$5';
my $result = $str =~ s/$regex/$subst/rg;
print "The result of the substitution is' $result\n";
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html