> On Tue, 7 Sep 2004, Francesco del Vecchio wrote:
> 
> > I've got a weird problem using an external program that get the input 
> > from "stardard input"
> >
> > I've got to call it (and easily do this with "system('myprogramname')" 
> > but I've to feed this program with an XML file that generally is 
> > passed via standard input with a "filename | myprogramname" in the 
> > shell, but in my case it is in a variable of my perl program
> >
> > How can I do it without write a file on the filesystem?
> 
> One way to do this -- probably not a good one -- might be
> 
>      system("echo $xml | myprogamname")
> 
> but if there's anything in the XML that the shell finds interesting, 
> this could fail in all kinds of spectacular ways.
> 
> Is writing it to a temp file out of the question? It seems like that 
> would be a lot more robust, as then you could just do
> 
>      system("myprogramname < $temp_xml_file")
> 
> and you should be much safer from invalid data problems in the shell.
> 
> 
> -- 
> Chris Devers
> 

Alternatively you should check out the IPC::Open2 and IPC::Open3 (core)
modules to do virtually the same thing only with *a lot* more control. 
I believe they will handle exactly what you want.

perldoc IPC::Open2
perldoc IPC::Open3
perldoc perlipc

As last resort you could check out the Expect module.  If you are on
Windows, you can try the above, but all bets are off...

HTH,

http://danconia.org

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to