in reply to Using the bang(!) in perl system commands

system uses sh on unix platforms (if the string to execute includes shell meta characters). Is >! an sh feature on your system? On mine, as best as I can tell, your code would be a misuse of the ! reserved word.

Use the bourne shell syntax for what you are trying to do, or specify your shell explicitely:
system('/bin/mysh', '-c', 'pwd >! tmp_1');

Replies are listed 'Best First'.
Re^2: Using the bang(!) in perl system commands
by kettle (Beadle) on Jun 06, 2006 at 08:38 UTC
    Thanks! That was a great little explanation.
    I am using the tcsh shell, by the way - for which '>!' is legal, though redundant (with regard to my setup). Happy trails.

    jOe

      More than likely your version of perl was built with some version of sh and system uses that. Some versions of sh (bash) have a noclobber setting that prevents overwriting of existing files. I would check either the user's shell settings (~/.bashrc for bash) or the default system settings (/etc/bashrc) for a noclobber setting and reset appropriately.

      If you cannot unset the noclobber setting, you will have to use the syntax appropriate for the shell being used by perl -- which for bash is the rather clumsy >|

      -derby