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 ?
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 ?
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.
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.
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/std err.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
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/std
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.e xe $some_command |" or die :Can not run stderr.exe because $!\n";
open PROC,"C:/dir_name/stderr.e
ASKER
Hi Tintin,
It seens the it not "die" .
There is no error and still the command is not exacuted.
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
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
foreach (<*>) {
print "LINE: $_";
}