in reply to How would you go about it?

oct is a poor tool to use on user input; while it will nicely allow entry of octal (default), hex, or binary numbers, it will also silently return 0 on garbage.

You might do the conversion up front and die if the value is 0 and the input string wasn't /^(0[bx])?0+\z/.

Update: That's not good enough; it will complain if the string starts 0x or 0b and there are illegal hex or binary digits, but not complain if there are valid octal digits followed by garbage :(.