关于open3执行管道命令的问题

关于open3执行管道命令的问题

关于open3执行管道命令的问题
各位好,现在有一个问题困扰我好长时间了,要在Perl下执行一个系统命令,带管道的,比如说
cat XXX.txt |wc -l 等等,就是命令里面有好多参数,还有管道,怎么做呢?
一开始用 open ( FOO ,"-|") || exec ("cat XXX.txt |wc -l "); 可是好像命令执行正确与否获得不到。 比如,执行正确的时候, $!的变量里也还是有值。
后来改成用open3,可是又要求我 把命令拆开写, 也就是说,
open3(*PH_WR, *PH_RD, *PH_ER, $cmd ,$option1,$option2......);
这种写法,貌似不能执行带管道的命令啊,或者能执行但不知道怎么写?

不知道我说清楚了没有,请大家帮帮忙吧……
用 `` 就可以啊.
[quote]回复给 fkiori : 用 `` 就可以啊....[/quote]
好像说用``不是很安全,比如,`cat $cmd` , 如果 $cmd 是 "aaa; /bin/cat /etc/passwd"就会有潜在的不安全问题。
所以,要求一定要用open ( FOO ,"-|") || exec ($cmd ,$option1,$option2........); 或者open3(*PH_WR, *PH_RD, *PH_ER, $cmd ,$option1,$option2......);的形式。
很是恼人啊