my @cmd = ("/bin/ls", "/doesntexist"); use vars qw(*OLDERR); open OLDERR, ">&STDERR"; open STDERR, ">/dev/null"; # STDERR suppressed system(@cmd); *STDERR = *OLDERR; print STDERR "stderr is open\n"; # STDERR should be open - but isn't system(@cmd); #### stderr is open