l a s s : : N a m e ; # . . . } m y $ o b j = b l e s s { } , ' P a c k a g e : : N a m e ' ; m y $ o b j 2 = b l e s s [ ] , ' . . . ' ; m y $ s c a l a r = 4 2 ; m y $ o b j 2 = b l e s s \ $ s c a l a r , ' . . . ' ; 3 / 48
; s u b s e t _ a { m y ( $ s e l f , $ v a l u e ) = @ _ ; $ s e l f - > { a } = $ v a l u e ; r e t u r n ; } s u b g e t _ a { m y ( $ s e l f ) = @ _ ; r e t u r n $ s e l f - > { a } ; } } m y $ o b j = b l e s s { } , ' A ' ; $ o b j - > s e t _ a ( 4 2 ) ; p r i n t $ o b j - > g e t _ a ( ) ; # 4 2 5 / 48
; s u b n e w { m y ( $ c l a s s , % p a r a m s ) = @ _ ; r e t u r n b l e s s \ % p a r a m s , $ c l a s s ; } } m y $ o b j = A - > n e w ( a = > 1 , b = > 2 ) ; p r i n t $ o b j - > { a } ; # 1 p r i n t $ o b j - > { b } ; # 2 6 / 48
A ; s u b n e w { m y ( $ c l a s s , % p a r a m s ) = @ _ ; r e t u r n b l e s s \ % p a r a m s , $ c l a s s ; } s u b g e t _ a { m y ( $ s e l f ) = @ _ ; r e t u r n $ s e l f - > { a } ; } } m y $ o b j = A - > n e w ( a = > 4 2 ) ; $ o b j - > g e t _ a ( ) ; # 4 2 7 / 48
A : : g e t _ a ( ) ; m y $ c l a s s = ' A ' ; $ c l a s s - > n e w ( ) ; m y $ m e t h o d _ n a m e = $ c o n d ? ' g e t _ a ' : ' g e t _ b ' ; $ o b j - > $ m e t h o d _ n a m e ; A : : n e w ( ) ; # n o t t h e s a m e ! 8 / 48
C l a s s ( 1 , 2 , 3 ) ; M y : : C l a s s - > n e w ( 1 , 2 , 3 ) ; f o o $ o b j ( 1 2 3 ) ; # $ o b j - > f o o ( 1 2 3 ) ; u s e s t r i c t ; u s e w a r n i n g s ; S y n t a x e r r o r ! e x i t 0 ; 9 / 48
c t ; u s e w a r n i n g s ; S y n t a x e r r o r ! e x i t 0 ; u s e w a r n i n g s ; u s e s t r i c t ; ' e r r o r ' - > S y n t a x ( ! e x i t ( 0 ) ) ; 10 / 48
; s u b t e s t { r e t u r n 4 2 ; } } i f ( A - > c a n ( ' t e s t ' ) ) { p r i n t A - > t e s t ; } p r i n t A - > c a n ( ' t e s t ' ) - > ( ' A ' ) ; m y $ o b j = b l e s s { } , ' A ' ; $ o b j - > c a n ( ' t e s t ' ) ; 11 / 48
h , ' > ' , ' p a t h / t o / f i l e ' ) ; $ f h - > a u t o f l u s h ( ) ; $ f h - > p r i n t ( ' c o n t e n t ' ) ; S T D O U T - > a u t o f l u s h ( ) ; 12 / 48
P a c k a g e q w ( a b c ) ; # S o m e : : P a c k a g e - > i m p o r t ( q w ( a b c ) ) ; n o S o m e : : P a c k a g e ; # S o m e : : P a c k a g e - > u n i m p o r t ; u s e S o m e : : P a c k a g e 1 0 . 0 1 # S o m e : : P a c k a g e - > V E R S I O N ( 1 0 . 0 1 ) ; 13 / 48
> c o n n e c t ( $ d a t a _ s o u r c e , $ u s e r n a m e , $ a u t h , \ % a t t r ) ; $ r v = $ d b h - > d o ( ' D E L E T E F R O M t a b l e ' ) ; 15 / 48
i b X M L ; m y $ d o c u m e n t = X M L : : L i b X M L - > l o a d _ x m l ( s t r i n g = > ' . . . ' ) ; m y $ l i s t = $ d o c u m e n t - > f i n d n o d e s ( ' . . . ' ) ; # X M L : : L i b X M L : : N o d e L i s t X M L : : L i b X M L : : N o d e / \ X M L : : L i b X M L : : D o c u m e n t X M L : : L i b X M L : : E l e m e n t 16 / 48
y n x ; B E G I N { p u s h ( @ I S A , ' D o g ' , ' C a t ' ) } u s e b a s e q w ( D o g C a t ) ; u s e p a r e n t q w ( D o g C a t ) ; } 20 / 48
P e t B a r k a b l e / \ / C a t D o g \ / L y n x L y n x - > m e t h o d ( ) ; q w ( L y n x C a t P e t A n i m a l D o g B a r k a b l e ) ; 24 / 48
e t B a r k a b l e / \ / C a t D o g \ / L y n x u s e m r o ' c 3 ' ; L y n x - > m e t h o d ( ) ; q w ( L y n x C a t D o g P e t A n i m a l B a r k a b l e ) ; 25 / 48
A ; u s e m r o ; s u b f o o { m y ( $ s e l f , $ p a r a m ) = @ _ ; $ p a r a m + + ; r e t u r n $ o b j - > n e x t : : m e t h o d ( $ p a r a m ) ; } 26 / 48
f u s e J S O N : u s e S c a l a r : : U t i l ' b l e s s e d ' ; r e f J S O N - > n e w ( ) ; # ' J S O N ' r e f [ ] ; # ' A R R A Y ' r e f { } ; # ' H A S H ' r e f 0 ; # ' ' b l e s s e d J S O N - > n e w ( ) ; # ' J S O N ' b l e s s e d [ ] ; # u n d e f b l e s s e d { } ; # u n d e f b l e s s e d 0 ; # u n d e f 28 / 48
o u r $ A U T O L O A D ; s u b n e w { m y ( $ c l a s s , % p a r a m s ) = @ _ ; r e t u r n b l e s s \ % p a r a m s , $ c l a s s ; } s u b A U T O L O A D { p r i n t $ A U T O L O A D } A - > n e w ( ) - > t e s t ( ) ; # t e s t A - > c a n ( ' a n y t h i n g ' ) ; # : ( s u b U N I V E R S A L : : A U T O L O A D { # : > } # D o g - > m ( ) ; A n i m a l - > m ( ) ; U N I V E R S A L - > m ( ) ; # D o g - > A U T O L O A D ( ) ; A n i m a l - > A U T O L O A D ( ) ; U N I V E R S A L - > A U T O L O A D ( ) ; 29 / 48
s u b n e w { m y ( $ c l a s s , % p a r a m s ) = @ _ ; r e t u r n b l e s s \ % p a r a m s , $ c l a s s ; } s u b D E S T R O Y { p r i n t ' D ' ; } A - > n e w ( ) ; # p r i n t ' D ' 30 / 48
l A U T O L O A D $ { ^ G L O B A L _ P H A S E } e q ' D E S T R U C T ' s u b D E S T R O Y { m y ( $ s e l f ) = @ _ ; $ s e l f - > { h a n d l e } - > c l o s e ( ) i f $ s e l f - > { h a n d l e } ; } 31 / 48
o ; u s e b a s e q w ( C l a s s : : A c c e s s o r ) ; F o o - > f o l l o w _ b e s t _ p r a c t i c e ; F o o - > m k _ a c c e s s o r s ( q w ( n a m e r o l e s a l a r y ) ) ; u s e b a s e q w ( C l a s s : : A c c e s s o r : : F a s t ) ; u s e b a s e q w ( C l a s s : : A c c e s s o r : : F a s t ) C l a s s : : X S A c c e s s o r X S A c c e s s o r ) ; 32 / 48
r s o n ; u s e M o o s e ; h a s f i r s t _ n a m e = > ( i s = > ' r w ' , i s a = > ' S t r ' , ) ; h a s l a s t _ n a m e = > ( i s = > ' r w ' , i s a = > ' S t r ' , ) ; P e r s o n - > n e w ( f i r s t _ n a m e = > ' V a d i m ' , l a s t _ n a m e = > ' P u s h t a e v ' , ) ; 34 / 48
= > ( i s = > ' r o ' , i s a = > ' I n t ' ) ; h a s i s _ a d u l t = > ( i s = > ' r o ' , i s a = > ' B o o l ' ) ; s u b B U I L D { m y ( $ s e l f ) = @ _ ; $ s e l f - > i s _ a d u l t ( $ s e l f - > a g e > = 1 8 ) ; r e t u r n ; } 36 / 48
= > ( i s = > ' r o ' , i s a = > ' I n t ' ) ; h a s i s _ a d u l t = > ( i s = > ' r o ' , i s a = > ' B o o l ' , l a z y = > 1 , d e f a u l t = > s u b { m y ( $ s e l f ) = @ _ ; r e t u r n $ s e l f - > a g e > = 1 8 ; } ) ; 37 / 48
= > ( i s = > ' r o ' , i s a = > ' I n t ' ) ; h a s i s _ a d u l t = > ( i s = > ' r o ' , i s a = > ' B o o l ' , l a z y = > 1 , b u i l d e r = > ' _ b u i l d _ i s _ a d u l t ' , ) ; s u b _ b u i l d _ i s _ a d u l t { m y ( $ s e l f ) = @ _ ; r e t u r n $ s e l f - > a g e > = 1 8 ; } p a c k a g e S u p e r M a n ; e x t e n d s ' P e r s o n ' ; s u b _ b u i l d _ i s _ a d u l t { r e t u r n 1 ; } 38 / 48
( f i l e _ n a m e f h f i l e _ c o n t e n t x m l _ d o c u m e n t d a t a ) ] = > ( l a z y _ b u i l d = > 1 , # . . . ) ; s u b _ b u i l d _ f h { # o p e n ( f i l e _ n a m e ) } s u b _ b u i l d _ f i l e _ c o n t e n t { # r e a d ( f h ) } s u b _ b u i l d _ x m l _ d o c u m e n t { # p a r s e ( f i l e _ c o n t e n t ) } s u b _ b u i l d _ d a t a { # f i n d ( x m l _ d o c u m e n t ) } 39 / 48
l e : : H a s P a s s w o r d ' ; p a c k a g e R o l e : : H a s P a s s w o r d ; u s e M o o s e : : R o l e ; u s e S o m e : : D i g e s t ; h a s p a s s w o r d = > ( i s = > ' r o ' , i s a = > ' S t r ' , ) ; s u b p a s s w o r d _ d i g e s t { m y ( $ s e l f ) = @ _ ; r e t u r n S o m e : : D i g e s t - > n e w ( $ s e l f - > p a s s w o r d ) ; } 40 / 48
> ( i s = > ' r o ' , i s a = > ' I t e m ' , h a n d l e s = > [ q w ( r e a d w r i t e s i z e ) ] , ) ; h a s l a s t _ l o g i n = > ( i s = > ' r w ' , i s a = > ' D a t e T i m e ' , h a n d l e s = > { ' d a t e _ o f _ l a s t _ l o g i n ' = > ' d a t e ' } , ) ; { h a n d l e s = > q r / ^ g e t _ ( a | b | c ) | s e t _ ( a | d | e ) $ / , h a n d l e s = > ' R o l e : : N a m e ' , } 41 / 48
e ' i s _ a d u l t ' = > s u b { s h i f t - > r e c a l c u l a t e _ a g e } s u b t y p e ' M o d e r n D a t e T i m e ' = > a s ' D a t e T i m e ' = > w h e r e { $ _ - > y e a r ( ) > = 1 9 8 0 } = > m e s s a g e { ' T h e d a t e y o u p r o v i d e d i s n o t m o d e r n e n o u g h ' } ; h a s ' v a l i d _ d a t e s ' = > ( i s = > ' r o ' , i s a = > ' A r r a y R e f [ D a t e T i m e ] ' , ) ; p a c k a g e C o n f i g ; u s e M o o s e X : : S i n g l e t o n ; # i n s t e a d o f M o o s e h a s ' c a c h e _ d i r ' = > ( . . . ) ; 42 / 48
y $ g r o u p = L o c a l : : O K : : G r o u p - > n e w ( ' h t t p : / / o k . r u / g r o u p / 5 4 1 2 9 2 0 0 2 0 1 7 2 8 / ' ) ; $ g r o u p - > i d ; $ g r o u p - > n a m e ; $ g r o u p - > c o n t e n t ; $ g r o u p - > u r l ; 45 / 48
авторизации. m y $ t o p i c = L o c a l : : O K : : T o p i c - > n e w ( ' h t t p : / / o k . r u / g o o d f o o d / t o p i c / 6 6 7 9 1 6 7 3 1 7 6 0 6 4 ' ) ; $ t o p i c - > i d ; $ t o p i c - > c o n t e n t ; $ t o p i c - > t e x t ; $ t o p i c - > g r o u p ; # L i b : : O K : : G r o u p ; 46 / 48
O K : : G r o u p и L i b : : O K : : T o p i c . p a c k a g e L o c a l : : M i x i n : : D o w n l o a d a b l e ; # U R L - > c o n t e n t 47 / 48
библиотеку. m y $ c o n e = L o c a l : : C o n e - > n e w ( b a s e = > L o c a l : : C i r c l e - > n e w ( r a d i u s = > 1 . 5 ) , h e i g h t = > 1 2 , ) ; $ c o n e - > h e i g h t ; $ c o n e - > s l a n t _ h e i g h t ; $ c o n e - > s u r f a c e _ a r e a ; $ c o n e - > v o l u m e ; $ c o n e - > b a s e ; $ c o n e - > b a s e - > a r e a ; $ c o n e - > b a s e - > l e n g t h ; 48 / 48