Solved

use SYSTEM

Posted on 2003-10-29
4
160 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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
hard perl script 16 158
instmodsh - listing perl modules 2 80
.properties file to call function/method 9 61
Union rows in array that have common elements 2 98
On Microsoft Windows, if  when you click or type the name of a .pl file, you get an error "is not recognized as an internal or external command, operable program or batch file", then this means you do not have the .pl file extension associated with …
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
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…

825 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