Chapter 36. The Perl Wizard’s Quiz

Tom Christiansen

Answers are at the end of the article.

  1. What value is returned by a lone return statement?

    1. The empty list value ().

    2. The undefined value in scalar context, and the empty list value () in list context.

    3. The result of the last evaluated expression in that subroutine’s block.

    4. The undefined value.

  2. What’s the difference between /^Foo/s and /^Foo/?

    1. The first would allow the match to cross newline boundaries.

    2. The first would match Foo other than at the start of the record if the previous match were /^Foo/gcm, new in the 5.004 release.

    3. The second would match Foo other than at the start of the record if $* were set.

    4. There is no difference because /s only affects whether dot can match newline.

  3. What does length(%HASH) produce if you have 37 random keys in a newly created hash?

    1. 5

    2. 37

    3. 74

    4. 2

  4. What does read return at end of file?

    1. 0

    2. “0 but true”

    3. “\0”

    4. undef

  5. How do you produce a reference to a list?

    1. [ @array ]

    2. \($s, @a, %h, &c)

    3. You can’t produce a reference to a list.

    4. \@array

  6. Why aren’t Perl’s patterns regular expressions?

    1. Because Perl allows both minimal matching and maximal matching in the same pattern.

    2. Because Perl uses a non-deterministic finite automaton rather than a deterministic finite automaton.

    3. Because Perl patterns can have look-ahead assertions and negations.

    4. Because Perl patterns have backreferences.

  7. Why doesn’t Perl have overloaded functions?

    1. Because you can inspect the argument count, return context, and object types all by yourself.

    2. It does, along with overloaded operators ...

Get Games, Diversions & Perl Culture now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.