Link to home
Start Free TrialLog in
Avatar of addady
addady

asked on

Capture external command output line by line on Windows 98

Hello,

I'm trying to Capture external command output and error line by line.
I wrote this example witch work excellent on Windows 2000:

open(PROC,"DIR 2>&1 |");
while(<PROC>) {
      print ("LINE:$_");
}
close(PROC);

But on Windows 98 it don't do nothing!
I'm user perl 5.6.1 activestate 625.

I need to display the output line by line and not all at once
so I can't use system command.

How can I implement it on windows 98 ?
Avatar of Tintin
Tintin


foreach (<*>) {
  print "LINE: $_";
}
Avatar of addady

ASKER

Tintin, I don't your answer ?
addady.

Did you leave the word "understand" out of your answer?

What I'm suggesting is that instead of relying on an external command to get a directory listing, use the Perl method of doing it for you.  That way your code is a lot more portable.

To invoke the dir command under Win98, I think you'd have to do something like "command.com dir", but that's not very portable, hence the solution I gave you.
Avatar of addady

ASKER

Please let me rewrite and update my question:

I'm trying to Capture external command output and error line by line.
There is no problem to implement it on windows 2000, but in Windows 98
you need a special shell.
The only shell that I found and it really work with is: stderr.exe*

This code is work fine on w98:

open(PROC,"stderr.exe $some_command |");
while(<PROC>) {
    print ("$_");
}
close(PROC);

But the point is that it fail when I'm specify full path for "stderr.exe"
(becuase I'm exe file using perlapp and --bind don't help)

For example:
open(PROC,"C:/dir_name/stderr.exe $some_command |");
while(<PROC>) {
    print ("$_");
}
close(PROC);

My questions are:
1) why can't I specify full path ?
2) do you know any alternative shell that work on Windows 98 using pipe.



* can be forun in: http://www.teaser.fr/~amajorel/stderr/stderr.txt

How about you include the error message to see why it is failing, ie:

open PROC,"C:/dir_name/stderr.exe $some_command |" or die :Can not run stderr.exe because $!\n";
Avatar of addady

ASKER

Hi Tintin,

It seens the it not "die" .  
There is no error and still the command is not exacuted.
Nothing has happened on this question in more than 5 weeks. It's time for cleanup!

My recommendation, which I will post in the Cleanup topic area, is to
PAQ, refund points (good progress, but ultimately unresolved).

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!

jmcg
EE Cleanup Volunteer
ASKER CERTIFIED SOLUTION
Avatar of Computer101
Computer101
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial