2011-05-09 102 views
2

我不知道如何把这个问题。我正在尝试编写一个调用子程序(Fortran程序)的Perl程序,以便子程序转到标准输入以获取是/否。使用Perl为程序提供输入?

Perl有没有一种方法可以给出该选项,而不让孩子去STDIN?

由于我的编程词汇很差,我无法从Google获得答案。

+0

如果其他程序使用标准输入来获得它的输入又是什么Perl的问题?这听起来像你问的是一种方法来停止使fortran程序使用stdin? – Wes 2011-05-09 04:46:56

+2

听起来你想要驱动另一个程序,Perl程序有点像'你'和Fortran程序提出问题并接收响应。你应该看看Expect.pm。另请参阅:http://stackoverflow.com/questions/1471018/how-can-i-control-an-interactive-unix-application-programmatically-through-perl – Alex 2011-05-09 05:00:26

+0

@Alex这就是我正在尝试做什么。谢谢。我可能会坚持使用管道,因为它是一个小脚本。 – kindahero 2011-05-09 05:47:41

回答

3

可以开始从管道的输入来像这样一个编程':

open my $ftn_input, '|-', $fortran_program 
    or die "Couldn't start $fortran_program: $!"; 
if ($yes) { 
    print $ftn_input "Yes\n"; 
} 
else { 
    print $ftn_input "No\n"; 
} 
close($ftn_input) # waits for fortran program to complete 
    or die "Program failed; error $!, wait status $?\n"; 
相关问题