ÿþI D Z D O
I D Z D O
P R Z Y K £ A D O W Y R O Z D Z I A £
P R Z Y K £ A D O W Y R O Z D Z I A £
P e r l d l a Sr e d n i o
S P I S T R E SC I
S P I S T R E SC I
z a a w a n s o w a n y c h
K A T A L O G K S I ¥ ¯ E K
K A T A L O G K S I ¥ ¯ E K
A u t o r z y : R a n d a l L . S c h w a r t z , B r i a n d f o y , T o m P h o e n i x
T ³ u m a c z e n i e : T o m a s z W a l c z a k
K A T A L O G O N L I N E
K A T A L O G O N L I N E
I S B N : 8 3 - 2 4 6 - 0 6 1 5 - 7
T y t u ³ o r y g i n a ³ u : I n t e r m e d i a t e P e r l
Z A M Ó W D R U K O W A N Y K A T A L O G
Z A M Ó W D R U K O W A N Y K A T A L O G
F o r m a t : B 5 , s t r o n : 2 6 4
P o z n a j z a s a d y p r o g r a m o w a n i a o b i e k t o w e g o w P e r l u
T W Ó J K O S Z Y K
T W Ó J K O S Z Y K
" U t w ó r z i w y k o r z y s t a j m o d u ³ y
D O D A J D O K O S Z Y K A
D O D A J D O K O S Z Y K A " O p a n u j t a j n i k i s t o s o w a n i a p r z e s t r z e n i n a z w
" U m i e Sæ d y s t r y b u c j e s w o i c h p r o g r a m ó w w a r c h i w u m C P A N
P e r l j e s t u n i w e r s a l n y m i s k u t e c z n y m j ê z y k i e m p r o g r a m o w a n i a m a j ¹ c y m w i e l e
C E N N I K I I N F O R M A C J E
C E N N I K I I N F O R M A C J E
z a s t o s o w a ñ . M o ¿ n a w y k o r z y s t y w a æ g o d o z a r z ¹ d z a n i a s y s t e m a m i , t w o r z y æ z a j e g o
p o m o c ¹ d y n a m i c z n e w i t r y n y i n t e r n e t o w e i m a n i p u l o w a æ d a n y m i z g r o m a d z o n y m i
Z A M Ó W I N F O R M A C J E
Z A M Ó W I N F O R M A C J E w t a b e l a c h b a z d a n y c h . P r o g r a m i Sc i s t o s u j ¹ c y P e r l a t w i e r d z ¹ , ¿ e d z i ê k i n i e m u ³ a t w e
O N O W O SC I A C H
O N O W O SC I A C H
z a d a n i a s t a j ¹ s i ê j e s z c z e ³ a t w i e j s z e , a t r u d n e w y k o n a l n e . M i m o i ¿ P e r l b y ³ p r o j e k t o w a n y
j a k o j ê z y k n i e o b i e k t o w y , m o ¿ n a p o d c z a s p r o g r a m o w a n i a w n i m s t o s o w a æ r ó w n i e ¿
Z A M Ó W C E N N I K
Z A M Ó W C E N N I K
k o n c e p c j e o b i e k t o w e . A b y j e d n a k u ¿ y w a æ o b i e k t o w e g o j ê z y k a P e r l , n a j p i e r w w a r t o
z r o z u m i e æ d z i a ³ a n i e p a k i e t ó w , r e f e r e n c j i , t a b l i c a s o c j a c y j n y c h , t a b l i c , p r o c e d u r
i m o d u ³ ó w .
C Z Y T E L N I A
C Z Y T E L N I A
D z i ê k i k s i ¹ ¿ c e P e r l d l a Sr e d n i o z a a w a n s o w a n y c h p o z n a s z w s z y s t k i e k o m p o n e n t y
j ê z y k a s t a n o w i ¹ c e p o d s t a w ê j e g o o b i e k t o w y c h w ³ a Sc i w o Sc i . C z y t a j ¹ c j ¹ , n a u c z y s z s i ê
F R A G M E N T Y K S I ¥ ¯ E K O N L I N E
F R A G M E N T Y K S I ¥ ¯ E K O N L I N E
k o r z y s t a æ z m o d u ³ ó w i r e f e r e n c j i , m a n i p u l o w a æ z ³ o ¿ o n y m i s t r u k t u r a m i d a n y c h z a
p o m o c ¹ p a k i e t u D a t a : : D u m p e r o r a z p r a c o w a æ z s y s t e m e m p l i k ó w . P r z y s w o i s z s o b i e
z a s a d y p r o g r a m o w a n i a o b i e k t o w e g o o r a z d o w i e s z s i ê , j a k w P e r l u t w o r z y æ o b i e k t y
i u s u w a æ j e o r a z b u d o w a æ a p l i k a c j e o s k o m p l i k o w a n e j s t r u k t u r z e . P r z e c z y t a s z t a k ¿ e
o t e s t o w a n i u k o d u , o p r a c o w y w a n i u d y s t r y b u c j i i u m i e s z c z a n i u i c h w a r c h i w a c h C P A N .
" O b s ³ u g a l i s t z a p o m o c ¹ o p e r a t o r ó w
" I n s t a l o w a n i e m o d u ³ ó w z a r c h i w ó w C P A N
" K o r z y s t a n i e z m o d u ³ ó w
" T w o r z e n i e t a b l i c a n o n i m o w y c h i a s o c j a c y j n y c h
" W y Sw i e t l a n i e i p r z e t w a r z a n i e z ³ o ¿ o n y c h d a n y c h
" O b s ³ u g a p l i k ó w i k a t a l o g ó w z a p o m o c ¹ r e f e r e n c j i
W y d a w n i c t w o H e l i o n
" S o r t o w a n i e
u l . K o Sc i u s z k i 1 c
" O b i e k t y i e g z e m p l a r z e
4 4 - 1 0 0 G l i w i c e
" W y w o ³ y w a n i e m e t o d
t e l . 0 3 2 2 3 0 9 8 6 3
" U s u w a n i e o b i e k t ó w
e - m a i l : h e l i o n @ h e l i o n . p l
" T w o r z e n i e d y s t r y b u c j i
" P i s a n i e s k r y p t ó w t e s t o w y c h
" T w o r z e n i e w ³ a s n y c h m o d u ³ ó w T e s t : : *
P o z n a j o b i e k t o w e w ³ a Sc i w o Sc i j ê z y k a P e r l
S p i s t r e [c i
P r z e d m o w a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
W s t p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1
1 . W p r o w a d z e n i e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 7
C o p o w i n i e n e [ u m i e ? 1 8
P o c o s p r z y p i s y ? 1 8
A c o z w i c z e n i a m i ? 1 8
C o p o w i n i e n e [ z r o b i , j e [l i p r o w a d z i s z z a j c i a z j z y k a P e r l ? 1 9
2 . P o d s t a w y d l a [r e d n i o z a a w a n s o w a n y c h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1
O p e r a t o r y d o o b s Bu g i l i s t 2 1
P r z e c h w y t y w a n i e b Bd ó w p r z y u |y c i u f u n k c j i e v a l 2 4
D y n a m i c z n e k o d o w a n i e p r z y u |y c i u f u n k c j i e v a l 2 5
w i c z e n i a 2 6
3 . U |y w a n i e m o d u Bó w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 9
D y s t r y b u c j a s t a n d a r d o w a 2 9
U |y w a n i e m o d u Bó w 3 0
I n t e r f e j s y f u n k c y j n e 3 0
W y b ó r i m p o r t o w a n y c h e l e m e n t ó w 3 1
I n t e r f e j s y o b i e k t o w e 3 2
B a r d z i e j t y p o w y m o d u B o b i e k t o w y M a t h : : B i g I n t 3 2
A r c h i w u m C P A N 3 3
I n s t a l o w a n i e m o d u Bó w z a r c h i w u m C P A N 3 3
U s t a w i a n i e [c i e |k i w o d p o w i e d n i m m o m e n c i e 3 5
w i c z e n i a 3 7
3
4 . W p r o w a d z e n i e d o r e f e r e n c j i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 9
W y k o n y w a n i e t y c h s a m y c h o p e r a c j i n a w i e l u t a b l i c a c h 3 9
P o b i e r a n i e r e f e r e n c j i d o t a b l i c y 4 1
D e r e f e r e n c j a r e f e r e n c j i d o t a b l i c y 4 2
P o z b y w a n i e s i n a w i a s ó w 4 3
M o d y f i k o w a n i e t a b l i c 4 4
Z a g n i e |d |o n e s t r u k t u r y d a n y c h 4 4
U p r a s z c z a n i e r e f e r e n c j i d o z a g n i e |d |o n y c h e l e m e n t ó w p r z y u |y c i u s t r z a Be k 4 6
R e f e r e n c j e d o t a b l i c a s o c j a c y j n y c h 4 7
w i c z e n i a 4 9
5 . R e f e r e n c j e i z a s i g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1
W i e l e r e f e r e n c j i d o t y c h s a m y c h d a n y c h 5 1
C o s i s t a n i e , j e [l i t o b y Ba t a n a z w a ? 5 2
Z l i c z a n i e r e f e r e n c j i a z a g n i e |d |o n e s t r u k t u r y d a n y c h 5 3
C o z r o b i , k i e d y z l i c z a n i e r e f e r e n c j i n i e d z i a Ba ? 5 5
B e z p o [r e d n i e t w o r z e n i e t a b l i c a n o n i m o w y c h 5 6
T w o r z e n i e a n o n i m o w y c h t a b l i c a s o c j a c y j n y c h 5 9
A u t o m a t y c z n e t w o r z e n i e r e f e r e n c j i a n o n i m o w y c h 6 0
A u t o m a t y c z n e t w o r z e n i e a n o n i m o w y c h r e f e r e n c j i i t a b l i c e a s o c j a c y j n e 6 3
w i c z e n i a 6 4
6 . M a n i p u l o w a n i e z Bo |o n y m i s t r u k t u r a m i d a n y c h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7
U |y w a n i e d e b u g e r a d o w y [w i e t l a n i a z Bo |o n y c h d a n y c h 6 7
W y [w i e t l a n i e z Bo |o n y c h d a n y c h p r z y u |y c i u p a k i e t u D a t a : : D u m p e r 7 1
Y A M L 7 3
Z a p i s y w a n i e z Bo |o n y c h d a n y c h p r z y u |y c i u m o d u Bu S t o r a b l e 7 3
U |y w a n i e o p e r a t o r ó w m a p i g r e p 7 5
W a r s t w a p o [r e d n i a 7 5
W y b i e r a n i e i m o d y f i k o w a n i e z Bo |o n y c h d a n y c h 7 7
w i c z e n i a 7 8
7 . R e f e r e n c j e d o p r o c e d u r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 9
R e f e r e n c j e d o p r o c e d u r n a z w a n y c h 7 9
P r o c e d u r y a n o n i m o w e 8 3
W y w o Ba n i a z w r o t n e 8 5
D o m k n i c i a 8 5
Z w r a c a n i e p r o c e d u r y p r z e z p r o c e d u r 8 7
Z m i e n n e d o m k n i c i a j a k o d a n e w e j [c i o w e 9 0
Z m i e n n e d o m k n i c i a j a k o s t a t y c z n e z m i e n n e l o k a l n e 9 0
w i c z e n i e 9 1
4 | S p i s t r e [c i
8 . R e f e r e n c j e d o u c h w y t ó w p l i k ó w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3
D a w n a t e c h n i k a 9 3
L e p s z y s p o s ó b 9 4
J e s z c z e l e p s z y s p o s ó b 9 5
I O : : H a n d l e 9 5
R e f e r e n c j e d o u c h w y t ó w k a t a l o g ó w 1 0 0
w i c z e n i a 1 0 0
9 . P r z y d a t n e s z t u c z k i z r e f e r e n c j a m i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0 3
P r z e g l d t e c h n i k s o r t o w a n i a 1 0 3
S o r t o w a n i e p r z y u |y c i u i n d e k s ó w 1 0 5
W y d a j n e s o r t o w a n i e 1 0 6
T r a n s f o r m a c j e S c h w a r t z a 1 0 7
W i e l o p o z i o m o w e s o r t o w a n i e p r z y u |y c i u t r a n s f o r m a c j i S c h w a r t z a 1 0 8
R e k u r e n c y j n i e z d e f i n i o w a n e d a n e 1 0 8
T w o r z e n i e r e k u r e n c y j n i e z d e f i n i o w a n y c h d a n y c h 1 1 0
W y [w i e t l a n i e r e k u r e n c y j n i e z d e f i n i o w a n y c h d a n y c h 1 1 2
w i c z e n i a 1 1 3
1 0 . T w o r z e n i e w i k s z y c h p r o g r a m ó w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 5
L e k a r s t w o n a p o w t a r z a j c y s i k o d 1 1 5
W s t a w i a n i e k o d u p r z y u |y c i u f u n k c j i e v a l 1 1 6
U |y w a n i e i n s t r u k c j i d o 1 1 7
U |y w a n i e i n s t r u k c j i r e q u i r e 1 1 8
I n s t r u k c j a r e q u i r e i t a b l i c a @ I N C 1 2 0
P r o b l e m z k o l i z j a m i p r z e s t r z e n i n a z w 1 2 2
P a k i e t y j a k o s e p a r a t o r y p r z e s t r z e n i n a z w 1 2 3
Z a s i g d y r e k t y w y p a c k a g e 1 2 5
P a k i e t y i z m i e n n e l e k s y k a l n e 1 2 6
w i c z e n i a 1 2 6
1 1 . W p r o w a d z e n i e d o o b i e k t ó w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 9
G d y b y [m y m o g l i r o z m a w i a z e z w i e r z t a m i & 1 2 9
W y w o By w a n i e m e t o d p r z y u |y c i u s t r z a Bk i 1 3 0
D o d a t k o w y p a r a m e t r w y w o Ba n i a m e t o d y 1 3 2
W y w o By w a n i e d r u g i e j m e t o d y w c e l u u p r o s z c z e n i a k o d u 1 3 2
K i l k a u w a g o t a b l i c y @ I S A 1 3 3
P r z e s Ba n i a n i e m e t o d 1 3 4
R o z p o c z y n a n i e p r z e s z u k i w a n i a o d i n n e g o m i e j s c a 1 3 6
S U P E R s p o s ó b 1 3 7
C o z r o b i z e z m i e n n @ _ ? 1 3 7
G d z i e d o s z l i [m y ? 1 3 8
w i c z e n i a 1 3 8
S p i s t r e [c i | 5
1 2 . O b i e k t y z d a n y m i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 9
K o D t o k o D a l e c z y n a p e w n o ? 1 3 9
W y w o By w a n i e m e t o d e g z e m p l a r z a 1 4 0
D o s t p d o d a n y c h e g z e m p l a r z a 1 4 1
J a k u t w o r z y k o n i a ? 1 4 1
D z i e d z i c z e n i e k o n s t r u k t o r a 1 4 2
T w o r z e n i e m e t o d d z i a Ba j c y c h z a r ó w n o z k l a s a m i , j a k i z e g z e m p l a r z a m i 1 4 3
D o d a w a n i e p a r a m e t r ó w d o m e t o d 1 4 3
C i e k a w s z e e g z e m p l a r z e 1 4 4
K o D o i n n y m k o l o r z e 1 4 5
P o b i e r a n i e z a p i s a n y c h d a n y c h 1 4 6
N i e z a g l d a j d o p u d e Bk a 1 4 7
S z y b s z e m e t o d y p o b i e r a j c e i u s t a w i a j c e w a r t o [ 1 4 8
M e t o d y p o b i e r a j c e w a r t o [c i p e Bn i c e f u n k c j e m e t o d u s t a w i a j c y c h w a r t o [ 1 4 8
M e t o d y d z i a Ba j c e t y l k o d l a k l a s y l u b t y l k o d l a e g z e m p l a r z a 1 4 9
w i c z e n i e 1 5 0
1 3 . U s u w a n i e o b i e k t ó w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 5 1
P o r z d k o w a n i e p o s o b i e 1 5 1
U s u w a n i e o b i e k t ó w z a g n i e |d |o n y c h 1 5 3
K o n i e n i e d o z a j e c h a n i a 1 5 5
Z a p i s d l a o b i e k t ó w p o [r e d n i c h 1 5 6
D o d a t k o w e z m i e n n e e g z e m p l a r z a w k l a s a c h p o c h o d n y c h 1 5 8
U |y w a n i e z m i e n n y c h k l a s y 1 6 0
O s Ba b i a n i e a r g u m e n t ó w 1 6 1
w i c z e n i e 1 6 3
1 4 . W y b r a n e z a a w a n s o w a n e z a g a d n i e n i a z p r o g r a m o w a n i a o b i e k t o w e g o . . . . . . . . . . . . . . 1 6 5
M e t o d y U N I V E R S A L 1 6 5
T e s t o w a n i e p o p r a w n o [c i d z i a Ba n i a o b i e k t ó w 1 6 6
M e t o d a A U T O L O A D j a k o o s t a t n i a d e s k a r a t u n k u 1 6 7
U |y w a n i e m e t o d y A U T O L O A D d o o b s Bu g i a k c e s o r ó w 1 6 8
Aa t w i e j s z y s p o s ó b t w o r z e n i a m e t o d p o b i e r a j c y c h i u s t a w i a j c y c h w a r t o [c i 1 6 9
D z i e d z i c z e n i e w i e l o k r o t n e 1 7 1
w i c z e n i a 1 7 1
1 5 . E k s p o r t o w a n i e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 7 3
J a k d z i a Ba i n s t r u k c j a u s e ? 1 7 3
I m p o r t o w a n i e p r z y u |y c i u m o d u Bu E x p o r t e r 1 7 4
T a b l i c e @ E X P O R T i @ E X P O R T _ O K 1 7 5
T a b l i c a a s o c j a c y j n a % E X P O R T _ T A G S 1 7 6
6 | S p i s t r e [c i
E k s p o r t o w a n i e w m o d u Ba c h o b i e k t o w y c h 1 7 7
N i e s t a n d a r d o w e p r o c e d u r y d o o b s Bu g i i m p o r t o w a n i a 1 7 8
w i c z e n i a 1 8 0
1 6 . T w o r z e n i e d y s t r y b u c j i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 8 1
M o |n a t o z r o b i n a r ó |n e s p o s o b y 1 8 2
K o r z y s t a n i e z p r o g r a m u h 2 x s 1 8 3
D o k u m e n t a c j a z a g n i e |d |o n a 1 8 9
K o n t r o l o w a n i e d y s t r y b u c j i p r z y u |y c i u p l i k u M a k e f i l e . P L 1 9 2
A l t e r n a t y w n e l o k a l i z a c j e i n s t a l a c j i ( P R E F I X = . . . ) 1 9 3
T r y w i a l n a i n s t r u k c j a m a k e t e s t 1 9 4
T r y w i a l n a i n s t r u k c j a m a k e i n s t a l l 1 9 5
T r y w i a l n a i n s t r u k c j a m a k e d i s t 1 9 5
A l t e r n a t y w n a l o k a l i z a c j a b i b l i o t e k i 1 9 6
w i c z e n i e 1 9 7
1 7 . T e s t y p o d s t a w o w e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 9 9
W i c e j t e s t ó w o z n a c z a l e p s z y k o d 1 9 9
P r o s t y s k r y p t t e s t o w y 2 0 0
S z t u k a t e s t o w a n i a 2 0 1
Zr o d o w i s k o t e s t o w e 2 0 3
P i s a n i e t e s t ó w p r z y u |y c i u m o d u Bu T e s t : : M o r e 2 0 4
T e s t o w a n i e w Ba [c i w o [c i o b i e k t o w y c h 2 0 6
T e s t o w a n i e l i s t y T O D O 2 0 8
P o m i j a n i e t e s t ó w 2 0 9
B a r d z i e j z Bo |o n e t e s t y ( z b i o r y s k r y p t ó w t e s t o w y c h ) 2 0 9
w i c z e n i e 2 1 0
1 8 . T e s t y z a a w a n s o w a n e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1 1
T e s t o w a n i e d Bu g i c h Ba Dc u c h ó w z n a k ó w 2 1 1
T e s t o w a n i e p l i k ó w 2 1 2
T e s t o w a n i e u r z d z e D S T D O U T i S T D E R R 2 1 3
U |y w a n i e o b i e k t ó w z a s t p c z y c h 2 1 5
T e s t o w a n i e d o k u m e n t a c j i P O D 2 1 7
T e s t o w a n i e p o k r y c i a 2 1 8
P i s a n i e w Ba s n y c h m o d u Bó w T e s t : : * 2 1 8
w i c z e n i a 2 2 1
1 9 . W k Ba d w C P A N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3
A r c h i w u m C P A N 2 2 3
P r z y g o t o w a n i a 2 2 3
P r z y g o t o w y w a n i e d y s t r y b u c j i 2 2 4
S p i s t r e [c i | 7
U m i e s z c z a n i e d y s t r y b u c j i w a r c h i w u m 2 2 5
P r z e d s t a w i a n i e m o d u Bu 2 2 6
T e s t o w a n i e n a w i e l u p l a t f o r m a c h 2 2 6
Z a s t a n ó w s i n a d n a p i s a n i e m a r t y k u Bu l u b p r z e p r o w a d z e n i e m w y k Ba d u 2 2 6
w i c z e n i e 2 2 7
A R o z w i z a n i a w i c z e D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 9
S k o r o w i d z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 5
8 | S p i s t r e [c i
R O Z D Z I A A 3 .
U |y w a n i e m o d u Bó w
M o d u By t o c e g i e Bk i , z k t ó r y c h m o |e m y b u d o w a p r o g r a m y . U d o s t p n i a j o n e n a d a j c e s i d o
p o w t ó r n e g o w y k o r z y s t a n i a p r o c e d u r y , z m i e n n e , a n a w e t o b i e k t o w e k l a s y . Z a n i m n a u c z y s z s i
t w o r z y w Ba s n e m o d u By , p o k a |e m y C i n i e k t ó r e g o t o w e m o d u By , k t ó r e m o g C i z a i n t e r e s o w a .
P o z n a s z t a k |e p o d s t a w y s t o s o w a n i a m o d u Bó w n a p i s a n y c h p r z e z i n n y c h p r o g r a m i s t ó w .
D y s t r y b u c j a s t a n d a r d o w a
P e r l z a w i e r a w i e l e p o p u l a r n y c h m o d u Bó w . W r z e c z y w i s t o [c i w i k s z o [ z p o n a d 5 0 m e g a b a j t ó w
n a j n o w s z e j d y s t r y b u c j i t o w Ba [n i e m o d u By . W p a zd z i e r n i k u 1 9 9 6 r o k u P e r l 5 . 0 0 3 _ 0 7 z a w i e r a B
9 8 m o d u Bó w . O b e c n i e , n a p o c z t k u 2 0 0 6 r o k u , P e r l 5 . 8 . 8 m a i c h 3 5 9 1 . J e s t t o j e d n a z z a l e t j z y k a
P e r l u d o s t p n i a o n w i e l e e l e m e n t ó w p o z w a l a j c y c h m a By m n a k Ba d e m p r a c y t w o r z y u |y -
t e c z n e i z Bo |o n e p r o g r a m y .
W n i n i e j s z e j k s i |c e p o s t a r a m y s i p o k a z a , k t ó r e m o d u By s d o s t p n e w r a z z j z y k i e m P e r l
( i , w w i k s z o [c i p r z y p a d k ó w , o d k t ó r e j w e r s j i j z y k a d o s t p n y j e s t d a n y m o d u B) . B d z i e m y
n a z y w a t e m o d u By m o d u Ba m i p o d s t a w o w y m i l u b n a p i s z e m y , |e z n a j d u j s i o n e w d y s -
t r y b u c j i s t a n d a r d o w e j . J e [l i m a s z j z y k P e r l , p o w i n i e n e [ m i e r ó w n i e | t e m o d u By . P o n i e w a |
p r z y p i s a n i u k s i |k i u |y w a l i [m y w e r s j i P e r l 5 . 8 . 7 , z a k Ba d a m y , |e j e s t t o b i e |c a w e r s j a j z y k a .
K i e d y t w o r z y s z w Ba s n y k o d , m o |e s z z d e c y d o w a s i n a u |y w a n i e j e d y n i e m o d u Bó w p o d -
s t a w o w y c h , d z i k i c z e m u b d z i e s z m i a B p e w n o [, |e w s z y s c y u |y t k o w n i c y P e r l a b d m i e l i
t e m o d u By , o i l e t y l k o u |y w a j p r z y n a j m n i e j t e j s a m e j w e r s j i c o T y 2 . N i e c h c e m y w d a w a s i
w t y m m i e j s c u w s p o r y n a t e n t e m a t , g Bó w n i e d l a t e g o , |e z b y t n i o c e n i m y a r c h i w u m C P A N ,
a b y s i b e z n i e g o o b e j [.
1
K i e d y z a p o z n a s z s i z m a t e r i a Be m t e j k s i |k i , p o w i n i e n e [ p o t r a f i u |y m o d u Bu M o d u l e : : C o r e L i s t d o s a m o -
d z i e l n e g o s p r a w d z e n i a l i c z b y m o d u Bó w . T o w Ba [n i e w t a k i s p o s ó b o k r e [l i l i [m y p o w y |s z e l i c z b y .
2
C h o n i e b d z i e m y z g Bb i a t u t e g o z a g a d n i e n i a , m o d u B M o d u l e : : C o r e L i s t z a w i e r a l i s t o p i s u j c , k t ó r e
m o d u By d o s t p n e s w d a n e j w e r s j i j z y k a P e r l , a t a k |e i n n e d a n e h i s t o r y c z n e .
2 9
U |y w a n i e m o d u Bó w
P r a w i e k a |d y m o d u B j z y k a P e r l z a w i e r a d o k u m e n t a c j , a c h o m o |e m y n i e w i e d z i e , j a k
d z i a Ba j m e c h a n i z m y d a n e g o m o d u Bu , n i e m u s i m y s i o t o m a r t w i , j e [l i w i e m y , j a k u |y w a
j e g o i n t e r f e j s u . W k o Dc u d o t e g o w Ba [n i e s Bu |y i n t e r f e j s p o z w a l a u k r y w s z y s t k i e s z c z e g ó By .
N a n a s z e j l o k a l n e j m a s z y n i e m o |e m y w c z y t a d o k u m e n t a c j m o d u Bu , u |y w a j c p o l e c e n i a
p e r l d o c . D o p o l e c e n i a n a l e |y p r z e k a z a n a z w i n t e r e s u j c e g o n a s m o d u Bu , a p r o g r a m w y -
[w i e t l i j e g o d o k u m e n t a c j .
$ p e r l d o c F i l e : : B a s e n a m e
N A M E
f i l e p a r s e - s p l i t a p a t h n a m e i n t o p i e c e s
b a s e n a m e - e x t r a c t j u s t t h e f i l e n a m e f r o m a p a t h
d i r n a m e - e x t r a c t j u s t t h e d i r e c t o r y f r o m a p a t h
S Y N O P S I S
u s e F i l e : : B a s e n a m e ;
( $ n a m e , $ p a t h , $ s u f f i x ) = f i l e p a r s e ( $ f u l l n a m e , @ s u f f i x l i s t )
f i l e p a r s e _ s e t _ f s t y p e ( $ o s _ s t r i n g ) ;
$ b a s e n a m e = b a s e n a m e ( $ f u l l n a m e , @ s u f f i x l i s t ) ;
$ d i r n a m e = d i r n a m e ( $ f u l l n a m e ) ;
D o Bc z y l i [m y p o c z t k o w y f r a g m e n t d o k u m e n t a c j i , a b y p o k a z a n a j w a |n i e j s z s e k c j ( p r z y -
n a j m n i e j n a p o c z t k u n a u k i ) . D o k u m e n t a c j a m o d u Bó w z w y k l e j e s t z g o d n a z e s t a r y m f o r m a t e m
s t r o n p o d r c z n i k a m a n s y s t e m u U n i x i r o z p o c z y n a s i o d s e k c j i N A M E o r a z S Y N O P S I S ( z a w i e -
r a j c e j s t r e s z c z e n i e ) .
S t r e s z c z e n i e p r z e d s t a w i a p r z y k Ba d y z a s t o s o w a n i a m o d u Bu , a j e [l i p o t r a f i s z o b y s i b e z p e Bn e g o
z r o z u m i e n i a , m o |e s z u |y w a d a n e g o m o d u Bu . O z n a c z a t o , |e m o |e s z n i e z n a n i e k t ó r y c h
t e c h n i k i s k Ba d n i j z y k a P e r l p r z e d s t a w i o n y c h w s t r e s z c z e n i u , a l e z w y k l e m o |e s z p o p r o s t u
p o s Bu |y s i p r z y k Ba d e m , a k o d p o w i n i e n d z i a Ba p o p r a w n i e .
P o n i e w a | P e r l t o m i e s z a n k a p r o c e d u r a l n e g o , f u n k c y j n e g o , o b i e k t o w e g o i i n n y c h r o d z a j ó w
j z y k ó w p r o g r a m o w a n i a , m o d u By j z y k a P e r l u d o s t p n i a j i n t e r f e j s y r ó |n e g o t y p u . B d z i e m y
u |y w a r o z m a i t y c h m o d u Bó w w n i e c o o d m i e n n y s p o s ó b , a l e d o p ó t y , d o p ó k i m o |e s z s p r a w d z i
d z i a Ba n i e m o d u Bu w d o k u m e n t a c j i , n i e p o w i n i e n e [ m i e p r o b l e m ó w .
I n t e r f e j s y f u n k c y j n e
D o w c z y t y w a n i a m o d u Bó w p o s Bu |y m y s i w b u d o w a n i n s t r u k c j u s e j z y k a P e r l . N a r a z i e
p o m i n i e m y s z c z e g ó Bo w y o p i s t e j t e c h n i k i . W i c e j d o w i e s z s i o n i e j z r o z d z i a Bó w 1 0 . i 1 5 . N a r a z i e
c h c e m y t y l k o u |y m o d u Bu . Z a c z n i j m y o d F i l e : : B a s e n a m e , u |y t e g o j u | m o d u Bu z d y s t r y b u c j i
s t a n d a r d o w e j . A b y w c z y t a g o d o s k r y p t u , n a l e |y w y w o Ba p o n i |s z i n s t r u k c j :
u s e F i l e : : B a s e n a m e ;
K i e d y t o z r o b i m y , m o d u B F i l e : : B a s e n a m e u d o s t p n i w s k r y p c i e 3 t r z y p r o c e d u r y : f i l e p a r s e ,
b a s e n a m e i d i r n a m e 4 . O d t e g o m i e j s c a m o |e m y u |y w a p o n i |s z y c h i n s t r u k c j i :
3
T a k n a p r a w d p r o c e d u r y z o s t a n z a i m p o r t o w a n e d o b i e |c e g o p a k i e t u , a l e n i e o m a w i a l i [m y j e s z c z e t e g o
z a g a d n i e n i a .
4
A t a k |e p r o c e d u r n a r z d z i o w f i l e p a r s e _ s e t _ f s t y p e .
3 0 | R o z d z i a B 3 . U |y w a n i e m o d u Bó w
m y $ b a s e n a m e = b a s e n a m e ( $ s o m e _ f u l l _ p a t h ) ;
m y $ d i r n a m e = d i r n a m e ( $ s o m e _ f u l l _ p a t h ) ;
w t a k i s a m s p o s ó b , j a k b y [m y s a m i n a p i s a l i p r o c e d u r y b a s e n a m e i d i r n a m e l u b ( p r a w i e ) j a k b y
b y By o n e w b u d o w a n y m i f u n k c j a m i j z y k a P e r l . T e p r o c e d u r y p o b i e r a j z e [c i e |k i n a z w p l i k u
o r a z n a z w k a t a l o g u . N a p r z y k Ba d , j e [l i z m i e n n a $ s o m e _ f u l l _ p a t h m a w a r t o [ D : \ P r o j e c t s \
I s l a n d R e s c u e \ p l a n 7 . r t f ( p r a w d o p o d o b n i e p r o g r a m z o s t a B u r u c h o m i o n y w s y s t e m i e W i n -
d o w s ) , w a r t o [c i z m i e n n e j $ b a s e n a m e b d z i e p l a n 7 . r t f , a w a r t o [c i z m i e n n e j $ d i r n a m e
D : \ P r o j e c t s \ I s l a n d R e s c u e .
M o d u B F i l e : : B a s e n a m e p o t r a f i o k r e [l i , w j a k i m s y s t e m i e d z i a Ba , d l a t e g o j e g o f u n k c j e p o p r a w -
n i e p r z e t w a r z a j Ba Dc u c h y z n a k ó w w e d Bu g r ó |n y c h o g r a n i c z n i k ó w , j a k i e m o g n a p o t k a .
Z a Bó |m y j e d n a k , |e w p r o g r a m i e z n a j d u j e s i j u | p r o c e d u r a d i r n a m e . Z o s t a n i e o n a p r z e s Bo n i t a
d e f i n i c j z m o d u Bu F i l e : : B a s e n a m e ! J e [l i w Bc z y m y o s t r z e |e n i a , z o b a c z y m y i n f o r m u j c y o t y m
k o m u n i k a t . W p r z e c i w n y m r a z i e P e r l i g n o r u j e t a k s y t u a c j .
W y b ó r i m p o r t o w a n y c h e l e m e n t ó w
N a s z c z [c i e m o |e m y o g r a n i c z y o p e r a c j e w y k o n y w a n e p r z e z i n s t r u k c j u s e , p o d a j c n a z w
m o d u Bu o r a z l i s t n a z w p r o c e d u r . T a l i s t a t o l i s t a i m p o r t u :
u s e F i l e : : B a s e n a m e ( ' f i l e p a r s e ' , ' b a s e n a m e ' ) ;
T e r a z m o d u B w c z y t a j e d y n i e d w i e p o w y |s z e p r o c e d u r y i p o z o s t a w i n a s z p r o c e d u r d i r n a m e
b e z z m i a n . O c z y w i [c i e t a k i z a p i s j e s t d o [ d z i w a c z n y , d l a t e g o c z [c i e j u |y w a s i o p e r a t o r a
c y t o w a n i a :
u s e F i l e : : B a s e n a m e q w ( f i l e p a r s e b a s e n a m e ) ;
N a w e t j e [l i n a l i [c i e z n a j d u j e s i t y l k o j e d e n e l e m e n t , z w y k l e p o d a j e s i g o n a l i [c i e q w ( ) , c o
z w i k s z a s p ó j n o [ i u Ba t w i a p i e l g n a c j . C z s t o s i z d a r z a , |e s t w i e r d z a m y : p o t r z e b u j e m y
j e s z c z e j e d n e j p r o c e d u r y z t e g o m o d u Bu i w r a c a m y d o t e j l i s t y . Aa t w i e j j e s t d o d a n o w p r o -
c e d u r , j e [l i p i e r w s z a z n a j d u j e s i j u | n a l i [c i e q w ( ) .
O c h r o n i l i [m y l o k a l n p r o c e d u r d i r n a m e , a l e c o z r o b i , j e [l i p o t r z e b u j e m y t a k |e f u n k c j o n a l n o [c i
t e j p r o c e d u r y z m o d u Bu F i l e : : B a s e n a m e ? T o p r o s t e . W y s t a r c z y u |y j e j , p o p r z e d z a j c j p e Bn
n a z w p a k i e t u .
m y $ d i r n a m e = F i l e : : B a s e n a m e : : d i r n a m e ( $ s o m e _ p a t h ) ;
L i s t a n a z w z n a j d u j c a s i p o i n s t r u k c j i u s e n i e z m i e n i a t e g o , j a k i e p r o c e d u r y s z d e f i n i o w a n e
w p a k i e c i e m o d u Bu ( w t y m p r z y p a d k u j e s t t o m o d u B F i l e : : B a s e n a m e ) . Z a w s z e m o |e m y u |y
p e Bn e j n a z w y , n i e z a l e |n i e o d z a w a r t o [c i l i s t y i m p o r t u , n a p r z y k Ba d 5 :
m y $ b a s e n a m e = F i l e : : B a s e n a m e : : b a s e n a m e ( $ s o m e _ p a t h ) ;
E k s t r e m a l n y m ( a l e n i e z w y k l e u |y t e c z n y m ) r o z w i z a n i e m j e s t u |y c i u p u s t e j l i s t y i m p o r t u , t a k
j a k w p o n i |s z y m k o d z i e :
u s e F i l e : : B a s e n a m e ( ) # n i e i m p o r t u j e n i c z e g o
m y $ b a s e = F i l e : : B a s e n a m e : : b a s e n a m e ( $ s o m e _ p a t h ) ;
5
N i e m u s i s z p o p r z e d z a w y w o Ba D t y c h p r o c e d u r z n a k i e m a m p e r s a n d u , p o n i e w a | o d p r z e t w o r z e n i a i n s t r u k c j i
u s e k o m p i l a t o r j u | j e z n a .
W y b ó r i m p o r t o w a n y c h e l e m e n t ó w | 3 1
P u s t a l i s t a r ó |n i s i o d b r a k u l i s t y . P u s t a l i s t a i n f o r m u j e : n i e n a l e |y i m p o r t o w a |a d n y c h
e l e m e n t ó w , p o d c z a s g d y b r a k l i s t y o z n a c z a : n a l e |y z a i m p o r t o w a d o m y [l n e e l e m e n t y .
J e [l i a u t o r m o d u Bu n a p i s a B g o p o p r a w n i e , d o m y [l n e e l e m e n t y t o t e , k t ó r y c h p o t r z e b u j e m y .
I n t e r f e j s y o b i e k t o w e
P o r ó w n a j m y i m p o r t o w a n i e p r o c e d u r z m o d u Bu F i l e : : B a s e n a m e z d z i a Ba n i e m i n n e g o m o d u Bu
p o d s t a w o w e g o , F i l e : : S p e c . M o d u B F i l e : : S p e c s Bu |y d o o b s Bu g i o p e r a c j i z w y k l e w y k o n y -
w a n y c h n a i d e n t y f i k a t o r z e p l i k u . I d e n t y f i k a t o r p l i k u t o z w y k l e n a z w a p l i k u l u b k a t a l o g u , a l e
m o |e t o b y t a k |e n a z w a n i e i s t n i e j c e g o p l i k u w t a k i m p r z y p a d k u n i e j e s t t o t a k n a p r a w d
n a z w a p l i k u , p r a w d a ?
W p r z e c i w i e Ds t w i e d o m o d u Bu F i l e : : B a s e n a m e m o d u B F i l e : : S p e c m a i n t e r f e j s o b i e k t o w y .
W c z y t u j e m y t e n m o d u B p r z y u |y c i u i n s t r u k c j i u s e , t a k s a m o j a k w c z e [n i e j .
u s e F i l e : : S p e c ;
J e d n a k , p o n i e w a | i n t e r f e j s t e g o m o d u Bu j e s t o b i e k t o w y 6 , p o w y |s z a i n s t r u k c j a n i e i m p o r t u j e
|a d n y c h p r o c e d u r . W z a m i a n i n t e r f e j s p o z w a l a n a d o s t p d o f u n k c j o n a l n o [c i m o d u Bu p o p r z e z
m e t o d y k l a s y . M e t o d a c a t f i l e z Bc z a l i s t Ba Dc u c h ó w z n a k ó w , u |y w a j c o d p o w i e d n i e g o
s e p a r a t o r a k a t a l o g ó w :
m y $ f i l e s p e c = F i l e : : S p e c - > c a t f i l e ( $ h o m e d i r { g i l l i g a n } ,
' w e b _ d o c s ' , ' p h o t o s ' , ' U S S _ M i n n o w . g i f ' ) ;
P o w y |s z y k o d w y w o Bu j e m e t o d s t a t y c z n e j c a t f i l e k l a s y F i l e : : S p e c . T a m e t o d a t w o r z y
[c i e |k o d p o w i e d n i d l a d a n e g o s y s t e m u o p e r a c y j n e g o i z w r a c a j e d e n Ba Dc u c h z n a k ó w 7 .
Z e w z g l d u n a s k Ba d n i p o w y |s z y z a p i s j e s t p o d o b n y d o p o n a d d w u d z i e s t u i n n y c h o p e r a c j i
u d o s t p n i a n y c h p r z e z m o d u B F i l e : : S p e c .
M o d u B F i l e : : S p e c u d o s t p n i a k i l k a i n n y c h m e t o d p o z w a l a j c y c h n a o b s Bu g [c i e |e k p l i k ó w
w s p o s ó b p r z e n o [n y . W i c e j o z a g a d n i e n i a c h z w i z a n y c h z p r z e n o [n o [c i k o d u d o w i e s z s i
z d o k u m e n t a c j i p e r l p o r t .
B a r d z i e j t y p o w y m o d u B o b i e k t o w y M a t h : : B i g I n t
A b y [ s i n i e r o z c z a r o w a B n i e o b i e k t o w y m w y g l d e m m o d u Bu F i l e : : S p e c , k t ó r y n i e m a o b i e k -
t ó w , p r z y j r z y j m y s i n a s t p n e m u m o d u Bo w i p o d s t a w o w e m u , M a t h : : B i g I n t , k t ó r y s Bu |y d o
o b s Bu g i l i c z b c a Bk o w i t y c h p r z e k r a c z a j c y c h w b u d o w a n e m o |l i w o [c i j z y k a P e r l 8 .
u s e M a t h : : B i g I n t ;
m y $ v a l u e = M a t h : : B i g I n t - > n e w ( 2 ) ; # r o z p o c z y n a m y o d 2
$ v a l u e - > b p o w ( 1 0 0 0 ) ; # p r z y j m u j e w a r t o [ 2 * * 1 0 0 0
p r i n t $ v a l u e - > b s t r ( ) , " \ n " ; # w y [w i e t l a w y n i k
6
J e [l i p o t r z e b n y j e s t i n t e r f e j s f u n k c y j n y , m o |n a u |y i n s t r u k c j i F i l e : : S p e c : : F u n c t i o n s .
7
W s y s t e m i e U n i x t y m Ba Dc u c h e m z n a k ó w m o |e b y n a p r z y k Ba d / h o m e / g i l l i g a n / w e b _ d o c s / U S S _ M i n n o w . g i f .
W s y s t e m i e W i n d o w s s e p a r a t o r a m i k a t a l o g ó w s z w y k l e l e w e u k o [n i k i . T e n m o d u B p o z w a l a w Ba t w y s p o s ó b
n a p i s a p r z e n o [n y k o d ( p r z y n a j m n i e j z e w z g l d u n a s p e c y f i k a c j e p l i k ó w ) .
8
N a z a p l e c z u j z y k P e r l j e s t o g r a n i c z o n y a r c h i t e k t u r , w k t ó r e j d z i a Ba . J e s t t o j e d n o z n i e w i e l u m i e j s c , g d z i e
t r z e b a z w r a c a u w a g n a s p r z t .
3 2 | R o z d z i a B 3 . U |y w a n i e m o d u Bó w
T a k |e t e n m o d u B n i e w y m a g a i m p o r t o w a n i a |a d n y c h j e d n o s t e k . C a By j e g o i n t e r f e j s s k Ba d a s i
z m e t o d s t a t y c z n y c h , t a k i c h j a k m e t o d a n e w , k t ó r n a l e |y w y w o By w a w r a z z n a z w k l a s y ,
a b y u t w o r z y j e j e g z e m p l a r z . N a s t p n i e m o |n a w y w o By w a p r z y u |y c i u t y c h e g z e m p l a r z y
m e t o d y e g z e m p l a r z a , t a k i e j a k b p o w c z y b s t r .
A r c h i w u m C P A N
A r c h i w u m C P A N ( a n g . C o m p r e h e n s i v e P e r l A r c h i v e N e t w o r k ) t o w y n i k w s p ó l n e j p r a c y w i e l u
w o l o n t a r i u s z y . W i e l u z n i c h p o c z t k o w o p r o w a d z i Bo w Ba s n e m a Be ( l u b d u |e ) w i t r y n y F T P
o j z y k u P e r l , j e s z c z e z a n i m n a r o d z i B s i i n t e r n e t . P o d k o n i e c 1 9 9 3 r o k u z j e d n o c z y l i o n i s w e
w y s i Bk i d z i k i l i [c i e d y s k u s y j n e j p e r l - p a c k r a t s i z d e c y d o w a l i , |e p r z e s t r z e D d y s k o w a s t a Ba s i
n a t y l e t a n i a , |e m o |n a p o w i e l i t e s a m e i n f o r m a c j e n a w s z y s t k i c h w i t r y n a c h , z a m i a s t d |y
d o s p e c j a l i z a c j i k a |d e j z n i c h . T e n p o m y s B d o j r z e w a B p r z e z r o k , a | w k o Dc u J a r k k o H i e t a n i e m i
u t w o r z y B f i Ds k w i t r y n F T P j a k o zr ó d Bo , z k t ó r e g o w s z y s t k i e s e r w e r y l u s t r z a n e m o g p o b i e r a
c o d z i e n n e l u b n a w e t c o g o d z i n n e a k t u a l i z a c j e .
C z [ p r a c y n a d t y m p r o j e k t e m w y m a g a Ba p o n o w n e g o u p o r z d k o w a n i a i z o r g a n i z o w a n i a
o d r b n y c h a r c h i w ó w . Z o s t a By u t w o r z o n e m i e j s c a d l a b i n a r i ó w j z y k a P e r l p r z e z n a c z o n y c h d l a
a r c h i t e k t u r n i e b a z u j c y c h n a s y s t e m i e U n i x , d l a s k r y p t ó w o r a z d l a s a m e g o k o d u zr ó d Bo w e g o
w j z y k u P e r l . J e d n a k n a j w i k s z y m i n a j c i e k a w s z y m e l e m e n t e m a r c h i w u m C P A N s m o d u By .
M o d u By w a r c h i w u m C P A N s z o r g a n i z o w a n e w d r z e w o d o w i z a D s y m b o l i c z n y c h w e d Bu g
h i e r a r c h i c z n y c h , f u n k c j o n a l n y c h k a t e g o r i i . O d n o [n i k i w s k a z u j n a k a t a l o g a u t o r a , w k t ó r y m
t o k a t a l o g u z n a j d u j s i p o t r z e b n e p l i k i . O b s z a r z a w i e r a j c y m o d u By z a w i e r a t a k |e i n d e k s y
m a j c e z w y k l e f o r m a t Ba t w y d o p r z e t w o r z e n i a p r z y u |y c i u j z y k a P e r l , n a p r z y k Ba d d a n e
w y j [c i o w e z m o d u Bu D a t a : : D u m p e r w p r z y p a d k u s z c z e g ó Bo w e g o i n d e k s u m o d u Bó w . O c z y w i [c i e
w s z y s t k i e t e i n d e k s y s a u t o m a t y c z n i e g e n e r o w a n e n a p o d s t a w i e b a z d a n y c h g Bó w n e g o s e r w e r a ,
d o c z e g o s Bu | i n n e p r o g r a m y w j z y k u P e r l . C z s t o o d z w i e r c i e d l a n i e a r c h i w u m C P A N z j e d -
n e g o s e r w e r a n a i n n y o d b y w a s i p r z y u |y c i u w i e k o w e g o j u | p r o g r a m u m i r r o r . p l , n a p i s a -
n e g o w j z y k u P e r l .
O d s k r o m n y c h p o c z t k ó w w p o s t a c i k i l k u s e r w e r ó w l u s t r z a n y c h a r c h i w u m C P A N r o z r o -
s Bo s i d o p o n a d 2 0 0 p u b l i c z n y c h a r c h i w ó w d o s t p n y c h w e w s z y s t k i c h z a k t k a c h i n t e r n e t u .
W s z y s t k i e s e r w e r y s a r c h i w i z o w a n e i a k t u a l i z o w a n e p r z y n a j m n i e j r a z d z i e n i e , a n i e k t ó r e
n a w e t c o g o d z i n . N i e z a l e |n i e o d t e g o , w k t ó r y m m i e j s c u [w i a t a j e s t e [, z n a j d z i e s z w p o b l i |u
s e r w e r C P A N , z k t ó r e g o m o |e s z p o b r a n a j n o w s z e z a s o b y .
N i e z w y k l e u |y t e c z n a s t r o n a C P A N S e a r c h ( h t t p : / / s e a r c h . c p a n . o r g ) s t a n i e s i p r a w d o p o d o b n i e
T w o i m u l u b i o n y m i n t e r f e j s e m . D z i k i t e j w i t r y n i e m o |e s z w y s z u k i w a m o d u By , s p r a w d z a
i c h d o k u m e n t a c j , p r z e g l d a d y s t r y b u c j e i k o n t r o l o w a r a p o r t y t e s t e r ó w C P A N i w y k o n y w a
w i e l e i n n y c h o p e r a c j i .
I n s t a l o w a n i e m o d u Bó w z a r c h i w u m C P A N
Z a i n s t a l o w a n i e p r o s t e g o m o d u Bu z C P A N n i e p o w i n n o s p r a w i a t r u d n o [c i w y s t a r c z y p o b r a
a r c h i w u m z d y s t r y b u c j m o d u Bu , r o z p a k o w a j e i u m i e [c i m o d u B w o d p o w i e d n i m k a t a l o g u .
W p o n i |s z y m k o d z i e u |y w a m y i n s t r u k c j i w g e t , a l e m o |e s z u |y w a t a k |e i n n y c h n a r z d z i .
I n s t a l o w a n i e m o d u Bó w z a r c h i w u m C P A N | 3 3
$ w g e t h t t p : / / w w w . c p a n . o r g / . . . / H T T P - C o o k i e s - S a f a r i - 1 . 1 0 . t a r . g z
$ t a r - x z f H T T P - C o o k i e s - S a f a r i - 1 . 1 0 . t a r . g z
$ c d H T T P - C o o k i e s - S a f a r i - 1 . 1 0 s
N a s t p n i e m o |e s z w y b r a j e d n o z d w ó c h r o z w i z a D ( o p i s u j e m y j e s z c z e g ó Bo w o w r o z d z i a l e 1 6 . ) .
J e [l i z n a j d z i e s z p l i k o n a z w i e M a k e f i l e . P L , m o |e s z u r u c h o m i p o n i |s z s e k w e n c j p o l e c e D
w c e l u s k o m p i l o w a n i a , p r z e t e s t o w a n i a i z a i n s t a l o w a n i a k o d u zr ó d Bo w e g o :
$ p e r l M a k e f i l e . P L
$ m a k e
$ m a k e t e s t
$ m a k e i n s t a l l
J e [l i n i e m a s z u p r a w n i e D d o i n s t a l o w a n i a m o d u Bó w w k a t a l o g a c h g l o b a l n y c h 9 , m o |e s z n a k a z a
z a i n s t a l o w a n i e i c h w i n n e j [c i e |c e , u |y w a j c a r g u m e n t u P R E F I X :
$ p e r l M a k e f i l e . P L P R E F I X = / U s e r s / h o m e / G i n g e r
A b y P e r l s z u k a B m o d u Bó w w t y m k a t a l o g u , m o |e s z u s t a w i z m i e n n [r o d o w i s k o w P E R L 5 L I B .
P e r l d o d a w t e d y o k r e [l o n e k a t a l o g i d o l i s t y k a t a l o g ó w , w k t ó r y c h w y s z u k u j e m o d u Bó w .
$ e x p o r t P E R L 5 L I B = / U s e r s / h o m e / G i n g e r
M o |e s z t a k |e u |y d y r e k t y w y l i b , a b y d o d a k a t a l o g d o [c i e |k i w y s z u k i w a n i a m o d u Bó w ,
j e d n a k t o r o z w i z a n i e n i e j e s t r ó w n i e w y g o d n e , p o n i e w a | w y m a g a w p r o w a d z a n i a z m i a n
w k o d z i e . P o n a d t o n a i n n y c h k o m p u t e r a c h , n a k t ó r y c h m o |e s z c h c i e u r u c h o m i d a n y k o d ,
p o t r z e b n y m o d u B m o |e z n a j d o w a s i w i n n y m k a t a l o g u .
# ! / u s r / b i n / p e r l
u s e l i b q w ( / U s e r s / h o m e / G i n g e r ) ;
C o f n i j m y s i n i e c o . J e [l i z n a j d z i e s z p l i k B u i l d . P L z a m i a s t p l i k u M a k e f i l e . P L , p o w i n i e n e [
w y k o n a t e s a m e o p e r a c j e . W p r z y p a d k u d y s t r y b u c j i u d o s t p n i a n y c h z t y m p i e r w s z y m p l i k i e m
n a l e |y u |y w a m o d u Bu M o d u l e : : B u i l d d o k o m p i l o w a n i a i i n s t a l o w a n i a k o d u . P o n i e w a | m o d u B
M o d u l e : : B u i l d n i e j e s t m o d u Be m p o d s t a w o w y m j z y k a P e r l 1 0 , m u s i s z g o z a i n s t a l o w a , z a n i m
b d z i e s z m ó g B z a i n s t a l o w a p o t r z e b n d y s t r y b u c j .
$ p e r l B u i l d . P L
$ p e r l B u i l d
$ p e r l B u i l d t e s t
$ p e r l B u i l d i n s t a l l
A b y z a i n s t a l o w a m o d u B w p r y w a t n y m k a t a l o g u p r z y u |y c i u m o d u Bu M o d u l e : : B u i l d , n a l e |y
d o d a p a r a m e t r - - i n s t a l l _ b a s e . I n f o r m o w a n i e i n t e r p r e t e r a P e r l o t y m , g d z i e z n a j d u j s i
m o d u By , o d b y w a s i w t a k i s a m s p o s ó b j a k p o p r z e d n i o .
$ p e r l B u i l d . P L - - i n s t a l l _ b a s e / U s e r s / h o m e / G i n g e r
C z a s e m w d y s t r y b u c j i z n a j d u j s i o b a p l i k i M a k e f i l e . P L i B u i l d . P L . C o n a l e |y w t e d y z r o b i ?
M o |n a u |y d o w o l n e g o z n i c h . M o |e s z w y b r a t e n , k t ó r y l e p i e j z n a s z .
9
T e k a t a l o g i u s t a w i a a d m i n i s t r a t o r w c z a s i e i n s t a l o w a n i a j z y k a P e r l . M o |n a j e w y [w i e t l i , u |y w a j c i n s t r u k c j i
p e r l - V .
1 0
P r z y n a j m n i e j n a r a z i e . P l a n o w a n e j e s t d o Bc z e n i e g o d o m o d u Bó w p o d s t a w o w y c h o d w e r s j i 5 . 1 0 j z y k a P e r l .
3 4 | R o z d z i a B 3 . U |y w a n i e m o d u Bó w
U s t a w i a n i e [c i e |k i w o d p o w i e d n i m m o m e n c i e
P e r l w y s z u k u j e m o d u By , p r z e s z u k u j c k a t a l o g i z n a j d u j c e s i w s p e c j a l n e j t a b l i c y j z y k a P e r l ,
@ I N C . I n s t r u k c j a u s e j e s t w y k o n y w a n a n a e t a p i e k o m p i l a c j i , d l a t e g o s p r a w d z a n i e [c i e |k i p r o w a -
d z c d o m o d u Bu , @ I N C , r ó w n i e | m a m i e j s c e n a e t a p i e k o m p i l a c j i . M o |e t o s p o w o d o w a n i e -
p o p r a w n e d z i a Ba n i e p r o g r a m u , k t ó r e t r u d n o z r o z u m i e , o i l e n i e w e zm i e s i p o d u w a g z a w a r -
t o [c i t a b l i c y @ I N C .
N a p r z y k Ba d , z a Bó |m y , |e m a s z w Ba s n y k a t a l o g / h o m e / g i l l i g a n / l i b i u m i e [c i Be [ w Ba s n y m o d u B
N a v i g a t i o n : : S e a t O f P a n t s w p l i k u / h o m e / g i l l i g a n / l i b / N a v i g a t i o n / S e a t O f P a n t s . p m . K i e d y
s p r ó b u j e s z w c z y t a t e n m o d u B, P e r l n i e b d z i e p o t r a f i B g o z n a l e z.
u s e N a v i g a t i o n : : S e a t O f P a n t s
P e r l w y [w i e t l i i n f o r m a c j , |e n i e m o |e z n a l e z m o d u Bu w t a b l i c y @ I N C , a n a s t p n i e w y [w i e t l i
w s z y s t k i e z n a j d u j c e s i w n i e j k a t a l o g i .
C a n ' t l o c a t e N a v i g a t i o n / S e a t O f P a n t s . p m i n @ I N C ( @ I N C c o n t a i n s : & )
M o |e s z w p a [ n a r o z w i z a n i e p o l e g a j c e n a d o d a n i u k a t a l o g u z a w i e r a j c e g o m o d u B d o t a b l i c y
@ I N C p r z e d w y w o Ba n i e m i n s t r u k c j i u s e . J e d n a k n a w e t p o d o d a n i u t e j i n s t r u k c j i :
u n s h i f t @ I N C , ' / h o m e / g i l l i g a n / l i b ' ; # n i e d z i a Ba
u s e N a v i g a t i o n : : S e a t O f P a n t s ;
k o d n i e z a d z i a Ba . D l a c z e g o ? P o n i e w a | m e t o d a u n s h i f t j e s t w y w o By w a n a w c z a s i e w y k o n y w a n i a
p r o g r a m u , d Bu g o p o p r ó b i e w y w o Ba n i a i n s t r u k c j i u s e m a j c e j m i e j s c e n a e t a p i e k o m p i l a c j i .
T e d w i e i n s t r u k c j e s b l i s k o s i e b i e w p r z e s t r z e n i , a l e n i e w c z a s i e . T o , |e n a p i s a Be [ j e j e d n a p o
d r u g i e j , n i e o z n a c z a j e s z c z e , i | z o s t a n w y k o n a n e w t a k i e j k o l e j n o [c i . C h c e s z z m i e n i z a w a r -
t o [ t a b l i c y @ I N C p r z e d w y w o Ba n i e m i n s t r u k c j i u s e . J e d n y m z r o z w i z a D j e s t d o d a n i e b l o k u
B E G I N w o k ó B i n s t r u k c j i p u s h :
B E G I N { u n s h i f t @ I N C , ' / h o m e / g i l l i g a n / l i b ' ; }
u s e N a v i g a t i o n : : S e a t O f P a n t s ;
T e r a z b l o k B E G I N z o s t a n i e s k o m p i l o w a n y i w y k o n a n y w c z a s i e k o m p i l a c j i , d z i k i c z e m u u s t a w i
o d p o w i e d n i [c i e |k d l a i n s t r u k c j i u s e .
J e d n a k t o r o z w i z a n i e j e s t n i e e l e g a n c k i e i m o |e w y m a g a o w i e l e w i c e j w y j a [n i e D, n i | j e s t e [
s k Bo n n y p r z e d s t a w i , s z c z e g ó l n i e g d y o d b i o r c j e s t p r o g r a m i s t a , k t ó r y w p ó zn i e j s z y m c z a s i e
m a d b a o k o d . M o |e s z z a s t p i c a By p o w y |s z y b a Ba g a n p r o s t d y r e k t y w , k t ó r e j u |y w a Be [
j u | w c z e [n i e j :
u s e l i b ' / h o m e / g i l l i g a n / l i b ' ;
u s e N a v i g a t i o n : : S e a t O f P a n t s ;
W p o w y |s z y m r o z w i z a n i u d y r e k t y w a l i b p r z y j m u j e j e d e n l u b w i c e j a r g u m e n t ó w i d o d a j e
j e n a p o c z t e k t a b l i c y @ I N C , p o d o b n i e j a k r o b i t o i n s t r u k c j a u n s h i f t 1 1 . T o r o z w i z a n i e d z i a Ba ,
p o n i e w a | j e s t w y k o n y w a n e n a e t a p i e k o m p i l a c j i , a n i e w c z a s i e w y k o n y w a n i a p r o g r a m u . D l a t e g o
w s z y s t k o j e s t g o t o w e d o w y k o n a n i a i n s t r u k c j i u s e w y s t p u j c e j b e z p o [r e d n i o p o n i |e j .
P o n i e w a | d y r e k t y w a u s e l i b p r a w i e z a w s z e u |y w a [c i e |k i z a l e |n e j o d s y s t e m u , j e s t t o r o z -
w i z a n i e t r a d y c y j n e i z a l e c a m y u m i e s z c z a n i e t e j i n s t r u k c j i n a p o c z t k u p l i k u . D z i k i t e m u m o |n a
j Ba t w i e j z n a l e z i p o p r a w i , k i e d y c h c e s z p r z e n i e [ p l i k d o n o w e g o s y s t e m u l u b z m i e n i
1 1
I n s t r u k c j a u s e l i b p o n a d t o d o d a j e z a l e |n o d a r c h i t e k t u r y b i b l i o t e k z a |d a n b i b l i o t e k , p r z e z c o j e s t t o
b a r d z i e j w a r t o [c i o w e r o z w i z a n i e n i | p r z e d s t a w i o n y w c z e [n i e j o d p o w i e d n i k .
U s t a w i a n i e [c i e |k i w o d p o w i e d n i m m o m e n c i e | 3 5
n a z w k a t a l o g u z a w i e r a j c e g o l i b . O c z y w i [c i e m o |e s z c a Bk o w i c i e w y e l i m i n o w a i n s t r u k c j
u s e l i b , j e [l i z a i n s t a l u j e s z m o d u B w s t a n d a r d o w e j l o k a l i z a c j i o p i s a n e j w t a b l i c y @ I N C , a l e n i e
z a w s z e j e s t t o w y g o d n e .
I n s t r u k c j a u s e l i b n i e z n a c z y u |y j d a n e j b i b l i o t e k i , a l e r a c z e j u |y j d a n e j [c i e |k i d o z n a l e -
z i e n i a b i b l i o t e k ( i m o d u Bó w ) . Z b y t c z s t o s p o t y k a m y s i z k o d e m p o d o b n y m d o p o n i |s z e g o :
u s e l i b ' / h o m e / g i l l i g a n / l i b / N a v i g a t i o n / S e a t O f P a n t s . p m ' ; # yL E
N a s t p n i e p r o g r a m i s t a z a s t a n a w i a s i , d l a c z e g o i n s t r u k c j a n i e d o d a Ba d e f i n i c j i . P a m i t a j , |e
i n s t r u k c j a u s e l i b j e s t w y k o n y w a n a n a e t a p i e k o m p i l a c j i , d l a t e g o p o n i |s z e r o z w i z a n i e t a k |e
n i e j e s t p o p r a w n e :
m y $ L I B _ D I R = ' / h o m e / g i l l i g a n / l i b ' ;
&
u s e l i b $ L I B _ D I R ; # B AD
u s e N a v i g a t i o n : : S e a t O f P a n t s ;
O c z y w i [c i e j z y k P e r l p r z e t w a r z a d e k l a r a c j z m i e n n e j $ L I B _ D I R n a e t a p i e k o m p i l a c j i ( d l a t e g o
n i e p o j a w i s i b Bd , j e [l i u |y j e s z i n s t r u k c j i u s e s t r i c t , n a t o m i a s t p r ó b a w y w o Ba n i a u s e l i b
p o w i n n a z a k o Dc z y s i n i e p o w o d z e n i e m ) , a l e r z e c z y w i s t e p r z y p i s a n i e w a r t o [c i / h o m e / g i l l i g a n /
l i b / m a m i e j s c e d o p i e r o w c z a s i e w y k o n y w a n i a p r o g r a m u . N i e s t e t y , t a k |e w t y m p r z y p a d k u
j e s t t o z b y t p ó zn o .
D l a t e g o t r z e b a u m i e [c i i n s t r u k c j e w b l o k u B E G I N l u b z d e c y d o w a s i n a i n n o p e r a c j w y -
k o n y w a n n a e t a p i e k o m p i l a c j i n a u s t a w i e n i e w a r t o [c i s t a Be j p r z y u |y c i u i n s t r u k c j i u s e
c o n s t a n t :
u s e c o n s t a n t L I B _ D I R = > ' / h o m e / g i l l i g a n / l i b ' ;
&
u s e l i b L I B _ D I R ;
u s e N a v i g a t i o n : : S e a t O f P a n t s ;
G o t o w e . P o n o w n i e d z i a Ba , p r z y n a j m n i e j d o p ó t y , d o p ó k i o k r e [l e n i e b i b l i o t e k i n i e z a l e |y o d
w y n i k ó w j a k i c h [ o b l i c z e D. ( K i e d y t o s i s k o Dc z y ? N i e c h k t o [ p r z e r w i e t o s z a l e Ds t w o ! ) T o r o z -
w i z a n i e p o w i n n o d z i a Ba p o p r a w n i e w o k o Bo 9 9 p r o c e n t a c h p r z y p a d k ó w .
O b s Bu g a z a l e |n o [c i m o d u Bu
W i d z i a Be [ j u |, |e j e [l i s p r ó b u j e s z z a i n s t a l o w a d a n y m o d u B p r z y u |y c i u M o d u l e : : B u i l d , m u s i s z
n a j p i e r w z a i n s t a l o w a s a m m o d u B M o d u l e : : B u i l d . J e s t t o s t o s u n k o w o Ba g o d n y p r z y k Ba d b a r d z i e j
o g ó l n e g o p r o b l e m u z z a l e |n o [c i a m i , k t ó r e g o n i e r o z w i | w s z y s t k i e k o k o s y n a w y s p i e r o z -
b i t k ó w . M o |e z a j [ p o t r z e b a z a i n s t a l o w a n i a k i l k u i n n y c h m o d u Bó w , k t ó r e s a m e w y m a g a j
n a s t p n y c h m o d u Bó w .
N a s z c z [c i e d o s t p n e s o d p o w i e d n i e n a r z d z i a . M o d u B C P A N . p m j e s t c z [c i d y s t r y b u c j i
s t a n d a r d o w e j o d w e r s j i P e r l 5 . 0 0 4 . T e n m o d u B u d o s t p n i a i n t e r a k t y w n p o w Bo k s Bu |c d o
i n s t a l o w a n i a m o d u Bó w .
$ p e r l - M C P A N - e s h e l l
c p a n s h e l l - - C P A N e x p l o r a t i o n a n d m o d u l e i n s t a l l a t i o n ( v 1 . 7 6 0 1 )
R e a d L i n e s u p p o r t a v a i l a b l e ( t r y ' i n s t a l l B u n d l e : : C P A N ' )
c p a n >
A b y z a i n s t a l o w a m o d u B o r a z j e g o z a l e |n o [c i , n a l e |y w y w o Ba i n s t r u k c j i n s t a l l i p o d a
n a z w m o d u Bu . W t e d y m o d u B C P A N . p m o b s Bu |y w s z y s t k i e z a d a n i a : p o b r a n i e , r o z p a k o w a n i e ,
3 6 | R o z d z i a B 3 . U |y w a n i e m o d u Bó w
s k o m p i l o w a n i e , p r z e t e s t o w a n i e i z a i n s t a l o w a n i e m o d u Bu , w y k o n u j c t e o p e r a c j e r e k u r e n c y j n i e
d l a w s z y s t k i c h z a l e |n o [c i .
c p a n > i n s t a l l C G I : : P r o t o t y p e
W y m a g a t o n i e c o z b y t w i e l e p r a c y , d l a t e g o b r i a n u t w o r z y B s k r y p t c p a n , k t ó r y t a k |e j e s t d o -
s t p n y w P e r l u . W y s t a r c z y p o d a l i s t m o d u Bó w , k t ó r e c h c e s z z a i n s t a l o w a , a s k r y p t w y k o n a
w s z y s t k i e p o t r z e b n e o p e r a c j e .
$ c p a n C G I : : P r o t o t y p e H T T P : : C o o k i e s : : S a f a r i T e s t : : P o d
N a s t p n e n a r z d z i e , C P A N P L U S , t o z u p e Bn i e n o w a w e r s j a m o d u Bu C P A N . p m , k t ó r a j e d n a k n a r a z i e
n i e w c h o d z i w s k Ba d d y s t r y b u c j i s t a n d a r d o w e j .
$ p e r l - M C P A N P L U S - e s h e l l
C P A N P L U S : : S h e l l : : D e f a u l t - - C P A N e x p l o r a t i o n a n d m o d u l e s i n s t a l l a t i o n ( v 0 . 0 3 )
* * * P l e a s e r e p o r t b u g s t o <