请解释一下这两行正则表达式的意思。

请解释一下这两行正则表达式的意思。

foreach $cMacro ( keys %hMacros ) {
        $cReplace = $hMacros{$cMacro};
        $cReplace = "" if ( !defined($cReplace) );
        $cSMS =~ s/\$$cMacro/$cReplace/g;                   #A
        $cSMS =~ s/\$\{$cMacro\}/$cReplace/g;             #B
}

不理解A,B两处的正则表达式语法,谁能解释一下?谢谢!
$cMacro和$cReplace是两个变量,假设它的值分别是“hello”,“你好”

       $cSMS =~ s/\$$cMacro/$cReplace/g;                   #A

把文本中“$hello”替换为“你好”

        $cSMS =~ s/\$\{$cMacro\}/$cReplace/g;             #B
把文本中“${hello}替换为“你好”



我也是刚开始学的,上面是我的理解,如有不对不要拍砖头哦。嘿嘿  还是等高人出来指点