Adding value to array if condition is fulfilled
arrays, if-statement, perl, perl-data-structures
Solution
Use the conditional operator, it is usable as expression.
my @array = (
{label => 'first hash'},
{
label => 'second hash',
innerarray => [
{label => 'first inner hash'},
(1 == 1)
? {label => 'second inner hash'}
: (),
]
},
);
Problem
I am building an array of hashes of arrays ``` my @array = ( {label => 'first hash'}, {label => 'second hash', innerarray => [ {label => 'first inner hash'}, {label => 'second inner hash'}, ] }, ); ``` Is there a way to only add the second inner hash only if a condition is fullfilled? Something like this: ``` my @array = ( {label => 'first hash'}, {label => 'second hash', innerarray => [ {label => 'first inner hash'}, {label => 'second inner hash'} if 1==1, ] }, ); ``` I tried to rewrite my code using push: ``` my @innerarray = (); push @innerarray, {label => 'first inner hash'}; push @innerarray, {label => 'second inner hash'} if 1==1; my @array = ( {label => 'first hash'}, {label => 'second hash', innerarray => \@innerarray }, ); ``` But it becomes very illegible, as I have to predefine all inner array before using them, which in some cases is several 100 lines of code above the usage. Is there any way to add the if-condition directly where I insert the array-element?