I think there are evil things in programming, but I don't use the term pejoratively.
Evil is when code pretends to behave in one way, but in reality behaves in a very different fashion, and in a way that hurts a unenlightened rational programmer. I often refer to this as a type of "Magic." Magic is anything who's functionality is "hidden" from the programmer, and it comes in different styles.
Example: in Scheme the functions "car" and "cdr" could be implemented using functions only, however, they are not. Instead they are implemented at a lower level imperatively because that runs faster on most computers. I'd call this "white magic." Its not evil, but its definitely magic.
if(x == NaN)
or if you're clever you might try the following with the same results
if(x === NaN)
I joking refer to this as getting "mana burned" (it is magic afterall...).
Then again, its possible people think otherwise...