[新手请教]正则表达式的问题!!!

[新手请教]正则表达式的问题!!!

[xxxxx]
如何取道两个中括号之间的xxxxx内容呢。
\[.+\]
如果说
a=[100]
那我想把100取出来的方法是什么呢.
用\[.+\]这个取出[100],再去掉括号比较好。
我这样写,print $1 if $a = ~/\[.+\]/;
但是不对。应该如何写呢
print $1 if $a = ~/\[(.+)\]/;
给.+加上括号
还是不可以啊,报错信息:Can't modify constant item in scalar assignment
a="[bbb]";

print $1 if $a =~ /\[(.+)\]/;

这样写是编译不过去的哈,郁闷,都没人理
看看这段:
my $reg = '\[(.+)\]';

my $string = "a[100]";

if($string =~ /$reg/)
{
        print "Successful: $1\n";
}
我也试了一下:
$_="[100]";
if (/\[(.+)\]/){
        print "Yes\n";
        print $1;
}else{  
        print "No\n";
"my.pl" 63L, 1022C written                                                                 
[root@cache251-217 perl]# perl my.pl
Yes
100