Ich denke, dein Problem fängt schon früher an; bei der Stringzuweisung. Du mußt
dort einfache Anführungszeichen verwenden, ansonsten passiert das:
$t = "Hallo$varDu";
print "$t\n";
==> Hallo
Mit enfachen Quotes (Chars) sollte es funktionieren. Beispiel:
$t='Hallo$varDu';
print "Vor : $t\n";
===> Vor : Hallo$varDu
$t =~ s/\$/\\\$/g;
print "Nach: $t\n";
===> Nach: Hallo\$varDu