http://www.perlmonks.org?node_id=36590


in reply to Versioned modules

I did a bit of cleanup. I did not follow tye's suggestion because from both my reading of p5p and from my own tests, using "/" as a directory separator works portably. It might not look pretty, but it works.

The biggest improvement is that you automatically are going to inherit correctly. My new test script is:

#! /usr/bin/perl # See comments in Versioning about warnings use strict; require versioned_module; tst(0); tst(1); tst(0); tst(1); sub tst { $ENV{IS_PROD} = shift; import versioned_module("report_version"); report_version("Procedural"); report_version versioned_module("OO"); }
and the versioned modules look like:
use vars qw(@EXPORT_OK); @EXPORT_OK = qw(report_version); sub report_version { my $arg = pop(); my $ver = __PACKAGE__; print "Got version $ver through $arg interface\n"; }