The ternary operator exists in many programming languages and is often a stumbling block for many who encounter it for the first time. I'm sure I scratched my head over it too. Here's an example of usage:
use strict; use warnings; my %hash = ( abc => 123 ); my $abc = exists $hash{abc} ? $hash{abc} : 0; my $xyz = exists $hash{xyz} ? $hash{xyz} : 0; print "ABC = $abc : XYZ = $xyz\n";
This outputs:
ABC = 123 : XYZ = 0
Another thing you need to know is that variables declared with my are lexical. With your example code, this means the first $vxdgs only exists in the if block and the second $vxdgs only exists in the else block; furthermore, they are two completely separate variables with their own values.
From your question, I believe the code you want is:
my $vxdg = exists $vxdgs{$node}{$disk} ? $vxdgs{$node}{$disk} : "";
-- Ken
In reply to Re: Short form (ternary) if else
by kcott
in thread Short form (ternary) if else
by gg48gg
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |