#!/usr/bin/perl use warnings; use strict; $\ = $/; $_ = reverse "(a+b)*c"; # or some longer sequence s/\)([^()]+)\(/]$1[/g; print scalar reverse y/][/)(/r; #### syntax error at ./bracket.pl line 13, near "y/][/)(/r;" Execution of ./bracket.pl aborted due to compilation errors. #### s/\)([^()]+)\(/]$1\[/g; # '[' is not a metachar here #### s/\)([^()]+)\(/]${1}[/g; # to surround the whole variable name which is interpreted inside a string