blob: db1cb2a9c61f0dcb221e4e0b9f30d7760bcc56d3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
package Importer::Exporter;
use strict;
use warnings;
use Importer Importer => (
exporter_import => { -as => 'import' },
exporter_import => { -as => 'export' },
);
our @EXPORT_OK = qw/import/;
sub export_fail { shift; @_ }
sub export_to_level {
my $from = shift;
my ($level) = @_;
Importer->import_into($from, $level + 1, @_);
}
sub require_version {
my ($self, $wanted) = @_;
my $pkg = ref $self || $self;
return ${pkg}->VERSION($wanted);
}
my $push_tags = sub {
my $from = shift;
my ($var, @tags) = @_;
no strict 'refs';
my $export = \%{"$from\::$var"};
my $export_tags = \%{"$from\::EXPORT_TAGS"};
use strict 'refs';
my @nontag = ();
for my $tag (@tags ? @tags : keys %$export_tags) {
my $tag_list = $export_tags->{$tag};
$tag_list ? push @$export => @$tag_list : push @nontag => $tag;
};
return unless @nontag && $^W;
require Carp;
Carp::carp(join(", ", @nontag) . " are not tags of $from");
};
sub export_tags {
my $from = shift;
$from->$push_tags('EXPORT', @_);
}
sub export_ok_tags {
my $from = shift;
$from->$push_tags('EXPORT_OK', @_);
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Importer::Exporter - DO NOT USE THIS
=head1 DESCRIPTION
This is what L<Exporter> would look like if it used L<Importer> to get the job
done. Works with C<use base 'Importer::Exporter';> as well as
C<use Importer::Exporter qw/import/>.
=head1 *** EXPERIMENTAL ***
This module is still experimental. Anything can change at any time. Testing is
currently VERY insufficient.
=head1 SOURCE
The source code repository for symbol can be found at
F<http://github.com/exodist/Importer>.
=head1 MAINTAINERS
=over 4
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
=back
=head1 AUTHORS
=over 4
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
=back
=head1 COPYRIGHT
Copyright 2015 Chad Granum E<lt>exodist7@gmail.comE<gt>.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
See F<http://dev.perl.org/licenses/>
=cut
|