in reply to Writing a perl quiz. Need advice.

Step 1) Array of Submitted answers.
Step 2) Array of real answers
@ra=qw/foo baz one two/; @sub=qw/foo qux one three/; print join'<br>',map@ra[$_]eq$sub[$_]?"answered $_right":"answersed $_ + wrong!",0..@sub;
Tracking the number wrong is left as an exercise for the reader...

Replies are listed 'Best First'.
Re: Re: Writing a perl quiz. Need advice.
by davis (Vicar) on Mar 08, 2003 at 10:36 UTC

    Sorry, but this is wrong.

    Ignoring the fact that you've used an array slice to get a single value from an array (@ra[$_]), which I'll assume is just a typographical error, your use of 0..@sub to iterate over the indices1 of the array won't work. @array returns the number of values in the array, so your code iterates over the arrays from indicies 0 to 4, or five elements. The arrays only have four elements each.

    To fix it, you could try something like 0 .. $#sub.

    Two other points:

    • You're missing a space in $_right.
    • You telling the user they've got question 0 correct, when most people would expect that to be question 1.

    Obfu'd code is ok, but obfu'd code that doesn't work seems a bit pointless to me

    cheers
    davis
    Is this going out live?
    No, Homer, very few cartoons are broadcast live - it's a terrible strain on the animator's wrist

    1: Is it indices or indexes? - I can never remember