Home > Archive > PERL Beginners > August 2004 > question about ( () if () ) while ();
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
question about ( () if () ) while ();
|
|
| William M West 2004-08-03, 3:57 pm |
|
$ perl -e ' $entry = "willy"; (print "1") if (/$entry/) while ($_ = "will");
print "0"'
syntax error at -e line 1, near ") while"
Execution of -e aborted due to compilation errors.
seperating the bits seems to work. it seems to break down when i want to
use the if statement in combination with the while.
using print to simulate return values.
perhaps i should abandon this idiom and use a normal
while () {
if () {
}
}
i am curious as to why this error crops up...
thanks,
willy
http://www.hackswell.com/corenth
| |
| Jeff 'Japhy' Pinyan 2004-08-03, 3:57 pm |
| On Aug 3, West, William M said:
>$ perl -e ' $entry = "willy"; (print "1") if (/$entry/) while ($_ = "will");
>print "0"'
>syntax error at -e line 1, near ") while"
>Execution of -e aborted due to compilation errors.
Check 'perldoc perlsyn'. It explains that the "statement modifiers",
things like '... if CONDITION' and '... while CONDITION' are only allowed
after *simple* statements -- what they really should say is "expressions".
You're allowed to write
print 1 if /willy/;
because 'print 1' is an expression. You can't write
print 1 if /willy/ while <FILE>;
because 'print 1 if /willy' is not an expression, it's a statement.
--
Jeff "japhy" Pinyan % How can we ever be the sold short or
RPI Acacia Brother #734 % the cheated, we who for every service
http://japhy.perlmonk.org/ % have long ago been overpaid?
http://www.perlmonks.org/ % -- Meister Eckhart
| |
| William M West 2004-08-03, 3:57 pm |
|
>Check 'perldoc perlsyn'. It explains that the "statement modifiers",
>things like '... if CONDITION' and '... while CONDITION' are only allowed
>after *simple* statements -- what they really should say is "expressions".
>
>You're allowed to write
>
> print 1 if /willy/;
>
>because 'print 1' is an expression. You can't write
>
> print 1 if /willy/ while <FILE>;
>
>because 'print 1 if /willy' is not an expression, it's a statement.
>
well, this restriction has forced me to come up with:
perl -e ' $entry = "willy"; (print /$entry/) while ($_ = "wil"); print "0"'
in this test it ends up not getting to print "0", but with a match it works
great :) i can apply it properly now when substituting a filehandle for
the expression in the while.
thank you!
>--
>Jeff "japhy" Pinyan % How can we ever be the sold short or
>RPI Acacia Brother #734 % the cheated, we who for every service
>http://japhy.perlmonk.org/ % have long ago been overpaid?
>http://www.perlmonks.org/ % -- Meister Eckhart
|
|
|
|
|