- 论坛徽章:
- 1
|
- [code][code]package Mojo::Base;
- use strict;
- use warnings;
- use utf8;
- use feature ();
- # No imports because we get subclassed, a lot!
- use Carp ();
- # Only Perl 5.14+ requires it on demand
- use IO::Handle ();
- sub import {
- my $class = shift;
- return unless my $flag = shift;
- no strict 'refs';
- # Base
- if ($flag eq '-base') { $flag = $class }
- # Strict
- elsif ($flag eq '-strict') { $flag = undef }
- # Module
- elsif ((my $file = $flag) && !$flag->can('new')) {
- $file =~ s!::|'!/!g;
- require "$file.pm";
- }
- # ISA
- if ($flag) {
- my $caller = caller;
- push @{"${caller}::ISA"}, $flag;
- *{"${caller}::has"} = sub { attr($caller, @_) };
- }
- # Mojo modules are strict!
- strict->import;
- warnings->import;
- utf8->import;
- feature->import(':5.10');
- }
- sub new {
- my $class = shift;
- bless @_ ? @_ > 1 ? {@_} : {%{$_[0]}} : {}, ref $class || $class;
- }
复制代码 [/code][/code] |
|