Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Re: Test::Harness not working on my machine

by John M. Dlugosz (Monsignor)
on Jan 14, 2003 at 05:04 UTC ( [id://226727]=note: print w/replies, xml ) Need Help??


in reply to Re: Test::Harness not working on my machine
in thread Test::Harness not working on my machine

I agree. My thought is to propose a function to add to the system-specific File::Spec module, but I'll post another node on that when I'm ready.

re compatible: how about using the fancy Openxxx modules instead of the open| syntax? That is, you can use the list form of system() and arrange to have its standard output file handle piped to something you can read from.

Hmm, the list form of system() already has platform-specific code for dealing with the arguments. It bypasses the shell and doesn't have to re-assemble them on UNIX I beleive, and on Windows it knows to put quotes around every individual argument before concatenating it together to form the command tail.

Basically, using the no-shell form prevents the need for shell escapes, but there is still a portability issue of keeping the arguments separate (which already works fine).

Also, what's wrong with using the list form of open in 5.8, and concatenating the list together for 5.6 or older? Just a line or two difference, easy to check the Perl version in an if() statement.

—John

  • Comment on Re: Re: Test::Harness not working on my machine

Replies are listed 'Best First'.
Re: Re: Re: Test::Harness not working on my machine
by schwern (Scribe) on Apr 05, 2003 at 04:04 UTC

    > re compatible: how about using the fancy Openxxx modules instead of the open| syntax?

    I remember having lots of trouble getting IPC::Open* working on some OS's. Currently I think that's whatever doesn't implement fork() (VMS immediately comes to mind). Most of the time it will work on Windows, but not if you use Borland's C compiler according to the tests.

    And that's just with the latest version of Perl. Don't want to know what it gets like as you go to older versions.

    > Hmm, the list form of system() already has platform-specific code for dealing with the arguments. It bypasses the shell and doesn't have to re-assemble them on UNIX I beleive, and on Windows it knows to put quotes around every individual argument before concatenating it together to form the command tail.

    system() doesn't help me, I can't capture the output reliably. :( Often system() will not respond to redirecting/tying *STDOUT and *STDERR inside Perl.

    > Also, what's wrong with using the list form of open in 5.8, and concatenating the list together for 5.6 or older? Just a line or two difference, easy to check the Perl version in an if() statement.

    Ok, send me a patch. Oh, and don't forget to try it out on Win98, Cygwin, VMS and Unix. 5.6.1 and 5.8.0 at least on each. 5.5.3 and 5.4.5 if you can. Thanks.

    Sorry to be a dick, but that's what's minimally involved in trying out new things with Mission Critical core modules like Test::Harness and MakeMaker. It Has To Work. Worse, It Has To Work Everywhere. And I'm usually the one that has to make sure it works everywhere. :( Its very time consuming. Yes I'm being crotchity.

    The latest Test::Harness alpha on CPAN has a work around that should work.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://226727]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (7)
As of 2024-04-16 17:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found