I prefer to first construct all the options in an array or a hash so I can populate later or change a certain switches based on user input.
my $cmd = 'a_cmd'; my %options = ( -d => '/home/users', -s => '/bin/sh', -g => 100, ); $options{-c} = $realname if $realname; $options{-d} = $base_homedir if $base_homedir; my $cmd_str = join ' ', $cmd, map { "$_ $options{$_}" } keys %options; my $output = qx/$cmd_str/;
Using an array can be more straightforward:
my $cmd = 'a_cmd'; my @options = ( -d => '/home/users', -s => '/bin/sh', -g => 100, ); my $output = qx/$cmd @options/;
Beside give you a cleaner visual layout, it also makes you easy to manually add options to the array. And specially with array, you don't need to be worried to add extra elements to avoid odd hash element warning.
my @options = ( -d => '/home/users', # you can add -s => '/bin/sh', # add inline -g => 100, # comments as well '-m', # boolean switch ); # instead of my %options = ( -d => '/home/users', # isn't it nice to be able -s => '/bin/sh', # to put comments for esoteric -g => 100, # external program swithces? -m => '', # boolean switch );
Well, it's up to you which path to take. I personally don't see any significant difference. I use them both, depending on some specific needs.

Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!


In reply to Re: Building multiline qx// shell commands by naikonta
in thread Building multiline qx// shell commands by kingkongrevenge

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.