Ok, I got the clou.

The exec function of perl calls according to perldoc "/bin/sh -c ..." on 
unices. On Solaris /bin/sh is indeed the bourne shell, on linux it's a link to 
/bin/bash. That's the difference and that's why the code snippet below works 
different on linux and Solaris. 

Thank you
Juergen

On 15.04.2011, at 07:42, Philip Brown wrote:

> Its probably not so much solaris vs linux, as "what shell you had on
> other box, vs solaris box".
> if your shell happens to be set to a csh-derivative, i would think it
> would not work?
> 
> On Thu, Apr 14, 2011 at 11:11 AM, Juergen Arndt <[email protected]> wrote:
>> Hi All,
>> 
>> in a software, written in perl, I stumbled over the following line of code:
>> 
>>        exec("$cmds[$no]{command} 1>$tmp_stdout 2>$tmp_stderr");
>> 
>> So a certain command should be executed and stdout and stderr should be 
>> redirected into a file.
>> 
>> This works on linux, but not on Solaris, when the given command is not 
>> found. In this case stderr will not be redirected. Could someone explain, 
>> why perl works here in different ways and how could a workaround look like?
>> 
>> As an minimal example I used: perl -le 'exec( "not_existing_command 
>> 2>my.stderr" )'
>> 
> _______________________________________________
> maintainers mailing list
> [email protected]
> https://lists.opencsw.org/mailman/listinfo/maintainers
> .:: This mailing list's archive is public. ::.


-- 
Juergen Arndt

_______________________________________________
maintainers mailing list
[email protected]
https://lists.opencsw.org/mailman/listinfo/maintainers
.:: This mailing list's archive is public. ::.

Reply via email to