http://www.perlmonks.org?node_id=1201114

rsFalse has asked for the wisdom of the Perl Monks concerning the following question:

Hello.

I was trying to convert parentheses to square brackets in my program:
#!/usr/bin/perl use warnings; use strict; $\ = $/; $_ = reverse "(a+b)*c"; # or some longer sequence s/\)([^()]+)\(/]$1[/g; print scalar reverse y/][/)(/r;
OUTPUT:
syntax error at ./bracket.pl line 13, near "y/][/)(/r;" Execution of ./bracket.pl aborted due to compilation errors.
I guess that perl tried to interpret $1[ as element of an array @1? So I solved this problem in two ways, using:
s/\)([^()]+)\(/]$1\[/g; # '[' is not a metachar here
and usual way
s/\)([^()]+)\(/]${1}[/g; # to surround the whole variable name which is interpreted inside a st +ring