line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Mojo::Base::Che; |
2
|
|
|
|
|
|
|
# ABSTRACT: some patch for Mojo::Base(current 8.23) |
3
|
|
|
|
|
|
|
|
4
|
1
|
|
|
1
|
|
620
|
use Mojo::Base -strict; |
|
1
|
|
|
|
|
209011
|
|
|
1
|
|
|
|
|
7
|
|
5
|
|
|
|
|
|
|
#~ use mro;# weak |
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
# copy-paste sub Mojo::Base::attr + patch 1 line #~ |
8
|
|
|
|
|
|
|
sub Mojo::Base::attr { |
9
|
197
|
|
|
197
|
1
|
355823
|
my ($self, $attrs, $value, %kv) = @_; |
10
|
197
|
50
|
33
|
|
|
1109
|
return unless (my $class = ref $self || $self) && $attrs; |
|
|
|
33
|
|
|
|
|
11
|
|
|
|
|
|
|
|
12
|
197
|
50
|
66
|
|
|
617
|
Carp::croak 'Default has to be a code reference or constant value' |
13
|
|
|
|
|
|
|
if ref $value && ref $value ne 'CODE'; |
14
|
197
|
50
|
|
|
|
511
|
Carp::croak 'Unsupported attribute option' if grep { $_ ne 'weak' } keys %kv; |
|
9
|
|
|
|
|
48
|
|
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
# Weaken |
17
|
197
|
100
|
|
|
|
440
|
if ($kv{weak}) { |
18
|
9
|
|
|
|
|
29
|
state %weak_names; |
19
|
9
|
50
|
|
|
|
32
|
unless ($weak_names{$class}) { |
20
|
9
|
|
|
|
|
27
|
my $names = $weak_names{$class} = []; |
21
|
|
|
|
|
|
|
my $sub = sub { |
22
|
0
|
|
|
0
|
|
0
|
my $self = shift->next::method(@_); |
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
23
|
0
|
|
0
|
|
|
0
|
ref $self->{$_} and Scalar::Util::weaken $self->{$_} for @$names; |
24
|
0
|
|
|
|
|
0
|
return $self; |
25
|
9
|
|
|
|
|
47
|
}; |
26
|
9
|
|
|
|
|
49
|
Mojo::Util::monkey_patch(my $base = $class . '::_Base', 'new', $sub); |
27
|
1
|
|
|
1
|
|
412
|
no strict 'refs'; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
735
|
|
28
|
9
|
|
|
|
|
203
|
unshift @{"${class}::ISA"}, $base; |
|
9
|
|
|
|
|
153
|
|
29
|
|
|
|
|
|
|
} |
30
|
9
|
100
|
|
|
|
27
|
push @{$weak_names{$class}}, ref $attrs eq 'ARRAY' ? @$attrs : $attrs; |
|
9
|
|
|
|
|
47
|
|
31
|
|
|
|
|
|
|
} |
32
|
|
|
|
|
|
|
|
33
|
197
|
100
|
|
|
|
258
|
for my $attr (@{ref $attrs eq 'ARRAY' ? $attrs : [$attrs]}) { |
|
197
|
|
|
|
|
690
|
|
34
|
|
|
|
|
|
|
#~ Carp::croak qq{Attribute "$attr" invalid} unless $attr =~ /^[a-zA-Z_]\w*$/; |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
# Very performance-sensitive code with lots of micro-optimizations |
37
|
255
|
|
|
|
|
1200
|
my $sub; |
38
|
255
|
100
|
|
|
|
658
|
if ($kv{weak}) { |
|
|
100
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
39
|
10
|
100
|
|
|
|
22
|
if (ref $value) { |
40
|
|
|
|
|
|
|
$sub = sub { |
41
|
|
|
|
|
|
|
return exists $_[0]{$attr} |
42
|
|
|
|
|
|
|
? $_[0]{$attr} |
43
|
|
|
|
|
|
|
: ( |
44
|
|
|
|
|
|
|
ref($_[0]{$attr} = $value->($_[0])) |
45
|
|
|
|
|
|
|
&& Scalar::Util::weaken($_[0]{$attr}), |
46
|
0
|
0
|
0
|
0
|
|
0
|
$_[0]{$attr} |
|
|
0
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
47
|
|
|
|
|
|
|
) if @_ == 1; |
48
|
0
|
0
|
|
|
|
0
|
ref($_[0]{$attr} = $_[1]) and Scalar::Util::weaken($_[0]{$attr}); |
49
|
0
|
|
|
|
|
0
|
$_[0]; |
50
|
7
|
|
|
|
|
30
|
}; |
51
|
|
|
|
|
|
|
} |
52
|
|
|
|
|
|
|
else { |
53
|
|
|
|
|
|
|
$sub = sub { |
54
|
0
|
0
|
|
0
|
|
0
|
return $_[0]{$attr} if @_ == 1; |
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
55
|
0
|
0
|
|
|
|
0
|
ref($_[0]{$attr} = $_[1]) and Scalar::Util::weaken($_[0]{$attr}); |
56
|
0
|
|
|
|
|
0
|
$_[0]; |
57
|
3
|
|
|
|
|
14
|
}; |
58
|
|
|
|
|
|
|
} |
59
|
|
|
|
|
|
|
} |
60
|
|
|
|
|
|
|
elsif (ref $value) { |
61
|
|
|
|
|
|
|
$sub = sub { |
62
|
|
|
|
|
|
|
return |
63
|
23
|
100
|
|
23
|
|
2505
|
exists $_[0]{$attr} ? $_[0]{$attr} : ($_[0]{$attr} = $value->($_[0])) |
|
|
100
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
23
|
|
|
|
64
|
|
|
|
|
|
|
if @_ == 1; |
65
|
1
|
|
|
|
|
4
|
$_[0]{$attr} = $_[1]; |
66
|
1
|
|
|
|
|
4
|
$_[0]; |
67
|
119
|
|
|
|
|
409
|
}; |
68
|
|
|
|
|
|
|
} |
69
|
|
|
|
|
|
|
elsif (defined $value) { |
70
|
|
|
|
|
|
|
$sub = sub { |
71
|
1
|
50
|
|
1
|
|
21
|
return exists $_[0]{$attr} ? $_[0]{$attr} : ($_[0]{$attr} = $value) |
|
|
50
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
1
|
|
|
|
72
|
|
|
|
|
|
|
if @_ == 1; |
73
|
0
|
|
|
|
|
0
|
$_[0]{$attr} = $_[1]; |
74
|
0
|
|
|
|
|
0
|
$_[0]; |
75
|
55
|
|
|
|
|
252
|
}; |
76
|
|
|
|
|
|
|
} |
77
|
|
|
|
|
|
|
else { |
78
|
|
|
|
|
|
|
$sub |
79
|
71
|
0
|
|
0
|
|
252
|
= sub { return $_[0]{$attr} if @_ == 1; $_[0]{$attr} = $_[1]; $_[0] }; |
|
0
|
|
|
0
|
|
0
|
|
|
0
|
|
|
0
|
|
0
|
|
|
0
|
|
|
0
|
|
0
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
80
|
|
|
|
|
|
|
} |
81
|
255
|
|
|
|
|
641
|
Mojo::Util::monkey_patch($class, $attr, $sub); |
82
|
|
|
|
|
|
|
} |
83
|
|
|
|
|
|
|
} |
84
|
|
|
|
|
|
|
|
85
|
|
|
|
|
|
|
|
86
|
|
|
|
|
|
|
|
87
|
|
|
|
|
|
|
#~ sub import { |
88
|
|
|
|
|
|
|
#~ my ($class, $caller) = (shift, caller); |
89
|
|
|
|
|
|
|
#~ my @flags = _lib_flags(@_); |
90
|
|
|
|
|
|
|
#~ Mojo::Base->import(@flags); # patch 2 |
91
|
|
|
|
|
|
|
#~ } |
92
|
|
|
|
|
|
|
|
93
|
|
|
|
|
|
|
|
94
|
|
|
|
|
|
|
#~ sub _lib_flags {# patch2 |
95
|
|
|
|
|
|
|
#~ my ($flag, $findbin, @flags, @libs) = (); |
96
|
|
|
|
|
|
|
|
97
|
|
|
|
|
|
|
#~ while ((my $it = shift) || @_) {# parse flags |
98
|
|
|
|
|
|
|
#~ unshift @_, @$it |
99
|
|
|
|
|
|
|
#~ and next |
100
|
|
|
|
|
|
|
#~ if ref $it eq 'ARRAY'; |
101
|
|
|
|
|
|
|
|
102
|
|
|
|
|
|
|
#~ next |
103
|
|
|
|
|
|
|
#~ unless defined($it) && $it =~ m'/|\w';# / root lib? lets |
104
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
#~ if ($it =~ s'^(-\w+)'') {# controll flag |
106
|
|
|
|
|
|
|
#~ $flag = $1; |
107
|
|
|
|
|
|
|
#~ push @flags, $flag |
108
|
|
|
|
|
|
|
#~ and next |
109
|
|
|
|
|
|
|
#~ unless $flag eq '-lib'; |
110
|
|
|
|
|
|
|
|
111
|
|
|
|
|
|
|
#~ unshift @_, split m'[:;]+', $it # -lib:foo;bar |
112
|
|
|
|
|
|
|
#~ if $it; |
113
|
|
|
|
|
|
|
|
114
|
|
|
|
|
|
|
#~ next; |
115
|
|
|
|
|
|
|
#~ } elsif (!$flag || $flag ne '-lib') { # non controll |
116
|
|
|
|
|
|
|
#~ push @flags, $it; |
117
|
|
|
|
|
|
|
#~ next; |
118
|
|
|
|
|
|
|
#~ # unless $flag && $flag eq '-lib';# non lib items |
119
|
|
|
|
|
|
|
#~ } |
120
|
|
|
|
|
|
|
|
121
|
|
|
|
|
|
|
#~ push @libs, $it # abs lib |
122
|
|
|
|
|
|
|
#~ and next |
123
|
|
|
|
|
|
|
#~ if $it =~ m'^/'; |
124
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
#~ $findbin ||= require FindBin && $FindBin::Bin;# relative lib |
126
|
|
|
|
|
|
|
#~ push @libs, $findbin.'/'.$it; |
127
|
|
|
|
|
|
|
#~ } |
128
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
#~ my @ok_libs = grep { my $lib = $_; not scalar grep($lib eq $_, @INC) } @libs |
130
|
|
|
|
|
|
|
#~ if @libs; |
131
|
|
|
|
|
|
|
#~ require lib |
132
|
|
|
|
|
|
|
#~ and lib->import(@ok_libs) |
133
|
|
|
|
|
|
|
#~ if @ok_libs; |
134
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
#~ return @flags; |
136
|
|
|
|
|
|
|
#~ } |
137
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
1; |
139
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
=pod |
141
|
|
|
|
|
|
|
|
142
|
|
|
|
|
|
|
=encoding utf8 |
143
|
|
|
|
|
|
|
|
144
|
|
|
|
|
|
|
Доброго всем |
145
|
|
|
|
|
|
|
|
146
|
|
|
|
|
|
|
=head1 Mojo::Base::Che |
147
|
|
|
|
|
|
|
|
148
|
|
|
|
|
|
|
¡ ¡ ¡ ALL GLORY TO GLORIA ! ! ! |
149
|
|
|
|
|
|
|
|
150
|
|
|
|
|
|
|
=head1 NAME |
151
|
|
|
|
|
|
|
|
152
|
|
|
|
|
|
|
Mojo::Base::Che - some patch for Mojo::Base |
153
|
|
|
|
|
|
|
|
154
|
|
|
|
|
|
|
=head1 DESCRIPTION |
155
|
|
|
|
|
|
|
|
156
|
|
|
|
|
|
|
Патчи L. |
157
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
=head2 Причины патчей |
159
|
|
|
|
|
|
|
|
160
|
|
|
|
|
|
|
1. НЕТ!!NO!!!1111 Добавление путей в @INC; |
161
|
|
|
|
|
|
|
|
162
|
|
|
|
|
|
|
2. Разрешены хазы/атрибуты не только латиницей; |
163
|
|
|
|
|
|
|
|
164
|
|
|
|
|
|
|
=head1 SYNOPSIS |
165
|
|
|
|
|
|
|
|
166
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 This module provide a extended form for add extra lib directories to perl's search path. See L |
167
|
|
|
|
|
|
|
|
168
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 use Mojo::Base::Che -lib, qw(rel/path/lib /abs/path/lib); |
169
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 use Mojo::Base::Che -lib, ['lib1', 'lib2']; |
170
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 use Mojo::Base::Che '-lib:lib1:lib2;lib3'; |
171
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 use Mojo::Base::Che -strict, qw(-lib lib1 lib2); |
172
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 use Mojo::Base::Che qw(-base -lib lib1 lib2); |
173
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 use Mojo::Base::Che 'SomeBaseClass', qw(-lib lib1 lib2); |
174
|
|
|
|
|
|
|
|
175
|
|
|
|
|
|
|
use lib 'lib'; |
176
|
|
|
|
|
|
|
use Mojo::Base 'Foo'; |
177
|
|
|
|
|
|
|
use Mojo::Base::Che; # apply patch |
178
|
|
|
|
|
|
|
# GLORY utf names allow |
179
|
|
|
|
|
|
|
has [qw(☭хаза ☆маза)]; |
180
|
|
|
|
|
|
|
|
181
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 For relative lib path will use L module and C<$FindBin::Bin> is prepends to that lib. |
182
|
|
|
|
|
|
|
НЕТ!!NO!!!1111 Libs always applied first even its last on flags list. |
183
|
|
|
|
|
|
|
|
184
|
|
|
|
|
|
|
=head1 SEE ALSO |
185
|
|
|
|
|
|
|
|
186
|
|
|
|
|
|
|
L |
187
|
|
|
|
|
|
|
|
188
|
|
|
|
|
|
|
=head1 AUTHOR |
189
|
|
|
|
|
|
|
|
190
|
|
|
|
|
|
|
Михаил Че (Mikhail Che), C<< >> |
191
|
|
|
|
|
|
|
|
192
|
|
|
|
|
|
|
=head1 BUGS / CONTRIBUTING |
193
|
|
|
|
|
|
|
|
194
|
|
|
|
|
|
|
Please report any bugs or feature requests at L. |
195
|
|
|
|
|
|
|
|
196
|
|
|
|
|
|
|
=head1 COPYRIGHT |
197
|
|
|
|
|
|
|
|
198
|
|
|
|
|
|
|
Copyright 2016-2018+ Mikhail Che. |
199
|
|
|
|
|
|
|
|
200
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or modify |
201
|
|
|
|
|
|
|
it under the same terms as Perl itself. |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
=cut |