0000000 N A M E \n C G I : : P r 0000020 i n t W r a p p e r - C G I 0000040 m e t h o d s o u t p u t 0000060 t o a p r i n t h a n d l 0000100 e \n \n S Y N O P S I S \n 0000120 u s e C G I : : P r i 0000140 n t H a n d l e ; \n 0000160 u s e I O : : S c a l a r 0000200 ; # j u s t a n e x a m 0000220 p l e \n u s e 0000240 H T M L : : S t r e a m ; # 0000260 c o n t i n u i n g t h e e 0000300 x a m p l e \n \n 0000320 m y $ c o n t e n t = ' ' 0000340 ; \n m y $ h a 0000360 n d l e = I O : : S c a l a 0000400 r - > n e w ( \ $ c o n t e n 0000420 t ) ; \n m y $ 0000440 c g i = C G I : : P r i n t 0000460 H a n d l e ( $ h a n d l e ) 0000500 ; \n m y $ h t 0000520 m l = H T M L : : S t r e a 0000540 m - > n e w ( $ h a n d l e ) 0000560 ; \n \n # N o t 0000600 a v e r y e x c i t i n g 0000620 e x a m p l e : \n 0000640 $ c g i - > s t a r t _ f o 0000660 r m ; \n $ h t m 0000700 l - > S T R O N G - > t ( ' I 0000720 a m a f o r m . ' ) - > _ 0000740 S T R O N G ; \n 0000760 $ c g i - > s u b m i t ; \n 0001000 $ c g i - > e n d _ 0001020 f o r m ; \n \n p 0001040 r i n t " $ c o n t e n t \ n 0001060 " ; \n < F O R M M E T 0001100 H O D = " P O S T " E N C T 0001120 Y P E = " a p p l i c a t i o n 0001140 / x - w w w - f o r m - u r l e 0001160 n c o d e d " > \n < S T 0001200 R O N G > I a m a f o r m 0001220 . < / S T R O N G > < I N P U T 0001240 T Y P E = " s u b m i t " N 0001260 A M E = " . s u b m i t " > < / 0001300 F O R M > \n \n D E S C R I P T I 0001320 O N \n C G I : : P r i n 0001340 t W r a p p e r a r r a n g e 0001360 s f o r C G I m e t h o d 0001400 s t o o u t p u t t h e i 0001420 r r e s u l t s b y \n 0001440 p r i n t i n g o n t o a 0001460 n a r b i t r a r y h a n d 0001500 l e . T h i s g e t s a r 0001520 o u n d t h e p r o b l e m 0001540 t h a t t h e \n C G 0001560 I ' s s u b s r e t u r n 0001600 s t r i n g s . \n \n Y o 0001620 u c o u l d j u s t c a l 0001640 l ` p r i n t ' y o u r s e 0001660 l f o n t h e a p p r o p 0001700 r i a t e f i l e h a n d l 0001720 e , b u t \n t h e r e 0001740 a r e m a n y c o n t e x 0001760 t s i n w h i c h i t i 0002000 s c l e a n e r t o p r o 0002020 v i d e t h e e x t r a \n 0002040 a b s t r a c t i o n ( 0002060 s u c h a s m i x i n g C 0002100 G I w i t h H T M L : : S t 0002120 r e a m , t h e p r o b l e 0002140 m w h i c h \n p r o m 0002160 p t e d m y s o l u t i o n 0002200 , i l l u s t r a t e d a b 0002220 o v e ) . \n \n C G I : : 0002240 P r i n t W r a p p e r c r e 0002260 a t e s t h e n e c e s s a 0002300 r y c a l l b a c k s f o r 0002320 p r i n t i n g \n d y 0002340 n a m i c a l l y , u p d a t 0002360 i n g t h e s y m b o l t 0002400 a b l e a s i t e n c o u 0002420 n t e r s a n e w C G I \n 0002440 m e t h o d . \n \n C O N 0002460 S T R U C T O R \n ` n e 0002500 w ( $ h ) ' \n C 0002520 r e a t e s a n e w C G I 0002540 : : P r i n t W r a p p e r , 0002560 p r i n t i n g t h e r e s 0002600 u l t s o f C G I m e t h 0002620 o d s \n o n t o 0002640 t h e p r i n t h a n d l 0002660 e o b j e c t , ` $ h ' . \n 0002700 \n M E T H O D S \n ` i o 0002720 ( ) ' \n R e t u 0002740 r n s t h e u n d e r l y i 0002760 n g p r i n t h a n d l e 0003000 o b j e c t . \n \n ` A U 0003020 T O L O A D ' \n 0003040 I n i t i a l l y , ` C G I : 0003060 : P r i n t W r a p p e r ' h 0003100 a s n o m e t h o d s ( e 0003120 x c e p t ` i o ' ) . A s 0003140 t h e \n c a l l 0003160 e r i n v o k e s C G I m 0003200 e t h o d s , ` A U T O L O A 0003220 D ' c r e a t e s a n o n y 0003240 m o u s s u b r o u t i n e s 0003260 \n t o p e r f 0003300 o r m t h e a c t u a l C 0003320 G I m e t h o d c a l l a 0003340 n d p r i n t t h e r e s 0003360 u l t s w i t h t h e \n 0003400 p r i n t h a n d 0003420 l e o b j e c t . I t a l 0003440 s o u p d a t e s t h e s 0003460 y m b o l t a b l e s o t 0003500 h a t f u t u r e \n 0003520 c a l l s c a n b y p 0003540 a s s ` A U T O L O A D ' . \n 0003560 \n S E E A L S O \n t h 0003600 e C G I m a n p a g e , t 0003620 h e I O : : S c a l a r m a 0003640 n p a g e , t h e H T M L : 0003660 : S t r e a m m a n p a g e , 0003700 t h e \n p r i n t e 0003720 n t r y i n t h e p e r l 0003740 f u n c m a n p a g e \n \n 0003760 C G I i s t h e c a n 0004000 o n i c a l p a c k a g e f 0004020 o r w o r k i n g w i t h 0004040 f i l l - o u t f o r m s o 0004060 n t h e w e b . \n \n 0004100 I O : : S c a l a r i s a 0004120 h a n d y p a c k a g e f o 0004140 r t r e a t i n g a s t r 0004160 i n g a s a n o b j e c t 0004200 \n s u p p o r t i n g 0004220 I O h a n d l e s e m a n t 0004240 i c s . \n \n H T M L : : 0004260 S t r e a m i s a n i c e 0004300 p a c k a g e f o r w r i 0004320 t i n g H T M L m a r k u p 0004340 a n d c o n t e n t i n t 0004360 o \n a n I O h a n d 0004400 l e w i t h s t r e a m s 0004420 e m a n t i c s . \n \n D I A G N 0004440 O S T I C S \n T h e f 0004460 o l l o w i n g a r e t h e 0004500 d i a g n o s t i c s g e n 0004520 e r a t e d b y C l a s s : 0004540 : C l a s s . I t e m s \n 0004560 m a r k e d " ( W ) " a 0004600 r e n o n - f a t a l ( i n 0004620 v o k e ` C a r p : : c a r p 0004640 ' ) ; t h o s e m a r k e d 0004660 " ( F ) " a r e \n f 0004700 a t a l ( i n v o k e ` C a 0004720 r p : : c r o a k ' ) . \n \n 0004740 N o p r i n t h a n d l 0004760 e \n ( F ) T h 0005000 e c a l l e r t r i e d t 0005020 o c r e a t e a n e w ` 0005040 C G I : : P r i n t W r a p p e 0005060 r ' w i t h o u t \n 0005100 s u p p l y i n g a n 0005120 o b j e c t w h i c h s u p 0005140 p o r t s ` p r i n t ' . \n \n 0005160 ' % s ' i s n o t 0005200 a p r i n t h a n d l e \n 0005220 ( F ) T h e c 0005240 a l l e r t r i e d t o c 0005260 r e a t e a n e w ` C G I 0005300 : : P r i n t W r a p p e r ' 0005320 u s i n g a n \n 0005340 o b j e c t w h i c h d o 0005360 e s n o t s u p p o r t ` 0005400 p r i n t ' . \n \n B U G S A N 0005420 D C A V E A T S \n S o 0005440 f a r , n o n e , b u t 0005460 y o u n e v e r k n o w . 0005500 * C a v e a t e m p t o r . * 0005520 \n \n A U T H O R S \n B . 0005540 K . O x l e y ( b i n k l 0005560 e y ) a t H o m e < b i n 0005600 k l e y @ b i g f o o t . c o m 0005620 > \n \n C O P Y R I G H T \n 0005640 $ I d : P r i n t W r a 0005660 p p e r . p m , v 1 . 3 1 9 0005700 9 9 / 1 1 / 1 5 2 0 : 5 6 : 1 0005720 8 b i n k l e y E x p $ \n 0005740 \n C o p y r i g h t 0005760 1 9 9 9 , B . K . O x l 0006000 e y ( b i n k l e y ) . \n \n 0006020 T h i s l i b r a r y 0006040 i s f r e e s o f t w a r e 0006060 ; y o u m a y r e d i s t 0006100 r i b u t e i t a n d / o r 0006120 m o d i f y i t \n u 0006140 n d e r t h e s a m e t e 0006160 r m s a s P e r l i t s e 0006200 l f . \n \n 0006205