Hi, I'm pretty new to perl, but I think this may help:
I believe a good 'rule of thumb' test can be "can that 'whole area that I think may be an expression' be used as having some type of value?" The reason '$x = $y + 2' is an expression is because you can legally (although almost never done on purpose) use that as a value, say in 'if ($x = $y + 2) {}'. The resulting value that is returned by that expression is the value of $x. (Most of the time when you see that in an 'if' statement, the coder meant to use the '==' comparison instead of the '=' assignment.) In your question you asked 'for (my $x = 0; $x <= 100; $x++){}' being an expression. It contains three expressions, 'my $x = 0', '$x <= 100', and '$x++' but the whole block isn't one itself. Only the middle one is used as an expression by the interpreter, because it's value is observed at the beginning of every iteration in the loop to see if it is equal to 'true'. The first expression is only used to initialize the start of the loop, and the last expression is used to create a change, to ensure the loop's condition will vary and eventually test false and exit. Because of that, although they pass the 'expressions' test, you'd probably call them 'assignment operations' because that is their primary use, which better describes their use within that context. Still, in that case they are both assignments and expressions. As for 'for (0..100){}', it is a shortcut loop that hides the expressions by declaring them implicitly... I think. It's not an expression itself. Also, a regular expression is an expression that fits a range of definitions, but still in it's own polymorphic way is a 'value' and can be tested against other values to see if it is the 'same as' or not. Unlike most expressions, regular expressions can't be reduced to an actual 'literal' value, in the way (5+4) is reduced to a literal 9. Often, if you are confused if something is an expression or not, you may be looking at a block of code that contains expressions inside of it, but is not one itself. Hope this helps! -----Original Message----- From: Connie Chan [mailto:[EMAIL PROTECTED]] Sent: Saturday, July 27, 2002 7:15 AM To: Jenda Krynicky; begin begin Subject: Re: Syntax Culture > > These are all expressions: > 1 > 1 + 2 > $x * 2 > foo(1,2,3) + 49 > (1,2) x 2 > $x == $y > $x < 5 > $x > 1 && $x < 5 > but even this is an expression: > $x = $y + 2 > > Basicaly "expression" is something that creates a value that you can > assign to a variable, pass to a function or use as a condition. > > This means that > $x = $y + 2 > IS an expression, but > $x = $y + 2; > IS NOT! It's a statement. > With this, I'll have a question again =) how about : for (my $x = 0; $x <= 100; $x++){} ? In every loop, $x return the value to the middle, and the middle design to roll another loop or not. It is doing something similar to if then else, but it also returning vals and condition signals... So.... what is this ? And when I write as for (0..100){} there is quite no difference, still an invisible $x, as $_... so...sorry, dunno how to ask.. =) Rgds, Connie -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]