Solved

use SYSTEM

Posted on 2003-10-29
4
161 Views
Last Modified: 2010-03-04
Hello,

What i am trying to do is to use "system" to invoke a program and catch the execution result. However, any output and error message produced by the program during execution are redirected to a file. The following script does not work because the last two fields are also passed to the program. SO how can fix this? Thanks.

$result = system "program args", ">temFile", "2>&1";

if ($result) {
 print "error\n";
 }else {
 print "ok\n";
}

0
Comment
Question by:rongz
  • 2
4 Comments
 
LVL 2

Expert Comment

by:ultimatemike
ID: 9641529
You don't necessarily need to use system. If all you're concerned about is the output of the program, you can try:



#!perl -w


use strict;


open FH, "$program_name |";

while (<FH>) {
      print;
}



The pipe in the open command will cause Perl to read the standard output of the program being run.
0
 

Author Comment

by:rongz
ID: 9642263
Actually, what I want is that user can just see if the program is executed sucessfully or not, and output (including error message) from the program is redirected to a file.
0
 
LVL 2

Accepted Solution

by:
ultimatemike earned 50 total points
ID: 9642299
Make the command string that is being executed contain the redirects, rather than as parameters. That seems to work.


Try this:


$result = system "program args >temFile 2>&1";

if ($result) {
 print "error\n";
 }else {
 print "ok\n";
}
0
 
LVL 2

Expert Comment

by:ChrisDrake
ID: 9648061
You might need the perl variable:-

   $?

Which contains the exit code of the program you ran.

$rc=`program args >&temFile`;
print "It returned $?\n";
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I've just discovered very important differences between Windows an Unix formats in Perl,at least 5.xx.. MOST IMPORTANT: Use Unix file format while saving Your script. otherwise it will have ^M s or smth likely weird in the EOL, Then DO NOT use m…
Checking the Alert Log in AWS RDS Oracle can be a pain through their user interface.  I made a script to download the Alert Log, look for errors, and email me the trace files.  In this article I'll describe what I did and share my script.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

713 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question