precedence of stderr and stdout


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting precedence of stderr and stdout
Prev   Next
# 1  
Old 06-08-2006
precedence of stderr and stdout

Code:
#!/usr/bin/perl 
open(STDOUT, ">>$Textfile") 
open(STDERR, ">>$Textfile") 
print "program running\n";
$final = join("+", $initial,$final)  #5
close (STDOUT);
close (STDERR);

Hi all, above is my perl code. Notice i have captured the stdout and stderr to the same textfile. my code is expected to generate an perl error "Use of uninitialized value in join or string at 5."

In my $Textfile, the error message is printed first before my "program running". Why is this so? i would have expected that "program running" first before the error message. since the print "program running" is before the concatenation operation.

Do perl print out the error messages before the standard output?
my perl -v is "This is perl, v5.8.0 built for i386-linux-thread-multi"
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

stdout, stderr redirection

Hi all, can someone help me with the next redirection? i want to redirect the stdout+stderr of a command to the same file (this i can do by prog &> file) but in addition i want to redirect only the stderr to a different file. how can i do this please? (in BASH) thanks. (4 Replies)
Discussion started by: eee
4 Replies

2. Programming

stderr stdout to a log file

I originally wrote my script using the korn shell and had to port it to bash on a another server. My script is working find for backing up but noticed that now after the move, I am not getting any output to my log files. Using Korn shell, this worked for me for some odd reason. This was sending... (2 Replies)
Discussion started by: metallica1973
2 Replies

3. Shell Programming and Scripting

stderr/stdout

Can somebody explain to me why the diff output is not going to stderr? Yet when I issue a diff from the command line the return code is -ne 1. I am guessing diff always writes to stdout??? Is there away I can force the difff to write to stderr USING THE CURRENT template. If possible, I... (5 Replies)
Discussion started by: BeefStu
5 Replies

4. Red Hat

Redirect STDOUT and STDERR of chsh

EDIT: Nevermind, figured it out! Forgot to put backslashes in my perl script to not process literals! Hi everyone. I am trying to have this command pass silently. (no output) chsh -s /bin/sh news Currently it outputs. I've tried.... &> /dev/null 1> /dev/null 2>&1 /dev/null 1>&2... (1 Reply)
Discussion started by: austinharris43
1 Replies

5. Red Hat

Make STDERR readable as STDOUT

Hi all. I am trying to use backticks in Perl to put STDERR into a string. The code is... $readkey_test = `perl -MTerm::ReadKey -e 1`; print $readkey_test; if ($readkey_test =~ m/]/) { print "ReadKey not installed...\n"; } else { print "ReadKey installed...\n"; } If it comes up... (3 Replies)
Discussion started by: austinharris43
3 Replies

6. Shell Programming and Scripting

sending stdout and stderr to a file

working on a c sell script I think I understand the concept of it, which is: filename >> file.txt (to appaend) or filename | tee -a file.txt (to append) The problem is that my shell script is used with several parameters, and these commands don't seem to work with just filename. They... (2 Replies)
Discussion started by: mistermojo
2 Replies

7. Shell Programming and Scripting

How to use tee with stdout and stderr?

I have been doing this: make xyz &> xyz.log &; tail -f xyz.log The problem with this is that you never can ge sure when "make xyz" is done. How can I pipe both stderr and stdout into tee so both stderr and stdout are copied both to the display and to the log file? Thanks, Siegfried (3 Replies)
Discussion started by: siegfried
3 Replies

8. Shell Programming and Scripting

How to redirect stderr and stdout to a file

Hi friends I am facing one problem while redirecting the out of the stderr and stdout to a file let example my problem with a simple example I have a file (say test.sh)in which i run 2 command in the background ps -ef & ls & and now i am run this file and redirect the output to a file... (8 Replies)
Discussion started by: sushantnirwan
8 Replies

9. UNIX for Advanced & Expert Users

combined stdout & stderr

Hello Everyone! I'm trying to combine output for standard output and for possible standard error to the log file. I was trying to use tee command, but it turned out if error occurred error output will be send to the screen only and will not be redirected with tee command to the log file. Anyone... (11 Replies)
Discussion started by: slavam
11 Replies

10. Shell Programming and Scripting

Redirect stdout and stderr

How can I redirect and append stdout and stderr to a file when using cron? Here is my crontab file: */5 * * * * /dir/php /dir/process_fns.php >>& /dir/dump.txt Cron gives me an 'unexpected character found in line' when trying to add my crontab file. Regards, Zach Curtis POPULUS (8 Replies)
Discussion started by: zcurtis
8 Replies
Login or Register to Ask a Question
Test::Script::Run(3pm)					User Contributed Perl Documentation				    Test::Script::Run(3pm)

NAME
Test::Script::Run - test the script with run SYNOPSIS
use Test::Script::Run; # customized names of bin dirs, default is qw/bin sbin script ./; @Test::Script::Run::BIN_DIRS = qw/bin/; run_ok( 'app_name', [ app's args ], 'you_app runs ok' ); my ( $return, $stdout, $stderr ) = run_script( 'app_name', [ app's args ] ); run_output_matches( 'app_name', [app's args], [ 'out line 1', 'out line 2' ], [ 'err line 1', 'err line 2' ], 'run_output_matches' ); run_output_matches_unordered( 'app_name', [ app's args ], [ 'out line 2', 'out line 1' ], [ 'err line 2', 'err line 1' ], 'run_output_matches_unordered' ); DESCRIPTION
This module exports some subs to help test and run scripts in your dist's bin/ directory, if the script path is not absolute. Nearly all the essential code is stolen from Prophet::Test, we think subs like those should live below "Test::" namespace, that's why we packed them and created this module. FUNCTIONS
run_script($script, $args, $stdout, $stderr) Runs the script $script as a perl script, setting the @INC to the same as our caller. $script is the name of the script to be run (such as 'prophet'). $args is a reference to an array of arguments to pass to the script. $stdout and $stderr are both optional; if passed in, they will be passed to IPC::Run3's run3 subroutineA as its $stdout and $stderr args. Otherwise, this subroutine will create scalar references to pass to run3 instead (which are treated as strings for STDOUT/STDERR to be written to). Returns run3's return value and, if no $stdout and $stderr were passed in, the STDOUT and STDERR of the script that was run. run_ok($script, $args, $msg) Runs the script, checking that it didn't error out. $script is the name of the script to be run (e.g. 'prophet'). $args is an optional reference to an array of arguments to pass to the script when it is run. $msg is an optional message to print with the test. If $args is not specified, you can still pass in a $msg. Returns nothing of interest. run_not_ok($script, $args, $msg) opposite of run_ok get_perl_cmd($script, @ARGS) Returns a list suitable for passing to "system", "exec", etc. If you pass $script then we will search upwards for it in @BIN_DIRS is_script_output($scriptname @args, @stdout_match, @stderr_match, $msg) Runs $scriptname, checking to see that its output matches. $args is an array reference of args to pass to the script. $stdout_match and $stderr_match are references to arrays of expected lines. $msg is a string message to display with the test. $stderr_match and $msg are optional. (As is $stdout_match if for some reason you expect your script to have no output at all. But that would be silly, wouldn't it?) Allows regex matches as well as string equality (lines in $stdout_match and $stderr_match may be Regexp objects). run_output_matches($script, $args, $exp_stdout, $exp_stderr, $msg) A wrapper around is_script_output that also checks to make sure the test runs without throwing an exception. run_output_matches_unordered($script, $args, $exp_stdout, $exp_stderr, $msg) This subroutine has exactly the same functionality as run_output_matches, but doesn't impose a line ordering when comparing the expected and received outputs. last_script_stdout return last script's stdout last_script_stderr return last script's stderr last_script_exit_code return last script's exit code DEPENDENCIES
Test::More, Test::Exception, IPC::Run3, File::Basename, File::Spec BUGS AND LIMITATIONS
No bugs have been reported. AUTHOR
sunnavy "<sunnavy@bestpractical.com>" LICENCE AND COPYRIGHT
Copyright 2009 Best Practical Solutions. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.10.1 2011-01-07 Test::Script::Run(3pm)