すみません、外部というのはFLASHのことです。
FLASHがCGIを呼び出す時に"./hoge.dat"という文字列を渡し、
それをCGIが$bufferという変数に受け取ったのですが・・・。
下のようにしてFlashにmyDataとmyBufferという変数を返してみると、
myDataの中身は空っぽでmyBufferの中身は"./hoge.dat"という文字列でした。

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
open(IN, "$buffer");
$toFlash = <IN>;
close(IN);
print "Content-type: text/plain\n\n";
print "myData=$toFlash&myBuffer=$buffer";


ちなみに下のようにPerlに直接ファイル名を書けばちゃんとmyDataにファイルの一行目が表示されました。
$buffer = "./hoge.dat"