A prefix <code>0</code> is used in [[C (programming language)|C]] to specify string representations of [[octal]] numbers, as required by the [[ANSI C]] standard for the "<code>strtol"()</code> function (the '''str'''ing '''to''' '''l'''ong integer converter) in the "<code><stdlib.h"></code> library.<ref name="k&r2e">{{cite book |last1= Kernighan |first1= Brian |author-link1= Brian Kernighan |last2= Ritchie |first2= Dennis M. |author-link2= Dennis Ritchie |title= [[The C Programming Language]] |edition= 2nd |publisher= [[Prentice Hall]] |date= March 1988 |location= [[Englewood Cliffs, NJ]] |pages=252 |isbn= 0-13-110362-8 }}</ref> Many other programming languages, such as [[Python (programming language)|Python]], [[Perl]], [[Ruby (programming language)|Ruby]], [[PHP]], and the Unix shell [[bash (Unix shell)|bash]] also follow this specification for converting strings to numbers. As an example, "<code>0020</code>" does not represent 20<sub>10</sub> ('''2'''×10<sup>1</sup> + '''0'''×10<sup>0</sup>), but rather 20<sub>8</sub> = 16<sub>10</sub> ('''2'''×8<sup>1</sup> + '''0'''×8<sup>0</sup> = '''1'''×10<sup>1</sup> + '''6'''×10<sup>0</sup>). Decimal numbers written with leading zeros will be interpreted as octal by languages that follow this convention and will generate errors (not just unexpected results) if they contain "8" or "9", since these digits do not exist in octal. This behavior can be quite a nuisance when working with sequences of strings with embedded, zero-padded [[decimal]] numbers (typically file names) to facilitate alphabetical sorting (see above) or when validating inputs from users who would not know that adding a leading zero triggers this base conversion.