I don’t think you came away with the
correct understanding of what that snippet of text was saying. What it was trying to say was you need to
be a little bit careful when using the || operator in an assignment statement
because the || binds more tightly than the = This allows things like $a = $b ||
$c; to mean $a = $b when $b is something that evaluates to true, and $a =
$c when $b evaluates to false. Which seems to be exactly what you’re
attempting to do in your example below, so you’re fine. Where you might run into trouble is if you
attempt to use || when doing something like: @array = split || die “nothing to
split”; Because the || binds tighter than =, die
will always be evaluated no matter what might happen to exist in $_; split will
do it’s thing to $_, and then the die will evaluate, halting your script. In this case, you are trying to use || for
flow control, not for assignment. In this case, you want to use the ‘or’
keyword because it binds less tightly than ‘=’ and then the die
will only be evaluated if the assignment results in nothing being assigned. DB<3> p $_ DB<4> @array = split or die
"nothing to split"; nothing to split at (eval
44)[/usr/local/lib/perl5/5.6.1/perl5db.pl:1522] line 2. DB<5> $_ = "this is a
test"; DB<6> @array = split or die
"nothing to split"; DB<7> p join " ",
@array; this is a test -Scott From:
omaha-pm-bounces@pm.org [mailto:omaha-pm-bounces@pm.org] On Behalf Of Kenneth Thompson So if I understand this correctly: This: if ($oWkS->{Cells}[$iR][0]) { if ($oWkS->{Cells}[$iR][0]->Value
!= "") { $myVar =
($oWkS->{Cells}[$iR][0]->Value) } } Is the same as this: if (!$oWkS->{Cells}[$iR][0]) {} elsif {$oWkS->{Cells}[$iR][0]->Value ==
"") {} else { $myVar =
($oWkS->{Cells}[$iR][0]->Value); } Which is shortcut(ed?) as this? : My $t = (!$oWkS->{Cells}[$iR][0]; $myVar = ((!$t) || ($t->Value
!= "") || $t->Value); Which appears to work. However, this article (http://tinyurl.com/a3pt7)
seems to say it’s bad to do this for assignment and should only be used
for flow control. Do I need to be concerned? |