in reply to Best way to execute a set of commands in perl

Only use back-ticks `` or qx if you are capturing the output in your perl script. Otherwise use system.
  • Comment on Re: Best way to execute a set of commands in perl

Replies are listed 'Best First'.
Re^2: Best way to execute a set of commands in perl
by iphone (Beadle) on Mar 09, 2011 at 20:24 UTC

    I seem to get the following error when try to use a if statement along with qq?Can someone please advise?

    ERROR:- syntax error at perl.pl line 63, near "qq(p4 -x "$options{f}" delete) +if" Execution of Qdepot_upload.pl aborted due to compilation errors. system($_) for qq(p4 sync -k "$options{v}"), qq(p4 -x "$options{f}" delete) if (exists $options{f}), qq(p4 -x "$options{a}" add) if (exists $options{a}),
      This is a fairly obfuscated syntax you are trying to use, in my opinion. I can't really see the point in the for loop unless you have a large number of commands to execute. If that is the case, then I suggest that:
      my @cmds; push @cmds,qq(p4 sync -k $options{v}); push @cmds,qq(p4 -x $options{f} delete) if (exists $options{f}); push @cmds,qq(p4 -x $options{a} add) if (exists $options{a}); system($_) for @cmds;
      might be clearer.

      Otherwise, if you simply want to execute just those commands you show, then why not Keep It Simple, Sir?
      system(qq(p4 sync -k $options{v})); system(qq(p4 -x $options{f} delete)) if (exists $options{f}); system(qq(p4 -x $options{a} add)) if (exists $options{a});
      By the way, I suspect that no one replied to this question because they did not know you asked a new one. I only looked because I wanted to see if there was a response. Probably better to do a new post in future.