Code Comments
Programming Forum and web based access to our favorite programming groups.
$ 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
Post Follow-up to this messageOn 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
Post Follow-up to this message>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
Post Follow-up to this message
Show a Printable Version
Email This Page to Someone!
Receive updates to this thread
Powered by vBulletin
Copyright 2000-2006 Jelsoft Enterprises Limited.