in reply to Building multiline qx// shell commands

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!