in reply to Building multiline qx// shell commands
Using an array can be more straightforward: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/;
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 $cmd = 'a_cmd'; my @options = ( -d => '/home/users', -s => '/bin/sh', -g => 100, ); my $output = qx/$cmd @options/;
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.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 );
Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!
|
|---|