Training, Open Source computer languages
PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 
Search for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
Python, Lua and Tcl - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Java, C, C++, Ruby, MySQL and Linux / Tomcat systems
Capturing STDERR with backtics

Posted by enquirer (enquirer), 30 May 2003
If i try:

     $ls = `ls -l`

Then the output of the ls command that would usually go to STDOUT gets captured in $ls instead - all good.

However, I need a way of catching STDERROR.

For example, if I try:

     $mysql = `mysql ... blah blah some set of args`

And it fails for some reason, then I need the perl script to be able to react to that. The error from the mysql client gets written to STDERR and appears on the screen, while $mysql is empty...

Posted by admin (Graham Ellis), 30 May 2003
First thought ... use shell redirection within the backtics:


$what = `mysql -hlocalhost -ufred -pgubbins`;
print "I got back .... $what \n";

$wow = `mysql -hlocalhost -ufred -pgubbins 2>&1`;
print "I got back .... ",lc($wow),"\n";

When run, I got:

[localhost:~] graham% perl djk
ERROR 1045: Access denied for user: 'fred@localhost' (Using password: YES)
I got back ....
I got back .... error 1045: access denied for user: 'fred@localhost' (using password: yes)

[localhost:~] graham%

(the messing about with the lc function was just to prove that the results were in the $wow variable).

This page is a thread posted to the opentalk forum at and archived here for reference. To jump to the archive index please follow this link.

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2018: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01225 708225 • FAX: 01225 793803 • EMAIL: • WEB: • SKYPE: wellho