请教一个问题!

请教一个问题!

请教一个问题!
我面对这样一个问题,在perl脚本里,我需要执行一个c程序.这个c程序需要从标准输入里读数据,其执行结果输出到标准输出.于是我就这样写的:
my $result = `echo "$input" |c_program`;
如果说$input没有特殊字符,一切正常;但是如果有特殊字符就出问题了.我该如何改写呢??

有人建议利用管道的方法:
open XXX, "|c_program";
print XXX $input;
close XXX;
可是这样一来c_program的输出跑到stdout了,怎么把它放到一个变量里呢?
除了管道以外,还有更好的办法吗
你可以试一下重定向STDOUT.
你可以试一下重定向STDOUT
my $string;
{
local *STDOUT;
open STDOUT, '>', \$string or die "can't open:$!\n";

open xxx, "|c_program";
print xxx $input;
close xxx;

close STDOUT or die "can't close\n";
}