in reply to Searching between two hashes
if($ID = $ID2 and $mac2 = ''){ $$ref2{'Network ID 1'} = $mac; }else{ push @extras,\$ref; }
Are you aware that the expressions $ID = $ID2 and $mac2 = '' are assignments and not comparisons? In any case, the $mac2 = '' assignment will always be boolean false and the if-conditional will always be false. Probably what you meant was
if ($ID == $ID2 and $mac2 eq '') { ... } else { ... }
because $mac2 is certainly being compared to a string, and I suspect that $ID == $ID2 is likewise a string comparison and therefore should be $ID eq $ID2 instead.
Update: An example:
c:\@Work\Perl\monks>perl -wMstrict -le "my ($ID, $ID2, $mac2) = ('foo', 'foo', ''); ;; if($ID eq $ID2 and $mac2 eq ''){ print 'true block'; }else{ print 'false block'; } " true block c:\@Work\Perl\monks>perl -wMstrict -le "my ($ID, $ID2, $mac2) = ('foo', 'foo', ''); ;; if($ID = $ID2 and $mac2 = ''){ print 'true block'; }else{ print 'false block'; } " false block
Give a man a fish: <%-{-{-{-<
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Searching between two hashes
by TStanley (Canon) on Nov 10, 2017 at 21:03 UTC | |
by hippo (Archbishop) on Nov 11, 2017 at 11:54 UTC |