http://qs1969.pair.com?node_id=1189561


in reply to Is it possible to execute some command in qx argument

If this is on Linux, as I think it is, there's trickery you can do by passing an argument containing substrings like `command args` or $(command args) (In the Linux shell, use single quotes on the command line to pass them). They will be executed by the shell called from the Perl script, in addition to the normal behaviour of the original call.

Replies are listed 'Best First'.
Re^2: Is it possible to execute some command in qx argument
by vladimirfedorov (Novice) on May 06, 2017 at 00:39 UTC
    Do you mean something like the code below? I tried that and it didn't work. Meaning it still produced one directory with the name "currentdate0 0 492mkdir otherdir1)"
    my $cmd = "mkdir "; $arg = "$(mkdir otherdir1)"; qx($cmd "currentdate$arg");
      $arg = "$(mkdir otherdir1)";
      Use single quotes in Perl, or the "$(" won't stick. And do something that produces output as well, to use in the name of the new directory.
      $arg = '$(mkdir otherdir1; date +%F_%H.%M.%S)';
      This also shows the need to cleanup (AKA "untaint") the user entered input data before just executing it. You could be executing a lot more than you bargained for.