I use to pass a tab (or other) delimiter to a Perl script too. There I give the delimiter as the last parameter and don't escape it at all (it works at least under Win2k).
in reply to passing delimiters on command line
The output is delimited by tabs as I wanted it.
Perhaps the difference is, that I don't use $" = "\t", I print out the delimiter I got from the user between each data "per hand" in the print statement, as print $data1, $delimiter, $data2, $delimiter, ..., $datan, "\n";.
If you want to put the delimiter into $", you could use sprintf to print it into that variable. That may be safer than eval.