If you want to introduce a function called describe() in code where you already use the global describe(), I think having to search and replace describe() with predef::describe() is actually quite an acceptable "burden". But normally you probably simply would not get the idea to call a function the same as one that you already use.
Also if this direction is your concern, you could also call it, for example, Pike.describe(), and that way it can even work for non-functions, i.e. say programs etc, where p->doc would be an issue as that currently would for example access "constant" members called doc and since a "constant doc" is really not unfathomable to exist in user code, could be problematic as well with the -> scheme.