05-20-2005
Quote:
Originally Posted by jerardfjay
I was hoping there would be something similar in PERL to perform the redirection within the program instead of actually using the command line redirection (for example we can use exec >> $LOGFILE 2>&1 in shell programming). Is there any such equivalent to redirect STDOUT and STDERR to a logfile within PERL program? Please advise. Thanks.
Jerardfjay
There is a way to do this in PERL. You could open a log file for writing. and since the default file handle for print commands is always the currently selected file handle, you can use the
select the file handle for the log file before you use your print commands. This way you are directing all of your print command outputs to the log file instead of the console.
open (LOGFILE, $logfile);
select (LOGFILE);
print 1;
.
.
print 2;
.
.
The only issue concern that I have for this method is that, I don't believe that STDERR will be redirected to the logfile. Note to keep in mind is that "select (Filehandle)" is a stick operation. It works well in this situation, however if you have a need to make interaction with the user from within the program you have to explicitly specify select (STDOUT) to redirect output to console again.
Jerardfjay
Last edited by jerardfjay; 05-20-2005 at 09:00 AM..
Reason: explained the select operator
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi All,
Can anyone please let me know the syntax / how to pick up the Return Code ( RC) from the mailx command and return it to SAS uisng 'system()' function and '${?}'.
I am in a process to send the mail automatically with an attachment to bulk users. I have used 'Mailx' and 'Unencode'... (0 Replies)
Discussion started by: manas6
0 Replies
2. Shell Programming and Scripting
General Question: If a script calls multiple external programs (external to the script, but still on unix), where do the return codes go? Let's say one of external programs fails, does the entire script fail and send a non-zero return code to the job scheduling software, or is the return code sent... (1 Reply)
Discussion started by: jnanasakti
1 Replies
3. Shell Programming and Scripting
i have to run set of commands
command1
command2
command3
command4
Now Whenever any of these command fails i should quit while capturing error message.
Is there a better way then checking for $? after each command. (1 Reply)
Discussion started by: vickylife
1 Replies
4. Shell Programming and Scripting
Hi,
I have a unix shell script which is launching multiple java processes by calling a java class in a loop, but each time with a different set of parameters.
Now I have to use the return code from each process in the script later.
but how do i obtain the return code from each process... (1 Reply)
Discussion started by: rama354
1 Replies
5. Shell Programming and Scripting
Hi,
I have a script which does something like the below:
execute_some_script.sh $arg1 $arg2 `exec-some-cmd`
if then;
do something
else
do something else
fi
However, during some cases, there is an error saying:
line xxx: [: too many arguments
at the line number which has... (5 Replies)
Discussion started by: laloo
5 Replies
6. Shell Programming and Scripting
Hi,
I need to retrun multiple values
function errorFileCreation
{
echo "Before"
return -1 "Siva";
echo "Aftyer"
}
echo ${?} - This can be used to getting first value.
how can i get second one.
Advance Thanks...
Shiv (3 Replies)
Discussion started by: rsivasan
3 Replies
7. Shell Programming and Scripting
HI,
Please help me on this. I have to execute 100 scripts which i have redirected in to a file . I want to pause the script after first execution and once i say enter key word it has to go to next execution. My looks like
for RUNFILES in `cat ${SOURCEFILES}/scripts`
do
echo $RUNFILES;
... (1 Reply)
Discussion started by: srichunduru
1 Replies
8. Shell Programming and Scripting
I wrote this script
#!/bin/bash
var=`du -sch /var/log/messages;du -sch /var/log/maillog`
echo $var
I am getting result as follows.
# sh my.sh
2.1M /var/log/messages 2.1M total 296K /var/log/maillog 296K total
I need it like below
2.1M /var/log/messages
296K... (3 Replies)
Discussion started by: anilcliff
3 Replies
9. UNIX for Advanced & Expert Users
(2 Replies)
Discussion started by: Venkatesh1
2 Replies
10. Shell Programming and Scripting
when it runs and look at my acron.log file it generates an error as below
/tmp/prog.sh: line 4: (12 Replies)
Discussion started by: azherkn3
12 Replies
LEARN ABOUT LINUX
logsave
LOGSAVE(8) System Manager's Manual LOGSAVE(8)
NAME
logsave - save the output of a command in a logfile
SYNOPSIS
logsave [ -asv ] logfile cmd_prog [ ... ]
DESCRIPTION
The logsave program will execute cmd_prog with the specified argument(s), and save a copy of its output to logfile. If the containing
directory for logfile does not exist, logsave will accumulate the output in memory until it can be written out. A copy of the output will
also be written to standard output.
If cmd_prog is a single hyphen ('-'), then instead of executing a program, logsave will take its input from standard input and save it in
logfile
logsave is useful for saving the output of initial boot scripts until the /var partition is mounted, so the output can be written to
/var/log.
OPTIONS
-a This option will cause the output to be appended to logfile, instead of replacing its current contents.
-s This option will cause logsave to skip writing to the log file text which is bracketed with a control-A (ASCII 001 or Start of
Header) and control-B (ASCII 002 or Start of Text). This allows progress bar information to be visible to the user on the console,
while not being written to the log file.
-v This option will make logsave to be more verbose in its output to the user.
AUTHOR
Theodore Ts'o (tytso@mit.edu)
SEE ALSO
fsck(8)
E2fsprogs version 1.41.14 December 2010 LOGSAVE(8)