FAQ
$ 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

Search Discussions

  • Jeff 'japhy' Pinyan at Aug 3, 2004 at 2:36 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
  • West, William M at Aug 3, 2004 at 2:55 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

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupbeginners @
categoriesperl
postedAug 3, '04 at 2:13p
activeAug 3, '04 at 2:55p
posts3
users2
websiteperl.org

People

Translate

site design / logo © 2022 Grokbase