== The fun of _awk_ I like _awk_, I really do, but sometimes it really irritates me. Take, for example, this fun little awk program: > _awk 'BEGIN {print "5" == "05"}' /dev/null_ You might rationally expect this to print '1' (awk's boolean truth value). As I found out once, you would be sadly mistaken; this is false, presumably because _awk_ winds up doing a string comparison instead of a numeric one. Too bad if you're reading one set of fields that are zero-padded and one set that aren't. (The workaround is add 0 to the "05" to force the numeric interpretation; _"5" == ("05"+0)_ comes out true.) This shows two drawbacks of the sort of magical conversion between numbers and strings that _awk_ does. First, this sort of stuff involves heuristics, and heuristics are inevitably wrong sooner or later. And second, if you do not have the fine details carefully memorized you can wind up surprised. At the same time such magical conversions live on because they are oh so very handy when you are banging things in a hurry. Considering the sorts of things that _awk_ was designed for, this is completely the right decision for it; having to write explicit Python-style conversions all the time would probably drive me up the wall, however much I like them in Python.