On Tue, 18 Jul 2006 15:12:10 -0700
Eric Wilhelm <[EMAIL PROTECTED]> wrote:

> You probably want to avoid doing it the "incorrect" (even if only 
> slightly-so) way.  The fact that a kernel or other environment issue 
> could break it is enough reason.

Agreed.

> Have you considered doing something with tempfiles or external
> programs? Maybe even mocking-up the network instead of using the real
> socketpair? IPC::Run, IPC::Open3 or something?

Well, a tempfile won't really help me here. The function will write into
a handle, then expect a reply back from another handle. I suppose I could
have a big collection of little files containing all the canned
responses, and keep making a new tempfile to write the query into, and
checking that on return.. But that's starting to sound quite a big system
in itself.

IPC::Open2 could be done - I use that internally in the module anyway for
its "real" work so that doesn't bring in another dependency.. I'm not
sure what it would add though... Maybe something of:

  open2( $rd, $wr, "perl", "-e", 
    q{<> eq "I want this request\n" or exit(1);
      print "And then I send this response\n" } );

Then read and write the handles, and check the child's exit status... I
suppose that could be done.. but if I'm doing that, it almost seems just
as easy to pipe()/fork() myself anyway. Keeps all the code in the file
itself then, rather than in strings.

-- 
Paul "LeoNerd" Evans

[EMAIL PROTECTED]
ICQ# 4135350       |  Registered Linux# 179460
http://www.leonerd.org.uk/

Attachment: signature.asc
Description: PGP signature

Reply via email to