~ubuntu-branches/ubuntu/wily/libmodule-info-perl/wily

« back to all changes in this revision

Viewing changes to lib/Module/Info.pm

  • Committer: Bazaar Package Importer
  • Author(s): Jay Bonci
  • Date: 2007-07-03 13:02:51 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20070703130251-a3lwdwadryajtfkk
Tags: 0.31-1
* New upstream release
* Bumped policy version to 3.7.2.2 (No other changes)
* Build-Depends-Indep to Build-Depends to satisfy lintian
* Changed debian/rules so that make clean is only conditionally ignored

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
use Config;
7
7
require 5.004;
8
8
 
9
 
use vars qw($VERSION @ISA);
10
 
$VERSION = '0.28';
11
 
@ISA = qw(Module::Info::Unsafe);
 
9
my $has_version_pm = eval 'use version; 1';
 
10
 
 
11
use vars qw($VERSION @ISA $AUTOLOAD);
 
12
# quotes 'version' for 5.004
 
13
$VERSION = eval 'use version; 1' ? 'version'->new('0.31') : '0.31';
 
14
$VERSION = eval $VERSION;
12
15
 
13
16
 
14
17
=head1 NAME
88
91
    $self->{file} = File::Spec->rel2abs($file);
89
92
    $self->{dir}  = '';
90
93
    $self->{name} = '';
 
94
    $self->{safe} = 0;
 
95
    $self->{use_version} = 0;
91
96
 
92
97
    return bless $self, $class;
93
98
}
129
134
    $module->{name} = $name;
130
135
    ($module->{dir} = $filepath) =~ s|/?\Q$mod_file\E$||;
131
136
    $module->{dir} = File::Spec->rel2abs($module->{dir});
 
137
    $module->{safe} = 0;
 
138
    $module->{use_version} = 0;
132
139
 
133
140
    return $module;
134
141
}
156
163
 
157
164
    @inc = @INC unless @inc;
158
165
    my $file = File::Spec->catfile(split /::/, $name) . '.pm';
159
 
    
 
166
 
160
167
    my @modules = ();
161
168
    DIR: foreach my $dir (@inc) {
162
169
        # Skip the new code ref in @INC feature.
171
178
            last DIR if $find_first_one;
172
179
        }
173
180
    }
174
 
              
 
181
 
175
182
    return @modules;
176
183
}
177
184
 
190
197
  my $name = $module->name;
191
198
  $module->name($name);
192
199
 
193
 
Name of the module (ie. Some::Module).  
 
200
Name of the module (ie. Some::Module).
194
201
 
195
202
Module loaded using new_from_file() won't have this information in
196
203
which case you can set it yourself.
199
206
 
200
207
sub name {
201
208
    my($self) = shift;
202
 
    
 
209
 
203
210
    $self->{name} = shift if @_;
204
211
    return $self->{name};
205
212
}
237
244
 
238
245
                      local $1$2;
239
246
                      \$$2=undef; do {
240
 
                          $_
 
247
                          %s
241
248
                      }; \$$2
242
 
        }, ( $safe ? '' : 'no strict;' );
 
249
        }, ( $safe ? '' : 'no strict;' ), $_;
243
250
        local $^W = 0;
244
251
        $result = $self->_eval($eval);
245
252
        warn "Could not eval '$eval' in $parsefile: $@" if $@ && !$safe;
247
254
        last;
248
255
    }
249
256
    close MOD;
 
257
    $result = 'version'->new($result) # quotes for 5.004
 
258
      if    $self->use_version
 
259
         && (!ref($result) || !UNIVERSAL::isa($result, "version"));
250
260
    return $result;
251
261
}
252
262
 
654
664
    my($self) = shift;
655
665
 
656
666
    if( @_ ) {
657
 
        @ISA = $_[0] ? 'Module::Info::Safe' : 'Module::Info::Unsafe';
658
 
        require Safe if $_[0];
659
 
    }
660
 
    # isa() fails with (at least) ActivePerl 522
661
 
    return $ISA[0] eq 'Module::Info::Safe' ? 1 : 0;
 
667
        $self->{safe} = $_[0] ? 1 : 0;
 
668
        require Safe if $self->{safe};
 
669
    }
 
670
    return $self->{safe};
 
671
}
 
672
 
 
673
sub AUTOLOAD {
 
674
    my($super) = $_[0]->safe ? 'Module::Info::Safe' : 'Module::Info::Unsafe';
 
675
    my($method) = $AUTOLOAD;
 
676
    $method =~ s/^.*::([^:]+)$/$1/;
 
677
 
 
678
    return if $method eq 'DESTROY';
 
679
 
 
680
    my($code) = $super->can($method);
 
681
 
 
682
    die "Can not find method '$method' in Module::Info" unless $code;
 
683
 
 
684
    goto &$code;
 
685
}
 
686
 
 
687
=item B<use_version>
 
688
 
 
689
  $module->use_version(0); # do not use version.pm (default)
 
690
  $module->use_version(1); # use version.pm, die if not present
 
691
  my $flag = $module->use_version;
 
692
 
 
693
Sets/gets the "use_version" flag. When the flag is enabled the 'version'
 
694
method always returns a version object.
 
695
 
 
696
=cut
 
697
 
 
698
sub use_version {
 
699
    my($self) = shift;
 
700
 
 
701
    if( @_ ) {
 
702
        die "Can not use 'version.pm' as requested"
 
703
          if $_[0] && !$has_version_pm;
 
704
 
 
705
        $self->{use_version} = $_[0] ? 1 : 0;
 
706
    }
 
707
 
 
708
    return $self->{use_version};
662
709
}
663
710
 
664
711
=back