fixed module template, less Perl version dependencies, more flexible and untangled templating
use strict;
use warnings;
use Data::Dumper;
sub test_tmpl {
my ($name) = @_;
return $name, <<"__CODE__";
package $name;
sub import {
warn "$name imported";
}
1;
__CODE__
}
sub create_module {
my ( $module, $source ) = @_;
eval $source;
(my $name = $module)
=~ s(::)(\/)g;
my @caller = caller();
$INC{"$name.pm"} = "imported via eval at @caller";
}
BEGIN {
create_module( test_tmpl('Jabba::Dabba') );
}
use Jabba::Dabba;
warn Dumper \%INC;
-*- mode: compilation; default-directory: "d:/tmp/pm/" -*-
Compilation started at Mon Dec 28 18:09:17
C:/Perl_524/bin\perl.exe -w d:/tmp/pm/create_class.pl
Jabba::Dabba imported at (eval 2) line 5.
$VAR1 = {
'overloading.pm' => 'C:/Perl_524/lib/overloading.pm',
'Data/Dumper.pm' => 'C:/Perl_524/lib/Data/Dumper.pm',
'overload.pm' => 'C:/Perl_524/lib/overload.pm',
'strict.pm' => 'C:/Perl_524/lib/strict.pm',
'warnings/register.pm' => 'C:/Perl_524/lib/warnings/register
+.pm',
'bytes.pm' => 'C:/Perl_524/lib/bytes.pm',
'Jabba/Dabba.pm' => 'imported via eval at main d:/tmp/pm/cre
+ate_class.pl 39',
'Carp.pm' => 'C:/Perl_524/lib/Carp.pm',
'C:/Perl_524/site/lib/sitecustomize.pl' => 'C:/Perl_524/site
+/lib/sitecustomize.pl',
'XSLoader.pm' => 'C:/Perl_524/lib/XSLoader.pm',
'constant.pm' => 'C:/Perl_524/lib/constant.pm',
'warnings.pm' => 'C:/Perl_524/lib/warnings.pm',
'Exporter.pm' => 'C:/Perl_524/lib/Exporter.pm'
};
Compilation finished at Mon Dec 28 18:09:17
| [reply] [d/l] [select] |