I am not very familiar with Safe, so I do not know if this would work:
Override open, somewhere.
your newfanlged open runs the arguments checks
it calls CORE::open if satisfied
This can be repeated ad libitum (though overriding some of the operators will probably require some heavy prototyping, if they are to look and feel exactly the same as the originals...).
Cheers,
alf
You can't have everything: where would you put it?