Don't be resistant to using procedures. They are beneficial in many ways. All of my MEL development is done in procedures for a couple reasons.
First, it is much easier to develop MEL scripts as a procedure. Encapsulating what you want to do within a couple lines of code is small price to pay to be able iterate using the source command. It is almost always better to have source catch errors before letting the script run halfway and then blow up.
Working in procedures keeps your variables local to the procedure. If you simply declare a variable in the script window, the variable is created as a global and is permanent. Inevitably, you will find yourself changing the type of a variable and it is a pain to rename every instance of it. The only way to change the type of a global variable is to restart Maya. Also local variables prevent conflict. How many scripts do you think use the variable "$selected."
Also, if the script is going on a button, it is much easier to assign a command like myScriptedProcedure; to a button than 30 lines of MEL. Much easier to update if a change is needed also.
--JeffD