X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FImport%2FInto.pm;h=b7d645fa800969a1a0163a323a643e02d4ad6ecd;hb=3946b3211d4c1adef2221543abd60c8f80088b99;hp=6700fd56a7cfce3b877104e71360be8bc56b0e63;hpb=c501842c7db0561623784d7361639fb4ede78737;p=p5sagit%2FImport-Into.git diff --git a/lib/Import/Into.pm b/lib/Import/Into.pm index 6700fd5..b7d645f 100644 --- a/lib/Import/Into.pm +++ b/lib/Import/Into.pm @@ -3,18 +3,23 @@ package Import::Into; use strict; use warnings FATAL => 'all'; -our $VERSION = '1.001000'; # 1.1.0 +our $VERSION = '1.001001'; # 1.1.1 my %importers; sub _importer { my $target = shift; - \($importers{$target} ||= eval qq{ - package $target; - sub { my \$m = splice \@_, 1, 1; shift->\$m(\@_) }; - } or die "Couldn't build importer for $target: $@") + my ($package, $file, $line) + = $target =~ /[^0-9]/ ? ($target) : caller($target + 1); + my $code = qq{package $package;\n} + . ($file ? "#line $line \"$file\"\n" : '') + . 'sub { my $m = splice @_, 1, 1; shift->$m(@_) };'."\n"; + my $sub = \(eval $code + or die "Couldn't build importer for $package: $@"); + $importers{$target} = $sub + unless $file; + $sub; } - sub import::into { my ($class, $target, @args) = @_; @@ -181,6 +186,12 @@ you're receiving this from a parameter, I recommend using L: And that's it. +=head1 ACKNOWLEDGEMENTS + +Thanks to Getty for asking "how can I get C<< use strict; use warnings; >> +turned on for all consumers of my code?" and then "why is this not a +module?!". + =head1 AUTHOR mst - Matt S. Trout (cpan:MSTROUT)