sub isIP {
return (shift =~ m/^((\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])$/)? 1 : 0;
}The Stanford CS Ph.D. candidate whose solution included a Perl function for converting decimal numbers of up to three digits to binary was rejected.
- writing a subroutine
- understanding Perl parameter passing
- understanding Perl regexps, including =~, anchoring, alternatives, metacharacter escaping, character classes, and repeat counts;
- the ternary operator.
And then you could probe things like:
- Do they know how to fix the bug in your version where it incorrectly accepts an IP address with a newline appended to it?
- Do they know it would still work without the return and the ?1:0?
- Can they figure out that they could simplify and clarify the code substantially with qr?
- Do they understand why someone might prefer a non-regexp-based approach? :)