in reply to Re: printing the line after grepping
in thread printing the line after grepping

since the if() forces @error1 into scalar context

No. Operators only impose context on their operands, and @error1 is not if's operand. if imposes a scalar context on > (which does nothing since > always returns a scalar).

On the other hand, @error1 is an operand of >, and > imposes a scalar context on its operands.

I prefer to explicitly use the scalar() function to remind me that I'm looking for the number of elements in the list.

First of all, you're wrong about scalar returning the number of elements in a list.

>perl -le"print join ',', 5,6,7" 5,6,7 >perl -le"print join ',', scalar(5,6,7)" 7 <--- Not 3 >perl -le"print join ',', localtime" 13,2,13,11,10,109,3,314,0 >perl -le"print join ',', scalar(localtime)" Wed Nov 11 13:02:26 2009 <--- Not 9

Don't confuse array for list.

I prefer to explicitly use the scalar() function to remind me that I'm looking for the number of elements in the [array].

If that's true, you'd be better off using 0+@error1. It's much better at indicating you want a number of elements.

But really, doesn't > 0 already indicate you're dealing with a number?!