use Text::Balanced '1.95_1.96';
-davidm
I don't understand the scenario in which someone besides the module author would
ever use this. If I have understood this thread so far, the interface changed in version
1.96 and then changed back, and you want to support the poor souls who are using
the legacy 1.96 interface. Assuming they listed the current version they were using
in their source code, they are going to have
use t::B 1.96;
in there.
They aren't going to have a way-new skypie version phrasing, and apparently we care
too much about them to force them to adjust their installed code to the new interface.
I therefore repeat my recommendation that an overloaded VERSION could place
flags in the dynamic variable space with respect to caller(), which is available
within VERSION; with the adjustment that the flags get placed under the name space
of the module we are adjusting the interface of rather than under the caller's name space,
in case the caller needs a census of their name space.
No, I take that back, because it would break Pollute - style multiple include files. Pick
a name for your flags and boldly pollute your caller's package with them. Make
Text::Balanced::VERSION set ${caller().'::Text_Balanced_InterfaceFlag_Baz'} with
the appropriate behavior for how Baz is handled by the interface of the version
requested, and make the method that handles that version refer to the flag using
the same syntax.
One could even keep multiple versions as whole methods and dispatch them through a variable in caller()'s name space:
sub Text::Balanced::Blurf( eval{ goto &{caller().'::Text_Balanced_InterfaceFlag_Blurf'} }; $@ and warn "tsk tsk, Text::Balanced used without version" )
okay, I'm stepping down from my soap box now
-- [EMAIL PROTECTED] Include phrase "cat and buttered toast" to get through my filter