open関数について質問です。
テキストファイルに1行ずつ、複数のSQL命令文を記述しておき、それをopen関数を使って
実行したいのですが、上手くできません。PERLでは↓の様に記述しています。

open (FH, "/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt |");
(0.0.0.0はIPです)

これを実行すると、テキストファイルの1行目のみが実行されて、残りの命令文は無視されてしまいます。
しかし、コマンドラインから直接/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt
を実行すると、全ての命令文が実行されて上手くいきます。
何とかperlのプログラム中で実行したいと思っているのですが、対策がわかりません。
どなたか御存じの方おられませんか?