home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / perl / scripts-osu / operl.shar < prev    next >
SHell self-extracting ARchive  |  1991-02-25  |  12.1 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: SHell self-extracting ARchive (archive/shar).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Newsgroup Content (archive/news) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news text default
99% file Perl5 module source text default
98% file Ruby script, ASCII text default (weak)
100% checkBytes Printable ASCII default
100% dexmagic PrintFox/Pagefox WEAK default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: Plain text[LF] default
100% xdgMime message/news default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 74 75 | 74 2e 63 69 73 2e 6f 68 |Path: tu|t.cis.oh|
|00000010| 69 6f 2d 73 74 61 74 65 | 2e 65 64 75 21 70 61 63 |io-state|.edu!pac|
|00000020| 69 66 69 63 2e 6d 70 73 | 2e 6f 68 69 6f 2d 73 74 |ific.mps|.ohio-st|
|00000030| 61 74 65 2e 65 64 75 21 | 6c 69 6e 61 63 21 75 77 |ate.edu!|linac!uw|
|00000040| 6d 2e 65 64 75 21 63 73 | 2e 75 74 65 78 61 73 2e |m.edu!cs|.utexas.|
|00000050| 65 64 75 21 75 75 6e 65 | 74 21 73 72 61 63 6f 31 |edu!uune|t!sraco1|
|00000060| 21 73 61 6b 6f 68 0a 46 | 72 6f 6d 3a 20 73 61 6b |!sakoh.F|rom: sak|
|00000070| 6f 68 40 73 72 61 63 6f | 32 2e 75 73 2e 73 72 61 |oh@sraco|2.us.sra|
|00000080| 2e 63 6f 2e 6a 70 20 28 | 48 69 72 6f 73 68 69 20 |.co.jp (|Hiroshi |
|00000090| 26 29 0a 4e 65 77 73 67 | 72 6f 75 70 73 3a 20 63 |&).Newsg|roups: c|
|000000a0| 6f 6d 70 2e 6c 61 6e 67 | 2e 70 65 72 6c 0a 53 75 |omp.lang|.perl.Su|
|000000b0| 62 6a 65 63 74 3a 20 52 | 65 3a 20 6f 70 65 72 6c |bject: R|e: operl|
|000000c0| 20 2d 20 61 6e 20 65 78 | 70 65 72 69 6d 65 6e 74 | - an ex|periment|
|000000d0| 61 6c 20 6f 62 6a 65 63 | 74 2d 6f 72 69 65 6e 74 |al objec|t-orient|
|000000e0| 65 64 20 70 61 63 6b 61 | 67 65 20 66 6f 72 20 70 |ed packa|ge for p|
|000000f0| 65 72 6c 0a 4d 65 73 73 | 61 67 65 2d 49 44 3a 20 |erl.Mess|age-ID: |
|00000100| 3c 53 41 4b 4f 48 2e 39 | 31 46 65 62 32 32 31 37 |<SAKOH.9|1Feb2217|
|00000110| 30 34 35 37 40 73 72 61 | 63 6f 32 2e 75 73 2e 73 |0457@sra|co2.us.s|
|00000120| 72 61 2e 63 6f 2e 6a 70 | 3e 0a 44 61 74 65 3a 20 |ra.co.jp|>.Date: |
|00000130| 32 32 20 46 65 62 20 39 | 31 20 30 38 3a 30 34 3a |22 Feb 9|1 08:04:|
|00000140| 35 37 20 47 4d 54 0a 52 | 65 66 65 72 65 6e 63 65 |57 GMT.R|eference|
|00000150| 73 3a 20 3c 53 41 4b 4f | 48 2e 39 31 46 65 62 32 |s: <SAKO|H.91Feb2|
|00000160| 31 30 39 32 34 32 36 40 | 73 72 61 63 6f 32 2e 75 |1092426@|sraco2.u|
|00000170| 73 2e 73 72 61 2e 63 6f | 2e 6a 70 3e 20 3c 31 32 |s.sra.co|.jp> <12|
|00000180| 33 35 35 31 40 75 75 6e | 65 74 2e 55 55 2e 4e 45 |3551@uun|et.UU.NE|
|00000190| 54 3e 0a 53 65 6e 64 65 | 72 3a 20 75 73 65 6e 65 |T>.Sende|r: usene|
|000001a0| 74 40 73 72 61 63 6f 31 | 2e 75 73 2e 73 72 61 2e |t@sraco1|.us.sra.|
|000001b0| 43 4f 2e 4a 50 0a 4f 72 | 67 61 6e 69 7a 61 74 69 |CO.JP.Or|ganizati|
|000001c0| 6f 6e 3a 20 53 6f 66 74 | 77 61 72 65 20 52 65 73 |on: Soft|ware Res|
|000001d0| 65 61 72 63 68 20 41 73 | 73 6f 63 69 61 74 65 73 |earch As|sociates|
|000001e0| 2c 20 49 6e 63 2e 20 42 | 6f 75 6c 64 65 72 20 4c |, Inc. B|oulder L|
|000001f0| 61 62 2e 0a 4c 69 6e 65 | 73 3a 20 34 35 31 0a 49 |ab..Line|s: 451.I|
|00000200| 6e 2d 72 65 70 6c 79 2d | 74 6f 3a 20 72 62 6a 40 |n-reply-|to: rbj@|
|00000210| 75 75 6e 65 74 2e 55 55 | 2e 4e 45 54 27 73 20 6d |uunet.UU|.NET's m|
|00000220| 65 73 73 61 67 65 20 6f | 66 20 32 32 20 46 65 62 |essage o|f 22 Feb|
|00000230| 20 39 31 20 30 32 3a 34 | 31 3a 33 36 20 47 4d 54 | 91 02:4|1:36 GMT|
|00000240| 0a 0a 0a 69 6e 20 61 72 | 74 69 63 6c 65 20 3c 31 |...in ar|ticle <1|
|00000250| 32 33 35 35 31 40 75 75 | 6e 65 74 2e 55 55 2e 4e |23551@uu|net.UU.N|
|00000260| 45 54 3e 0a 09 72 62 6a | 40 75 75 6e 65 74 2e 55 |ET>..rbj|@uunet.U|
|00000270| 55 2e 4e 45 54 20 28 52 | 6f 6f 74 20 42 6f 79 20 |U.NET (R|oot Boy |
|00000280| 4a 69 6d 29 20 77 72 6f | 74 65 3a 0a 0a 20 20 20 |Jim) wro|te:.. |
|00000290| 3e 3e 57 68 79 2c 20 70 | 72 61 79 20 74 65 6c 6c |>>Why, p|ray tell|
|000002a0| 2c 20 64 6f 65 73 20 73 | 6f 75 72 63 65 20 63 6f |, does s|ource co|
|000002b0| 64 65 20 63 6f 6e 74 61 | 69 6e 20 75 6e 70 72 69 |de conta|in unpri|
|000002c0| 6e 74 61 62 6c 65 73 3f | 0a 20 20 20 3e 3e 0a 20 |ntables?|. >>. |
|000002d0| 20 20 3e 3e 4c 69 6b 65 | 20 43 20 61 6e 64 20 70 | >>Like| C and p|
|000002e0| 6f 73 74 73 63 72 69 70 | 74 2c 20 70 65 72 6c 20 |ostscrip|t, perl |
|000002f0| 6d 61 6b 65 73 20 69 74 | 20 70 6f 73 73 69 62 6c |makes it| possibl|
|00000300| 65 20 74 6f 20 72 65 70 | 72 65 73 65 6e 74 0a 20 |e to rep|resent. |
|00000310| 20 20 3e 3e 75 6e 70 72 | 69 6e 74 61 62 6c 65 73 | >>unpr|intables|
|00000320| 20 62 79 20 75 73 69 6e | 67 20 5c 20 65 73 63 61 | by usin|g \ esca|
|00000330| 70 65 73 2e 20 49 74 20 | 69 73 20 62 61 64 20 66 |pes. It |is bad f|
|00000340| 6f 72 6d 20 74 6f 20 64 | 6f 20 6f 74 68 65 72 77 |orm to d|o otherw|
|00000350| 69 73 65 2e 0a 0a 41 63 | 74 75 61 6c 6c 79 20 2c |ise...Ac|tually ,|
|00000360| 74 68 65 20 66 6f 72 6d | 65 72 6c 79 20 70 6f 73 |the form|erly pos|
|00000370| 74 65 64 20 73 6f 75 72 | 63 65 20 63 6f 64 65 20 |ted sour|ce code |
|00000380| 63 6f 6e 74 61 69 6e 73 | 20 70 6f 72 74 69 6f 6e |contains| portion|
|00000390| 20 6c 69 6b 65 20 3a 20 | 71 5e 41 20 2e 2e 2e 20 | like : |q^A ... |
|000003a0| 71 5e 41 20 0a 28 77 68 | 65 72 65 20 5e 41 20 72 |q^A .(wh|ere ^A r|
|000003b0| 65 70 72 65 73 65 6e 74 | 73 20 63 6f 6e 74 72 6f |epresent|s contro|
|000003c0| 6c 2d 41 29 20 66 6f 72 | 20 73 6f 6d 65 20 72 65 |l-A) for| some re|
|000003d0| 61 73 6f 6e 2e 0a 49 20 | 64 6f 6e 74 27 74 20 74 |ason..I |dont't t|
|000003e0| 68 69 6e 6b 20 77 65 20 | 63 61 6e 20 75 73 65 20 |hink we |can use |
|000003f0| 71 5c 30 30 31 20 2e 2e | 2e 20 71 5c 30 30 31 20 |q\001 ..|. q\001 |
|00000400| 69 6e 73 74 65 61 64 2e | 0a 0a 42 75 74 20 79 6f |instead.|..But yo|
|00000410| 75 20 61 72 65 20 72 69 | 67 68 74 2e 20 54 68 61 |u are ri|ght. Tha|
|00000420| 74 20 6e 75 69 73 61 6e | 63 65 20 73 68 6f 75 6c |t nuisan|ce shoul|
|00000430| 64 20 62 65 20 61 76 6f | 69 64 65 64 20 61 73 20 |d be avo|ided as |
|00000440| 6d 75 63 68 20 61 73 20 | 70 6f 73 73 69 62 6c 65 |much as |possible|
|00000450| 2e 0a 48 65 72 65 20 49 | 20 72 65 63 6f 64 65 20 |..Here I| recode |
|00000460| 61 6e 64 20 72 65 70 6f | 73 74 20 6d 79 20 73 75 |and repo|st my su|
|00000470| 62 6d 69 73 73 69 6f 6e | 2e 0a 54 68 65 72 65 20 |bmission|..There |
|00000480| 61 72 65 20 6e 6f 20 75 | 6e 70 72 69 6e 74 61 62 |are no u|nprintab|
|00000490| 6c 65 20 63 68 61 72 61 | 63 74 65 72 73 20 6e 6f |le chara|cters no|
|000004a0| 77 2e 0a 0a 54 68 61 6e | 6b 20 79 6f 75 20 66 6f |w...Than|k you fo|
|000004b0| 72 20 79 6f 75 72 20 61 | 64 76 69 63 65 2e 0a 0a |r your a|dvice...|
|000004c0| 2a 20 49 20 64 6f 6e 27 | 74 20 77 61 6e 74 20 74 |* I don'|t want t|
|000004d0| 6f 20 63 6c 61 69 6d 20 | 74 68 61 74 20 77 65 20 |o claim |that we |
|000004e0| 73 68 6f 75 6c 64 20 69 | 6e 63 6f 72 70 6f 72 61 |should i|ncorpora|
|000004f0| 74 65 0a 2a 20 4f 4f 20 | 66 65 61 74 75 72 65 73 |te.* OO |features|
|00000500| 20 69 6e 74 6f 20 70 65 | 72 6c 20 69 74 73 65 6c | into pe|rl itsel|
|00000510| 66 2e 0a 2a 20 49 27 76 | 65 20 6a 75 73 74 20 70 |f..* I'v|e just p|
|00000520| 72 65 73 65 6e 74 20 74 | 68 69 73 20 70 61 63 6b |resent t|his pack|
|00000530| 61 67 65 20 61 73 20 61 | 20 74 69 6e 79 20 70 72 |age as a| tiny pr|
|00000540| 6f 6f 66 20 6f 66 20 66 | 6c 65 78 69 62 69 6c 69 |oof of f|lexibili|
|00000550| 74 79 20 6f 66 20 70 65 | 72 6c 0a 2a 20 61 6e 64 |ty of pe|rl.* and|
|00000560| 20 66 6f 72 20 66 75 6e | 20 3a 2d 29 0a 0a 48 69 | for fun| :-)..Hi|
|00000570| 72 6f 73 68 69 20 53 61 | 6b 6f 68 0a 73 61 6b 6f |roshi Sa|koh.sako|
|00000580| 68 40 73 72 61 2e 63 6f | 2e 6a 70 20 6f 72 20 75 |h@sra.co|.jp or u|
|00000590| 75 6e 65 74 21 73 72 61 | 63 6f 31 21 73 61 6b 6f |unet!sra|co1!sako|
|000005a0| 68 0a 0a 2d 2d 2d 3c 63 | 75 74 20 68 65 72 65 3e |h..---<c|ut here>|
|000005b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000005c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000005d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0a |--------|-------.|
|000005e0| 23 21 2f 62 69 6e 2f 73 | 68 0a 23 20 54 68 69 73 |#!/bin/s|h.# This|
|000005f0| 20 69 73 20 61 20 73 68 | 65 6c 6c 20 61 72 63 68 | is a sh|ell arch|
|00000600| 69 76 65 2e 20 20 52 65 | 6d 6f 76 65 20 61 6e 79 |ive. Re|move any|
|00000610| 74 68 69 6e 67 20 62 65 | 66 6f 72 65 20 74 68 69 |thing be|fore thi|
|00000620| 73 20 6c 69 6e 65 2c 0a | 23 20 74 68 65 6e 20 75 |s line,.|# then u|
|00000630| 6e 70 61 63 6b 20 69 74 | 20 62 79 20 73 61 76 69 |npack it| by savi|
|00000640| 6e 67 20 69 74 20 69 6e | 20 61 20 66 69 6c 65 20 |ng it in| a file |
|00000650| 61 6e 64 20 74 79 70 69 | 6e 67 20 22 73 68 20 66 |and typi|ng "sh f|
|00000660| 69 6c 65 22 2e 0a 23 0a | 23 20 57 72 61 70 70 65 |ile"..#.|# Wrappe|
|00000670| 64 20 62 79 20 73 72 61 | 63 6f 32 21 20 6f 6e 20 |d by sra|co2! on |
|00000680| 46 72 69 20 46 65 62 20 | 32 32 20 30 30 3a 35 38 |Fri Feb |22 00:58|
|00000690| 3a 30 30 20 4d 53 54 20 | 31 39 39 31 0a 23 20 43 |:00 MST |1991.# C|
|000006a0| 6f 6e 74 65 6e 74 73 3a | 20 20 62 61 67 2e 70 6c |ontents:| bag.pl|
|000006b0| 20 6f 70 65 72 6c 2e 70 | 6c 20 70 6f 69 6e 74 2e | operl.p|l point.|
|000006c0| 70 6c 20 73 65 74 2e 70 | 6c 20 73 74 61 63 6b 2e |pl set.p|l stack.|
|000006d0| 70 6c 20 73 61 6d 70 6c | 65 31 20 73 61 6d 70 6c |pl sampl|e1 sampl|
|000006e0| 65 32 20 73 61 6d 70 6c | 65 33 0a 23 09 73 61 6d |e2 sampl|e3.#.sam|
|000006f0| 70 6c 65 34 20 73 61 6d | 70 6c 65 35 20 73 61 6d |ple4 sam|ple5 sam|
|00000700| 70 6c 65 36 0a 20 0a 65 | 63 68 6f 20 78 20 2d 20 |ple6. .e|cho x - |
|00000710| 62 61 67 2e 70 6c 0a 73 | 65 64 20 27 73 2f 5e 40 |bag.pl.s|ed 's/^@|
|00000720| 2f 2f 27 20 3e 20 22 62 | 61 67 2e 70 6c 22 20 3c |//' > "b|ag.pl" <|
|00000730| 3c 27 40 2f 2f 45 2a 4f | 2a 46 20 62 61 67 2e 70 |<'@//E*O|*F bag.p|
|00000740| 6c 2f 2f 27 0a 23 21 2f | 75 73 72 2f 62 69 6e 2f |l//'.#!/|usr/bin/|
|00000750| 70 65 72 6c 0a 72 65 71 | 75 69 72 65 20 27 6f 70 |perl.req|uire 'op|
|00000760| 65 72 6c 2e 70 6c 27 3b | 0a 0a 26 64 65 66 63 6c |erl.pl';|..&defcl|
|00000770| 61 73 73 20 28 27 62 61 | 67 27 2c 27 72 6f 6f 74 |ass ('ba|g','root|
|00000780| 27 29 3b 0a 26 64 65 66 | 6d 65 74 68 6f 64 28 27 |');.&def|method('|
|00000790| 62 61 67 27 2c 27 70 75 | 74 27 2c 20 20 20 20 20 |bag','pu|t', |
|000007a0| 20 27 24 65 6c 65 6d 65 | 6e 74 73 7b 24 5f 5b 30 | '$eleme|nts{$_[0|
|000007b0| 5d 7d 2b 2b 3b 27 29 3b | 0a 26 64 65 66 6d 65 74 |]}++;');|.&defmet|
|000007c0| 68 6f 64 28 27 62 61 67 | 27 2c 27 68 6f 77 5f 6d |hod('bag|','how_m|
|000007d0| 61 6e 79 27 2c 20 27 24 | 65 6c 65 6d 65 6e 74 73 |any', '$|elements|
|000007e0| 7b 24 5f 5b 30 5d 7d 3b | 27 29 3b 0a 26 64 65 66 |{$_[0]};|');.&def|
|000007f0| 6d 65 74 68 6f 64 28 27 | 62 61 67 27 2c 27 6b 69 |method('|bag','ki|
|00000800| 6e 64 73 27 2c 20 20 20 | 20 27 6b 65 79 73 28 25 |nds', | 'keys(%|
|00000810| 65 6c 65 6d 65 6e 74 73 | 29 3b 27 29 3b 0a 26 64 |elements|);');.&d|
|00000820| 65 66 6d 65 74 68 6f 64 | 28 27 62 61 67 27 2c 27 |efmethod|('bag','|
|00000830| 64 65 6c 65 74 65 27 2c | 20 0a 09 27 64 65 6c 65 |delete',| ..'dele|
|00000840| 74 65 20 24 65 6c 65 6d | 65 6e 74 73 7b 24 5f 5b |te $elem|ents{$_[|
|00000850| 30 5d 7d 20 69 66 20 2d | 2d 24 65 6c 65 6d 65 6e |0]} if -|-$elemen|
|00000860| 74 73 7b 24 5f 5b 30 5d | 7d 20 3c 3d 20 30 3b 27 |ts{$_[0]|} <= 0;'|
|00000870| 29 3b 0a 26 64 65 66 6d | 65 74 68 6f 64 28 27 62 |);.&defm|ethod('b|
|00000880| 61 67 27 2c 27 68 61 73 | 27 2c 20 20 20 20 20 20 |ag','has|', |
|00000890| 27 64 65 66 69 6e 65 64 | 28 24 65 6c 65 6d 65 6e |'defined|($elemen|
|000008a0| 74 73 7b 24 5f 5b 30 5d | 7d 29 27 29 3b 0a 26 64 |ts{$_[0]|})');.&d|
|000008b0| 65 66 6d 65 74 68 6f 64 | 28 27 62 61 67 27 2c 27 |efmethod|('bag','|
|000008c0| 73 69 7a 65 27 2c 20 20 | 20 20 20 27 66 6f 72 65 |size', | 'fore|
|000008d0| 61 63 68 20 24 6e 20 28 | 25 65 6c 65 6d 65 6e 74 |ach $n (|%element|
|000008e0| 73 29 20 7b 24 73 75 6d | 20 2b 3d 20 24 6e 3b 7d |s) {$sum| += $n;}|
|000008f0| 3b 24 73 75 6d 3b 27 29 | 3b 0a 26 64 65 66 6d 65 |;$sum;')|;.&defme|
|00000900| 74 68 6f 64 28 27 62 61 | 67 27 2c 27 64 75 6d 70 |thod('ba|g','dump|
|00000910| 27 2c 0a 20 20 20 20 27 | 77 68 69 6c 65 20 28 28 |',. '|while ((|
|00000920| 24 6b 65 79 2c 20 24 76 | 61 6c 29 20 3d 20 65 61 |$key, $v|al) = ea|
|00000930| 63 68 20 25 65 6c 65 6d | 65 6e 74 73 29 20 7b 70 |ch %elem|ents) {p|
|00000940| 72 69 6e 74 20 22 24 6b | 65 79 20 3d 20 24 76 61 |rint "$k|ey = $va|
|00000950| 6c 5c 6e 22 3b 7d 27 29 | 3b 0a 0a 31 3b 0a 40 2f |l\n";}')|;..1;.@/|
|00000960| 2f 45 2a 4f 2a 46 20 62 | 61 67 2e 70 6c 2f 2f 0a |/E*O*F b|ag.pl//.|
|00000970| 63 68 6d 6f 64 20 75 3d | 72 2c 67 3d 72 2c 6f 3d |chmod u=|r,g=r,o=|
|00000980| 72 20 62 61 67 2e 70 6c | 0a 20 0a 65 63 68 6f 20 |r bag.pl|. .echo |
|00000990| 78 20 2d 20 6f 70 65 72 | 6c 2e 70 6c 0a 73 65 64 |x - oper|l.pl.sed|
|000009a0| 20 27 73 2f 5e 40 2f 2f | 27 20 3e 20 22 6f 70 65 | 's/^@//|' > "ope|
|000009b0| 72 6c 2e 70 6c 22 20 3c | 3c 27 40 2f 2f 45 2a 4f |rl.pl" <|<'@//E*O|
|000009c0| 2a 46 20 6f 70 65 72 6c | 2e 70 6c 2f 2f 27 0a 23 |*F operl|.pl//'.#|
|000009d0| 21 2f 75 73 72 2f 62 69 | 6e 2f 70 65 72 6c 0a 23 |!/usr/bi|n/perl.#|
|000009e0| 0a 23 20 24 48 65 61 64 | 65 72 3a 20 6f 70 65 72 |.# $Head|er: oper|
|000009f0| 6c 2e 70 6c 2c 76 20 31 | 2e 37 20 39 31 2f 30 32 |l.pl,v 1|.7 91/02|
|00000a00| 2f 32 30 20 31 35 3a 34 | 33 3a 31 39 20 73 61 6b |/20 15:4|3:19 sak|
|00000a10| 6f 68 20 4c 6f 63 6b 65 | 64 20 24 0a 23 20 41 6e |oh Locke|d $.# An|
|00000a20| 20 65 78 70 65 72 69 6d | 65 6e 74 61 6c 20 6f 62 | experim|ental ob|
|00000a30| 6a 65 63 74 2d 6f 72 69 | 65 6e 74 65 64 20 70 61 |ject-ori|ented pa|
|00000a40| 63 6b 61 67 65 20 66 6f | 72 20 70 65 72 6c 2e 0a |ckage fo|r perl..|
|00000a50| 23 0a 70 61 63 6b 61 67 | 65 20 6f 70 65 72 6c 3b |#.packag|e operl;|
|00000a60| 0a 72 65 71 75 69 72 65 | 20 27 64 75 6d 70 76 61 |.require| 'dumpva|
|00000a70| 72 2e 70 6c 27 3b 0a 23 | 0a 23 20 61 6e 20 6f 62 |r.pl';.#|.# an ob|
|00000a80| 6a 65 63 74 20 69 64 20 | 3d 20 24 72 6f 6f 74 20 |ject id |= $root |
|00000a90| 2e 20 24 73 61 6c 74 3b | 0a 23 0a 24 72 6f 6f 74 |. $salt;|.#.$root|
|00000aa0| 20 3d 20 27 6f 70 65 72 | 6c 5f 27 3b 20 20 23 20 | = 'oper|l_'; # |
|00000ab0| 6f 62 6a 65 63 74 20 69 | 64 20 72 6f 6f 74 0a 24 |object i|d root.$|
|00000ac0| 73 61 6c 74 20 3d 20 27 | 61 27 3b 20 20 20 20 20 |salt = '|a'; |
|00000ad0| 20 20 23 20 6f 62 6a 65 | 63 74 20 69 64 20 73 61 | # obje|ct id sa|
|00000ae0| 6c 74 3b 0a 0a 23 0a 23 | 20 26 64 65 66 63 6c 61 |lt;..#.#| &defcla|
|00000af0| 73 73 28 63 6c 61 73 73 | 2c 20 73 75 70 65 72 63 |ss(class|, superc|
|00000b00| 6c 61 73 73 29 0a 23 0a | 73 75 62 20 6d 61 69 6e |lass).#.|sub main|
|00000b10| 27 64 65 66 63 6c 61 73 | 73 20 7b 0a 20 20 20 20 |'defclas|s {. |
|00000b20| 6c 6f 63 61 6c 28 24 63 | 6c 61 73 73 29 20 3d 20 |local($c|lass) = |
|00000b30| 73 68 69 66 74 3b 20 20 | 23 20 63 6c 61 73 73 20 |shift; |# class |
|00000b40| 6e 61 6d 65 0a 20 20 20 | 20 6c 6f 63 61 6c 28 24 |name. | local($|
|00000b50| 73 75 70 65 72 29 20 3d | 20 73 68 69 66 74 3b 20 |super) =| shift; |
|00000b60| 20 23 20 73 75 70 65 72 | 20 63 6c 61 73 73 20 6e | # super| class n|
|00000b70| 61 6d 65 0a 0a 20 20 20 | 20 69 66 20 28 64 65 66 |ame.. | if (def|
|00000b80| 69 6e 65 64 28 24 73 75 | 70 65 72 63 6c 61 73 73 |ined($su|perclass|
|00000b90| 7b 24 73 75 70 65 72 7d | 29 29 20 7b 0a 09 24 73 |{$super}|)) {..$s|
|00000ba0| 75 70 65 72 63 6c 61 73 | 73 7b 24 63 6c 61 73 73 |uperclas|s{$class|
|00000bb0| 7d 20 3d 20 24 73 75 70 | 65 72 3b 0a 20 20 20 20 |} = $sup|er;. |
|00000bc0| 7d 20 65 6c 73 65 20 7b | 0a 09 70 72 69 6e 74 20 |} else {|..print |
|00000bd0| 22 6e 6f 20 73 75 63 68 | 20 73 75 70 65 72 20 63 |"no such| super c|
|00000be0| 6c 61 73 73 3a 22 20 2e | 20 24 73 75 70 65 72 20 |lass:" .| $super |
|00000bf0| 2e 20 22 5c 6e 22 3b 0a | 20 20 20 20 7d 0a 7d 0a |. "\n";.| }.}.|
|00000c00| 0a 23 0a 23 20 26 64 65 | 66 6d 65 74 68 6f 64 28 |.#.# &de|fmethod(|
|00000c10| 63 6c 61 73 73 2c 20 6d | 65 74 68 6f 64 2c 20 62 |class, m|ethod, b|
|00000c20| 6f 64 79 29 0a 23 0a 73 | 75 62 20 6d 61 69 6e 27 |ody).#.s|ub main'|
|00000c30| 64 65 66 6d 65 74 68 6f | 64 20 7b 0a 20 20 20 20 |defmetho|d {. |
|00000c40| 6c 6f 63 61 6c 28 24 63 | 6c 61 73 73 29 20 20 3d |local($c|lass) =|
|00000c50| 20 73 68 69 66 74 3b 20 | 23 20 63 6c 61 73 73 20 | shift; |# class |
|00000c60| 6e 61 6d 65 0a 20 20 20 | 20 6c 6f 63 61 6c 28 24 |name. | local($|
|00000c70| 6d 65 74 68 6f 64 29 20 | 3d 20 73 68 69 66 74 3b |method) |= shift;|
|00000c80| 20 23 20 6d 65 74 68 6f | 64 20 6e 61 6d 65 0a 20 | # metho|d name. |
|00000c90| 20 20 20 6c 6f 63 61 6c | 28 24 62 6f 64 79 29 20 | local|($body) |
|00000ca0| 20 20 3d 20 73 68 69 66 | 74 3b 20 23 20 6d 65 74 | = shif|t; # met|
|00000cb0| 68 6f 64 20 62 6f 64 79 | 0a 20 20 20 20 6c 6f 63 |hod body|. loc|
|00000cc0| 61 6c 28 24 64 65 66 73 | 29 3b 0a 20 20 20 20 6c |al($defs|);. l|
|00000cd0| 6f 63 61 6c 28 24 72 65 | 73 75 6c 74 29 3b 0a 0a |ocal($re|sult);..|
|00000ce0| 20 20 20 20 69 66 20 28 | 21 64 65 66 69 6e 65 64 | if (|!defined|
|00000cf0| 28 24 73 75 70 65 72 63 | 6c 61 73 73 7b 24 63 6c |($superc|lass{$cl|
|00000d00| 61 73 73 7d 29 29 20 7b | 0a 20 20 20 20 20 20 20 |ass})) {|. |
|00000d10| 20 70 72 69 6e 74 20 22 | 6e 6f 20 73 75 63 68 20 | print "|no such |
|00000d20| 63 6c 61 73 73 3a 22 20 | 2e 20 24 63 6c 61 73 73 |class:" |. $class|
|00000d30| 20 2e 20 22 5c 6e 22 3b | 0a 20 20 20 20 20 20 20 | . "\n";|. |
|00000d40| 20 72 65 74 75 72 6e 20 | 2d 31 3b 0a 20 20 20 20 | return |-1;. |
|00000d50| 7d 0a 20 20 20 20 24 6d | 65 74 68 6f 64 73 7b 24 |}. $m|ethods{$|
|00000d60| 63 6c 61 73 73 7d 20 2e | 3d 20 22 24 6d 65 74 68 |class} .|= "$meth|
|00000d70| 6f 64 3a 22 3b 0a 20 20 | 20 20 24 64 65 66 73 20 |od:";. | $defs |
|00000d80| 3d 20 71 71 21 73 75 62 | 20 24 63 6c 61 73 73 27 |= qq!sub| $class'|
|00000d90| 24 6d 65 74 68 6f 64 20 | 7b 21 20 2e 0a 09 20 20 |$method |{! ... |
|00000da0| 20 20 20 71 21 6c 6f 63 | 61 6c 28 24 63 6f 6e 74 | q!loc|al($cont|
|00000db0| 65 78 74 29 20 3d 20 73 | 68 69 66 74 3b 20 21 20 |ext) = s|hift; ! |
|00000dc0| 2e 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 71 |.. | q|
|00000dd0| 21 65 76 61 6c 20 22 70 | 61 63 6b 61 67 65 20 24 |!eval "p|ackage $|
|00000de0| 63 6f 6e 74 65 78 74 3b | 22 20 2e 20 27 24 73 65 |context;|" . '$se|
|00000df0| 6c 66 20 3d 20 27 20 2e | 20 22 24 63 6f 6e 74 65 |lf = ' .| "$conte|
|00000e00| 78 74 3b 22 21 20 2e 0a | 20 20 20 20 20 20 20 20 |xt;"! ..| |
|00000e10| 20 20 20 20 20 71 71 21 | 2e 20 71 5c 30 30 31 21 | qq!|. q\001!|
|00000e20| 20 2e 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | .. | |
|00000e30| 24 62 6f 64 79 20 2e 20 | 71 71 21 5c 30 30 31 3b |$body . |qq!\001;|
|00000e40| 7d 3b 21 3b 0a 20 20 20 | 20 24 72 65 73 75 6c 74 |};!;. | $result|
|00000e50| 20 3d 20 65 76 61 6c 20 | 24 64 65 66 73 3b 0a 20 | = eval |$defs;. |
|00000e60| 20 20 20 70 72 69 6e 74 | 20 24 40 20 2e 20 22 5c | print| $@ . "\|
|00000e70| 6e 22 20 75 6e 6c 65 73 | 73 20 24 40 20 65 71 20 |n" unles|s $@ eq |
|00000e80| 27 27 3b 0a 20 20 20 20 | 24 72 65 73 75 6c 74 3b |'';. |$result;|
|00000e90| 0a 7d 0a 0a 23 0a 23 20 | 26 6e 65 77 6f 62 6a 65 |.}..#.# |&newobje|
|00000ea0| 63 74 28 63 6c 61 73 73 | 29 0a 23 0a 73 75 62 20 |ct(class|).#.sub |
|00000eb0| 6d 61 69 6e 27 6e 65 77 | 6f 62 6a 65 63 74 20 7b |main'new|object {|
|00000ec0| 0a 20 20 20 20 6c 6f 63 | 61 6c 28 24 63 6c 61 73 |. loc|al($clas|
|00000ed0| 73 29 20 3d 20 73 68 69 | 66 74 3b 20 23 20 63 6c |s) = shi|ft; # cl|
|00000ee0| 61 73 73 20 6e 61 6d 65 | 0a 20 20 20 20 6c 6f 63 |ass name|. loc|
|00000ef0| 61 6c 28 24 6e 65 77 6f | 62 6a 29 3b 0a 0a 20 20 |al($newo|bj);.. |
|00000f00| 20 20 69 66 20 28 21 64 | 65 66 69 6e 65 64 28 24 | if (!d|efined($|
|00000f10| 73 75 70 65 72 63 6c 61 | 73 73 7b 24 63 6c 61 73 |supercla|ss{$clas|
|00000f20| 73 7d 29 29 20 7b 0a 20 | 20 20 20 20 20 20 20 70 |s})) {. | p|
|00000f30| 72 69 6e 74 20 22 6e 6f | 20 73 75 63 68 20 63 6c |rint "no| such cl|
|00000f40| 61 73 73 3a 22 20 2e 20 | 24 63 6c 61 73 73 20 2e |ass:" . |$class .|
|00000f50| 20 22 5c 6e 22 3b 0a 20 | 20 20 20 20 20 20 20 72 | "\n";. | r|
|00000f60| 65 74 75 72 6e 20 2d 31 | 3b 0a 20 20 20 20 7d 0a |eturn -1|;. }.|
|00000f70| 0a 20 20 20 20 24 6e 65 | 77 6f 62 6a 20 3d 20 24 |. $ne|wobj = $|
|00000f80| 72 6f 6f 74 20 2e 20 24 | 73 61 6c 74 2b 2b 3b 0a |root . $|salt++;.|
|00000f90| 20 20 20 20 24 6d 79 63 | 6c 61 73 73 7b 24 6e 65 | $myc|lass{$ne|
|00000fa0| 77 6f 62 6a 7d 20 3d 20 | 24 63 6c 61 73 73 3b 0a |wobj} = |$class;.|
|00000fb0| 0a 20 20 20 20 26 6d 61 | 69 6e 27 73 65 6e 64 28 |. &ma|in'send(|
|00000fc0| 24 6e 65 77 6f 62 6a 2c | 20 27 69 6e 69 74 27 2c |$newobj,| 'init',|
|00000fd0| 20 40 5f 29 3b 20 23 20 | 63 61 6c 6c 20 69 6e 69 | @_); # |call ini|
|00000fe0| 74 20 77 69 74 68 20 61 | 72 67 73 0a 20 20 20 20 |t with a|rgs. |
|00000ff0| 72 65 74 75 72 6e 20 24 | 6e 65 77 6f 62 6a 3b 0a |return $|newobj;.|
|00001000| 7d 0a 0a 23 0a 23 20 26 | 73 65 6e 64 28 6f 62 6a |}..#.# &|send(obj|
|00001010| 65 63 74 2c 20 6d 65 74 | 68 6f 64 2c 20 61 72 67 |ect, met|hod, arg|
|00001020| 31 2c 20 61 72 67 32 2c | 20 2e 2e 2e 29 0a 23 0a |1, arg2,| ...).#.|
|00001030| 73 75 62 20 6d 61 69 6e | 27 73 65 6e 64 20 7b 0a |sub main|'send {.|
|00001040| 20 20 20 20 6c 6f 63 61 | 6c 28 24 6f 62 6a 65 63 | loca|l($objec|
|00001050| 74 29 20 3d 20 73 68 69 | 66 74 3b 20 23 20 6f 62 |t) = shi|ft; # ob|
|00001060| 6a 65 63 0a 20 20 20 20 | 6c 6f 63 61 6c 28 24 6d |jec. |local($m|
|00001070| 65 74 68 6f 64 29 20 3d | 20 73 68 69 66 74 3b 20 |ethod) =| shift; |
|00001080| 23 20 6d 65 74 68 6f 64 | 20 6e 61 6d 65 0a 20 20 |# method| name. |
|00001090| 20 20 6c 6f 63 61 6c 28 | 24 63 6c 61 73 73 2c 20 | local(|$class, |
|000010a0| 24 72 65 73 75 6c 74 2c | 20 24 78 79 7a 29 3b 0a |$result,| $xyz);.|
|000010b0| 0a 20 20 20 20 69 66 20 | 28 24 6d 61 69 6e 27 6d |. if |($main'm|
|000010c0| 73 67 74 72 61 63 65 20 | 21 3d 20 30 29 20 7b 0a |sgtrace |!= 0) {.|
|000010d0| 09 24 6d 73 67 6c 65 76 | 65 6c 20 2b 2b 3b 0a 09 |.$msglev|el ++;..|
|000010e0| 77 61 72 6e 20 22 5b 24 | 6d 73 67 6c 65 76 65 6c |warn "[$|msglevel|
|000010f0| 5d 3a 26 73 65 6e 64 28 | 24 6f 62 6a 65 63 74 2c |]:&send(|$object,|
|00001100| 20 24 6d 65 74 68 6f 64 | 2c 20 40 5f 29 22 3b 0a | $method|, @_)";.|
|00001110| 20 20 20 20 7d 0a 20 20 | 20 20 69 66 20 28 24 6f | }. | if ($o|
|00001120| 62 6a 65 63 74 20 21 7e | 20 2f 5e 6f 70 65 72 6c |bject !~| /^operl|
|00001130| 5f 2f 6f 29 20 7b 0a 20 | 20 20 20 20 20 20 20 77 |_/o) {. | w|
|00001140| 61 72 6e 20 22 6e 6f 20 | 73 75 63 68 20 6f 62 6a |arn "no |such obj|
|00001150| 65 63 74 3a 22 20 2e 20 | 24 6f 62 6a 65 63 74 20 |ect:" . |$object |
|00001160| 2e 20 22 5c 6e 22 3b 0a | 09 24 6d 73 67 6c 65 76 |. "\n";.|.$msglev|
|00001170| 65 6c 20 2d 2d 20 69 66 | 20 24 6d 61 69 6e 27 6d |el -- if| $main'm|
|00001180| 73 67 74 72 61 63 65 20 | 21 3d 20 30 3b 0a 20 20 |sgtrace |!= 0;. |
|00001190| 20 20 20 20 20 20 72 65 | 74 75 72 6e 20 2d 31 3b | re|turn -1;|
|000011a0| 0a 20 20 20 20 7d 0a 20 | 20 20 20 24 63 6c 61 73 |. }. | $clas|
|000011b0| 73 20 3d 20 20 24 6d 79 | 63 6c 61 73 73 7b 24 6f |s = $my|class{$o|
|000011c0| 62 6a 65 63 74 7d 3b 0a | 0a 20 20 20 20 77 68 69 |bject};.|. whi|
|000011d0| 6c 65 20 28 69 6e 64 65 | 78 28 24 6d 65 74 68 6f |le (inde|x($metho|
|000011e0| 64 73 7b 24 63 6c 61 73 | 73 7d 2c 20 22 24 6d 65 |ds{$clas|s}, "$me|
|000011f0| 74 68 6f 64 3a 22 29 20 | 3c 20 30 29 20 7b 0a 09 |thod:") |< 0) {..|
|00001200| 69 66 20 28 24 63 6c 61 | 73 73 20 65 71 20 27 72 |if ($cla|ss eq 'r|
|00001210| 6f 6f 74 27 29 20 7b 0a | 09 20 20 20 20 77 61 72 |oot') {.|. war|
|00001220| 6e 20 22 75 6e 6b 6e 6f | 77 6e 20 6d 65 73 73 61 |n "unkno|wn messa|
|00001230| 67 65 3a 22 20 2e 20 24 | 6d 65 74 68 6f 64 20 2e |ge:" . $|method .|
|00001240| 20 22 5c 6e 22 3b 0a 09 | 20 20 20 20 24 6d 73 67 | "\n";..| $msg|
|00001250| 6c 65 76 65 6c 20 2d 2d | 20 69 66 20 24 6d 61 69 |level --| if $mai|
|00001260| 6e 27 6d 73 67 74 72 61 | 63 65 20 21 3d 20 30 3b |n'msgtra|ce != 0;|
|00001270| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 72 65 74 |. | ret|
|00001280| 75 72 6e 20 75 6e 64 65 | 66 3b 0a 20 20 20 20 20 |urn unde|f;. |
|00001290| 20 20 20 7d 0a 20 20 20 | 20 20 20 20 20 24 63 6c | }. | $cl|
|000012a0| 61 73 73 20 3d 20 24 73 | 75 70 65 72 63 6c 61 73 |ass = $s|uperclas|
|000012b0| 73 7b 24 63 6c 61 73 73 | 7d 3b 20 23 20 63 68 61 |s{$class|}; # cha|
|000012c0| 69 6e 20 74 6f 20 73 75 | 70 65 72 20 63 6c 61 73 |in to su|per clas|
|000012d0| 73 0a 20 20 20 20 7d 0a | 20 20 20 20 24 78 79 7a |s. }.| $xyz|
|000012e0| 20 3d 20 22 24 63 6c 61 | 73 73 27 24 6d 65 74 68 | = "$cla|ss'$meth|
|000012f0| 6f 64 22 3b 20 23 20 73 | 75 62 72 6f 75 74 69 6e |od"; # s|ubroutin|
|00001300| 65 20 74 6f 20 62 65 20 | 69 6e 76 6f 6b 65 64 0a |e to be |invoked.|
|00001310| 20 20 20 20 24 72 65 73 | 75 6c 74 20 3d 20 64 6f | $res|ult = do|
|00001320| 20 24 78 79 7a 28 24 6f | 62 6a 65 63 74 2c 20 40 | $xyz($o|bject, @|
|00001330| 5f 29 3b 20 20 20 23 20 | 73 75 62 72 6f 75 74 69 |_); # |subrouti|
|00001340| 6e 65 20 63 61 6c 6c 0a | 20 20 20 20 70 72 69 6e |ne call.| prin|
|00001350| 74 20 24 40 20 2e 20 22 | 5c 6e 22 20 75 6e 6c 65 |t $@ . "|\n" unle|
|00001360| 73 73 20 24 40 20 65 71 | 20 27 27 3b 0a 20 20 20 |ss $@ eq| '';. |
|00001370| 20 69 66 20 28 24 6d 61 | 69 6e 27 6d 73 67 74 72 | if ($ma|in'msgtr|
|00001380| 61 63 65 20 21 3d 20 30 | 29 20 7b 0a 09 77 61 72 |ace != 0|) {..war|
|00001390| 6e 20 22 20 3d 3d 3e 20 | 22 20 2e 20 28 28 24 72 |n " ==> |" . (($r|
|000013a0| 65 73 75 6c 74 20 65 71 | 20 75 6e 64 65 66 29 20 |esult eq| undef) |
|000013b0| 3f 20 27 75 6e 64 65 66 | 27 20 3a 20 24 72 65 73 |? 'undef|' : $res|
|000013c0| 75 6c 74 29 20 2e 20 22 | 5c 6e 22 3b 0a 09 24 6d |ult) . "|\n";..$m|
|000013d0| 73 67 6c 65 76 65 6c 20 | 2d 2d 3b 0a 20 20 20 20 |sglevel |--;. |
|000013e0| 7d 0a 20 20 20 20 24 72 | 65 73 75 6c 74 3b 0a 7d |}. $r|esult;.}|
|000013f0| 0a 0a 23 0a 23 20 26 64 | 75 6d 70 63 6c 61 73 73 |..#.# &d|umpclass|
|00001400| 28 29 0a 23 0a 73 75 62 | 20 6d 61 69 6e 27 64 75 |().#.sub| main'du|
|00001410| 6d 70 63 6c 61 73 73 20 | 7b 0a 20 20 20 20 77 68 |mpclass |{. wh|
|00001420| 69 6c 65 20 28 28 24 6b | 65 79 2c 20 24 76 61 6c |ile (($k|ey, $val|
|00001430| 29 20 3d 20 65 61 63 68 | 20 25 73 75 70 65 72 63 |) = each| %superc|
|00001440| 6c 61 73 73 29 20 7b 0a | 09 70 72 69 6e 74 20 24 |lass) {.|.print $|
|00001450| 6b 65 79 20 2e 20 22 20 | 69 73 20 61 20 73 75 62 |key . " |is a sub|
|00001460| 63 6c 61 73 73 20 6f 66 | 20 22 20 2e 20 24 76 61 |class of| " . $va|
|00001470| 6c 20 2e 20 22 5c 6e 22 | 3b 0a 20 20 20 20 7d 0a |l . "\n"|;. }.|
|00001480| 7d 0a 0a 23 0a 23 20 69 | 6d 70 6f 72 74 61 6e 74 |}..#.# i|mportant|
|00001490| 20 62 75 69 6c 74 2d 69 | 6e 20 3a 20 27 72 6f 6f | built-i|n : 'roo|
|000014a0| 74 27 20 63 6c 61 73 73 | 0a 23 0a 24 73 75 70 65 |t' class|.#.$supe|
|000014b0| 72 63 6c 61 73 73 7b 27 | 72 6f 6f 74 27 7d 20 3d |rclass{'|root'} =|
|000014c0| 20 27 72 6f 6f 74 27 3b | 20 20 20 20 20 23 20 27 | 'root';| # '|
|000014d0| 72 6f 6f 74 27 20 69 73 | 20 74 68 65 20 73 75 70 |root' is| the sup|
|000014e0| 65 72 20 63 6c 61 73 73 | 20 6f 66 20 69 74 73 65 |er class| of itse|
|000014f0| 6c 66 2e 0a 26 6d 61 69 | 6e 27 64 65 66 6d 65 74 |lf..&mai|n'defmet|
|00001500| 68 6f 64 28 27 72 6f 6f | 74 27 2c 20 27 69 6e 69 |hod('roo|t', 'ini|
|00001510| 74 27 2c 20 27 27 29 3b | 20 23 20 64 6f 20 6e 6f |t', '');| # do no|
|00001520| 74 68 69 6e 67 0a 26 6d | 61 69 6e 27 64 65 66 6d |thing.&m|ain'defm|
|00001530| 65 74 68 6f 64 28 27 72 | 6f 6f 74 27 2c 20 27 63 |ethod('r|oot', 'c|
|00001540| 6c 61 73 73 27 2c 0a 71 | 21 0a 20 20 20 20 24 6f |lass',.q|!. $o|
|00001550| 70 65 72 6c 27 6d 79 63 | 6c 61 73 73 7b 24 73 65 |perl'myc|lass{$se|
|00001560| 6c 66 7d 3b 0a 20 21 29 | 3b 0a 26 6d 61 69 6e 27 |lf};. !)|;.&main'|
|00001570| 64 65 66 6d 65 74 68 6f | 64 28 27 72 6f 6f 74 27 |defmetho|d('root'|
|00001580| 2c 20 27 73 68 6f 77 5f | 70 61 72 65 6e 74 73 27 |, 'show_|parents'|
|00001590| 2c 0a 71 21 20 20 6c 6f | 63 61 6c 28 24 63 6c 61 |,.q! lo|cal($cla|
|000015a0| 73 73 29 20 3d 20 24 6f | 70 65 72 6c 27 6d 79 63 |ss) = $o|perl'myc|
|000015b0| 6c 61 73 73 7b 24 73 65 | 6c 66 7d 3b 0a 20 20 20 |lass{$se|lf};. |
|000015c0| 20 77 68 69 6c 65 20 28 | 24 63 6c 61 73 73 20 6e | while (|$class n|
|000015d0| 65 20 27 72 6f 6f 74 27 | 29 20 7b 0a 09 70 72 69 |e 'root'|) {..pri|
|000015e0| 6e 74 20 24 63 6c 61 73 | 73 20 2e 20 22 20 2d 3e |nt $clas|s . " ->|
|000015f0| 20 22 3b 0a 20 20 20 20 | 20 20 20 20 24 63 6c 61 | ";. | $cla|
|00001600| 73 73 20 3d 20 24 6f 70 | 65 72 6c 27 73 75 70 65 |ss = $op|erl'supe|
|00001610| 72 63 6c 61 73 73 7b 24 | 63 6c 61 73 73 7d 3b 20 |rclass{$|class}; |
|00001620| 23 20 63 68 61 69 6e 20 | 74 6f 20 74 68 65 20 73 |# chain |to the s|
|00001630| 75 70 65 72 20 63 6c 61 | 73 73 0a 20 20 20 20 7d |uper cla|ss. }|
|00001640| 0a 20 20 20 20 70 72 69 | 6e 74 20 22 72 6f 6f 74 |. pri|nt "root|
|00001650| 5c 6e 22 3b 0a 20 21 29 | 3b 0a 26 6d 61 69 6e 27 |\n";. !)|;.&main'|
|00001660| 64 65 66 6d 65 74 68 6f | 64 28 27 72 6f 6f 74 27 |defmetho|d('root'|
|00001670| 2c 20 27 73 68 6f 77 5f | 73 65 6c 66 27 2c 0a 71 |, 'show_|self',.q|
|00001680| 21 20 20 20 20 70 72 69 | 6e 74 20 22 63 6c 61 73 |! pri|nt "clas|
|00001690| 73 3a 22 20 2e 20 24 6f | 70 65 72 6c 27 6d 79 63 |s:" . $o|perl'myc|
|000016a0| 6c 61 73 73 7b 24 73 65 | 6c 66 7d 20 2e 20 22 5c |lass{$se|lf} . "\|
|000016b0| 6e 22 3b 0a 20 20 20 20 | 20 20 70 72 69 6e 74 20 |n";. | print |
|000016c0| 22 6d 65 74 68 6f 64 73 | 3a 22 20 2e 20 24 6f 70 |"methods|:" . $op|
|000016d0| 65 72 6c 27 6d 65 74 68 | 6f 64 73 7b 24 6f 70 65 |erl'meth|ods{$ope|
|000016e0| 72 6c 27 6d 79 63 6c 61 | 73 73 7b 24 73 65 6c 66 |rl'mycla|ss{$self|
|000016f0| 7d 7d 20 2e 20 22 5c 6e | 22 3b 0a 20 20 20 20 20 |}} . "\n|";. |
|00001700| 20 26 6d 61 69 6e 27 64 | 75 6d 70 76 61 72 28 24 | &main'd|umpvar($|
|00001710| 73 65 6c 66 29 3b 0a 20 | 21 29 3b 20 23 20 73 65 |self);. |!); # se|
|00001720| 6c 66 20 64 75 6d 70 0a | 0a 31 3b 0a 40 2f 2f 45 |lf dump.|.1;.@//E|
|00001730| 2a 4f 2a 46 20 6f 70 65 | 72 6c 2e 70 6c 2f 2f 0a |*O*F ope|rl.pl//.|
|00001740| 63 68 6d 6f 64 20 75 3d | 72 77 2c 67 3d 72 2c 6f |chmod u=|rw,g=r,o|
|00001750| 3d 72 20 6f 70 65 72 6c | 2e 70 6c 0a 20 0a 65 63 |=r operl|.pl. .ec|
|00001760| 68 6f 20 78 20 2d 20 70 | 6f 69 6e 74 2e 70 6c 0a |ho x - p|oint.pl.|
|00001770| 73 65 64 20 27 73 2f 5e | 40 2f 2f 27 20 3e 20 22 |sed 's/^|@//' > "|
|00001780| 70 6f 69 6e 74 2e 70 6c | 22 20 3c 3c 27 40 2f 2f |point.pl|" <<'@//|
|00001790| 45 2a 4f 2a 46 20 70 6f | 69 6e 74 2e 70 6c 2f 2f |E*O*F po|int.pl//|
|000017a0| 27 0a 23 21 2f 75 73 72 | 2f 62 69 6e 2f 70 65 72 |'.#!/usr|/bin/per|
|000017b0| 6c 0a 72 65 71 75 69 72 | 65 20 27 6f 70 65 72 6c |l.requir|e 'operl|
|000017c0| 2e 70 6c 27 3b 0a 0a 26 | 64 65 66 63 6c 61 73 73 |.pl';..&|defclass|
|000017d0| 20 28 27 70 6f 69 6e 74 | 27 2c 27 72 6f 6f 74 27 | ('point|','root'|
|000017e0| 29 3b 0a 26 64 65 66 6d | 65 74 68 6f 64 28 27 70 |);.&defm|ethod('p|
|000017f0| 6f 69 6e 74 27 2c 27 69 | 6e 69 74 27 2c 0a 20 20 |oint','i|nit',. |
|00001800| 20 20 27 24 78 78 20 3d | 20 64 65 66 69 6e 65 64 | '$xx =| defined|
|00001810| 28 24 5f 5b 30 5d 29 20 | 3f 20 24 5f 5b 30 5d 20 |($_[0]) |? $_[0] |
|00001820| 3a 20 30 3b 20 24 79 79 | 20 3d 20 64 65 66 69 6e |: 0; $yy| = defin|
|00001830| 65 64 28 24 5f 5b 31 5d | 29 20 3f 20 24 5f 5b 31 |ed($_[1]|) ? $_[1|
|00001840| 5d 20 3a 20 30 3b 27 29 | 3b 0a 26 64 65 66 6d 65 |] : 0;')|;.&defme|
|00001850| 74 68 6f 64 28 27 70 6f | 69 6e 74 27 2c 27 6d 6f |thod('po|int','mo|
|00001860| 76 65 27 2c 0a 20 20 20 | 20 27 24 78 78 20 3d 20 |ve',. | '$xx = |
|00001870| 64 65 66 69 6e 65 64 28 | 24 5f 5b 30 5d 29 20 3f |defined(|$_[0]) ?|
|00001880| 20 24 5f 5b 30 5d 20 3a | 20 24 78 78 3b 20 24 79 | $_[0] :| $xx; $y|
|00001890| 79 20 3d 20 64 65 66 69 | 6e 65 64 28 24 5f 5b 31 |y = defi|ned($_[1|
|000018a0| 5d 29 20 3f 20 24 5f 5b | 31 5d 20 3a 20 24 79 79 |]) ? $_[|1] : $yy|
|000018b0| 3b 27 29 3b 0a 26 64 65 | 66 6d 65 74 68 6f 64 28 |;');.&de|fmethod(|
|000018c0| 27 70 6f 69 6e 74 27 2c | 27 6d 6f 76 65 78 27 2c |'point',|'movex',|
|000018d0| 20 27 24 78 78 20 3d 20 | 64 65 66 69 6e 65 64 28 | '$xx = |defined(|
|000018e0| 24 5f 5b 30 5d 29 20 3f | 20 24 5f 5b 30 5d 20 3a |$_[0]) ?| $_[0] :|
|000018f0| 20 24 78 78 3b 27 29 3b | 0a 26 64 65 66 6d 65 74 | $xx;');|.&defmet|
|00001900| 68 6f 64 28 27 70 6f 69 | 6e 74 27 2c 27 6d 6f 76 |hod('poi|nt','mov|
|00001910| 65 79 27 2c 20 27 24 79 | 79 20 3d 20 64 65 66 69 |ey', '$y|y = defi|
|00001920| 6e 65 64 28 24 5f 5b 30 | 5d 29 20 3f 20 24 5f 5b |ned($_[0|]) ? $_[|
|00001930| 30 5d 20 3a 20 24 79 79 | 3b 27 29 3b 0a 26 64 65 |0] : $yy|;');.&de|
|00001940| 66 6d 65 74 68 6f 64 28 | 27 70 6f 69 6e 74 27 2c |fmethod(|'point',|
|00001950| 27 72 6d 6f 76 65 27 2c | 0a 20 20 20 20 27 24 78 |'rmove',|. '$x|
|00001960| 78 20 2b 3d 20 64 65 66 | 69 6e 65 64 28 24 5f 5b |x += def|ined($_[|
|00001970| 30 5d 29 20 3f 20 24 5f | 5b 30 5d 20 3a 20 30 3b |0]) ? $_|[0] : 0;|
|00001980| 20 24 79 79 20 2b 3d 20 | 64 65 66 69 6e 65 64 28 | $yy += |defined(|
|00001990| 24 5f 5b 31 5d 29 20 3f | 20 24 5f 5b 31 5d 20 3a |$_[1]) ?| $_[1] :|
|000019a0| 20 30 3b 27 29 3b 0a 26 | 64 65 66 6d 65 74 68 6f | 0;');.&|defmetho|
|000019b0| 64 28 27 70 6f 69 6e 74 | 27 2c 27 72 6d 6f 76 65 |d('point|','rmove|
|000019c0| 78 27 2c 20 27 24 78 78 | 20 2b 3d 20 64 65 66 69 |x', '$xx| += defi|
|000019d0| 6e 65 64 28 24 5f 5b 30 | 5d 29 20 3f 20 24 5f 5b |ned($_[0|]) ? $_[|
|000019e0| 30 5d 20 3a 20 30 3b 27 | 29 3b 0a 26 64 65 66 6d |0] : 0;'|);.&defm|
|000019f0| 65 74 68 6f 64 28 27 70 | 6f 69 6e 74 27 2c 27 72 |ethod('p|oint','r|
|00001a00| 6d 6f 76 65 79 27 2c 20 | 27 24 79 79 20 2b 3d 20 |movey', |'$yy += |
|00001a10| 64 65 66 69 6e 65 64 28 | 24 5f 5b 30 5d 29 20 3f |defined(|$_[0]) ?|
|00001a20| 20 24 5f 5b 30 5d 20 3a | 20 30 3b 27 29 3b 0a 26 | $_[0] :| 0;');.&|
|00001a30| 64 65 66 6d 65 74 68 6f | 64 28 27 70 6f 69 6e 74 |defmetho|d('point|
|00001a40| 27 2c 27 78 27 2c 20 27 | 24 78 78 3b 27 29 3b 0a |','x', '|$xx;');.|
|00001a50| 26 64 65 66 6d 65 74 68 | 6f 64 28 27 70 6f 69 6e |&defmeth|od('poin|
|00001a60| 74 27 2c 27 79 27 2c 20 | 27 24 79 79 3b 27 29 3b |t','y', |'$yy;');|
|00001a70| 0a 0a 31 3b 0a 40 2f 2f | 45 2a 4f 2a 46 20 70 6f |..1;.@//|E*O*F po|
|00001a80| 69 6e 74 2e 70 6c 2f 2f | 0a 63 68 6d 6f 64 20 75 |int.pl//|.chmod u|
|00001a90| 3d 72 2c 67 3d 72 2c 6f | 3d 72 20 70 6f 69 6e 74 |=r,g=r,o|=r point|
|00001aa0| 2e 70 6c 0a 20 0a 65 63 | 68 6f 20 78 20 2d 20 73 |.pl. .ec|ho x - s|
|00001ab0| 65 74 2e 70 6c 0a 73 65 | 64 20 27 73 2f 5e 40 2f |et.pl.se|d 's/^@/|
|00001ac0| 2f 27 20 3e 20 22 73 65 | 74 2e 70 6c 22 20 3c 3c |/' > "se|t.pl" <<|
|00001ad0| 27 40 2f 2f 45 2a 4f 2a | 46 20 73 65 74 2e 70 6c |'@//E*O*|F set.pl|
|00001ae0| 2f 2f 27 0a 23 21 2f 75 | 73 72 2f 62 69 6e 2f 70 |//'.#!/u|sr/bin/p|
|00001af0| 65 72 6c 0a 72 65 71 75 | 69 72 65 20 27 62 61 67 |erl.requ|ire 'bag|
|00001b00| 2e 70 6c 27 3b 0a 0a 26 | 64 65 66 63 6c 61 73 73 |.pl';..&|defclass|
|00001b10| 20 28 27 73 65 74 27 2c | 27 62 61 67 27 29 3b 0a | ('set',|'bag');.|
|00001b20| 26 64 65 66 6d 65 74 68 | 6f 64 28 27 73 65 74 27 |&defmeth|od('set'|
|00001b30| 2c 27 70 75 74 27 2c 20 | 20 20 20 27 24 65 6c 65 |,'put', | '$ele|
|00001b40| 6d 65 6e 74 73 7b 24 5f | 5b 30 5d 7d 3d 31 3b 27 |ments{$_|[0]}=1;'|
|00001b50| 29 3b 0a 26 64 65 66 6d | 65 74 68 6f 64 28 27 73 |);.&defm|ethod('s|
|00001b60| 65 74 27 2c 27 73 69 7a | 65 27 2c 20 20 20 27 6c |et','siz|e', 'l|
|00001b70| 65 6e 67 74 68 28 25 65 | 6c 65 6d 65 6e 74 73 29 |ength(%e|lements)|
|00001b80| 3b 27 29 3b 0a 0a 31 3b | 0a 40 2f 2f 45 2a 4f 2a |;');..1;|.@//E*O*|
|00001b90| 46 20 73 65 74 2e 70 6c | 2f 2f 0a 63 68 6d 6f 64 |F set.pl|//.chmod|
|00001ba0| 20 75 3d 72 2c 67 3d 72 | 2c 6f 3d 72 20 73 65 74 | u=r,g=r|,o=r set|
|00001bb0| 2e 70 6c 0a 20 0a 65 63 | 68 6f 20 78 20 2d 20 73 |.pl. .ec|ho x - s|
|00001bc0| 74 61 63 6b 2e 70 6c 0a | 73 65 64 20 27 73 2f 5e |tack.pl.|sed 's/^|
|00001bd0| 40 2f 2f 27 20 3e 20 22 | 73 74 61 63 6b 2e 70 6c |@//' > "|stack.pl|
|00001be0| 22 20 3c 3c 27 40 2f 2f | 45 2a 4f 2a 46 20 73 74 |" <<'@//|E*O*F st|
|00001bf0| 61 63 6b 2e 70 6c 2f 2f | 27 0a 23 21 2f 75 73 72 |ack.pl//|'.#!/usr|
|00001c00| 2f 62 69 6e 2f 70 65 72 | 6c 0a 72 65 71 75 69 72 |/bin/per|l.requir|
|00001c10| 65 20 27 6f 70 65 72 6c | 2e 70 6c 27 3b 0a 0a 26 |e 'operl|.pl';..&|
|00001c20| 64 65 66 63 6c 61 73 73 | 20 28 27 73 74 61 63 6b |defclass| ('stack|
|00001c30| 27 2c 27 72 6f 6f 74 27 | 29 3b 0a 26 64 65 66 6d |','root'|);.&defm|
|00001c40| 65 74 68 6f 64 28 27 73 | 74 61 63 6b 27 2c 27 69 |ethod('s|tack','i|
|00001c50| 6e 69 74 27 2c 27 24 69 | 6e 78 20 3d 20 30 27 29 |nit','$i|nx = 0')|
|00001c60| 3b 0a 26 64 65 66 6d 65 | 74 68 6f 64 28 27 73 74 |;.&defme|thod('st|
|00001c70| 61 63 6b 27 2c 27 70 75 | 73 68 27 2c 27 24 73 74 |ack','pu|sh','$st|
|00001c80| 6b 5b 24 69 6e 78 2b 2b | 5d 20 3d 20 24 5f 5b 30 |k[$inx++|] = $_[0|
|00001c90| 5d 3b 27 29 3b 0a 26 64 | 65 66 6d 65 74 68 6f 64 |];');.&d|efmethod|
|00001ca0| 28 27 73 74 61 63 6b 27 | 2c 27 70 6f 70 27 2c 0a |('stack'|,'pop',.|
|00001cb0| 09 20 20 20 27 77 61 72 | 6e 20 22 77 61 72 6e 3a |. 'war|n "warn:|
|00001cc0| 20 65 6d 70 74 79 20 73 | 74 61 63 6b 2e 5c 6e 22 | empty s|tack.\n"|
|00001cd0| 20 69 66 20 28 24 69 6e | 78 20 3c 3d 20 30 29 3b | if ($in|x <= 0);|
|00001ce0| 24 69 6e 78 20 2d 2d 20 | 69 66 20 24 69 6e 78 20 |$inx -- |if $inx |
|00001cf0| 3e 20 30 3b 27 29 3b 0a | 26 64 65 66 6d 65 74 68 |> 0;');.|&defmeth|
|00001d00| 6f 64 28 27 73 74 61 63 | 6b 27 2c 27 74 6f 70 27 |od('stac|k','top'|
|00001d10| 2c 0a 09 20 20 20 27 77 | 61 72 6e 20 22 77 61 72 |,.. 'w|arn "war|
|00001d20| 6e 3a 20 65 6d 70 74 79 | 20 73 74 61 63 6b 2e 5c |n: empty| stack.\|
|00001d30| 6e 22 20 69 66 20 28 24 | 69 6e 78 20 3c 3d 20 30 |n" if ($|inx <= 0|
|00001d40| 29 3b 24 73 74 6b 5b 24 | 69 6e 78 20 2d 20 31 5d |);$stk[$|inx - 1]|
|00001d50| 27 29 3b 0a 26 64 65 66 | 6d 65 74 68 6f 64 28 27 |');.&def|method('|
|00001d60| 73 74 61 63 6b 27 2c 27 | 6c 65 6e 67 74 68 27 2c |stack','|length',|
|00001d70| 27 24 69 6e 78 3b 27 29 | 3b 0a 26 64 65 66 6d 65 |'$inx;')|;.&defme|
|00001d80| 74 68 6f 64 28 27 73 74 | 61 63 6b 27 2c 27 64 75 |thod('st|ack','du|
|00001d90| 6d 70 27 2c 27 66 6f 72 | 65 61 63 68 20 24 69 74 |mp','for|each $it|
|00001da0| 65 6d 20 28 40 73 74 6b | 29 20 7b 70 72 69 6e 74 |em (@stk|) {print|
|00001db0| 20 22 28 22 20 2e 20 24 | 69 74 65 6d 20 2e 20 22 | "(" . $|item . "|
|00001dc0| 29 5c 6e 22 3b 7d 27 29 | 3b 0a 0a 31 3b 0a 40 2f |)\n";}')|;..1;.@/|
|00001dd0| 2f 45 2a 4f 2a 46 20 73 | 74 61 63 6b 2e 70 6c 2f |/E*O*F s|tack.pl/|
|00001de0| 2f 0a 63 68 6d 6f 64 20 | 75 3d 72 2c 67 3d 72 2c |/.chmod |u=r,g=r,|
|00001df0| 6f 3d 72 20 73 74 61 63 | 6b 2e 70 6c 0a 20 0a 65 |o=r stac|k.pl. .e|
|00001e00| 63 68 6f 20 78 20 2d 20 | 73 61 6d 70 6c 65 31 0a |cho x - |sample1.|
|00001e10| 73 65 64 20 27 73 2f 5e | 40 2f 2f 27 20 3e 20 22 |sed 's/^|@//' > "|
|00001e20| 73 61 6d 70 6c 65 31 22 | 20 3c 3c 27 40 2f 2f 45 |sample1"| <<'@//E|
|00001e30| 2a 4f 2a 46 20 73 61 6d | 70 6c 65 31 2f 2f 27 0a |*O*F sam|ple1//'.|
|00001e40| 23 21 2f 75 73 72 2f 62 | 69 6e 2f 70 65 72 6c 0a |#!/usr/b|in/perl.|
|00001e50| 72 65 71 75 69 72 65 20 | 27 6f 70 65 72 6c 2e 70 |require |'operl.p|
|00001e60| 6c 27 3b 0a 0a 26 64 65 | 66 63 6c 61 73 73 28 27 |l';..&de|fclass('|
|00001e70| 68 65 6c 6c 6f 27 2c 20 | 27 72 6f 6f 74 27 29 3b |hello', |'root');|
|00001e80| 0a 26 64 65 66 63 6c 61 | 73 73 28 27 68 65 68 65 |.&defcla|ss('hehe|
|00001e90| 27 2c 20 27 68 65 6c 6c | 6f 27 29 3b 0a 26 64 65 |', 'hell|o');.&de|
|00001ea0| 66 63 6c 61 73 73 28 27 | 66 75 66 75 27 2c 20 27 |fclass('|fufu', '|
|00001eb0| 68 65 68 65 27 29 3b 0a | 0a 26 64 75 6d 70 63 6c |hehe');.|.&dumpcl|
|00001ec0| 61 73 73 28 29 3b 0a 0a | 40 2f 2f 45 2a 4f 2a 46 |ass();..|@//E*O*F|
|00001ed0| 20 73 61 6d 70 6c 65 31 | 2f 2f 0a 63 68 6d 6f 64 | sample1|//.chmod|
|00001ee0| 20 75 3d 72 77 78 2c 67 | 3d 72 77 78 2c 6f 3d 72 | u=rwx,g|=rwx,o=r|
|00001ef0| 78 20 73 61 6d 70 6c 65 | 31 0a 20 0a 65 63 68 6f |x sample|1. .echo|
|00001f00| 20 78 20 2d 20 73 61 6d | 70 6c 65 32 0a 73 65 64 | x - sam|ple2.sed|
|00001f10| 20 27 73 2f 5e 40 2f 2f | 27 20 3e 20 22 73 61 6d | 's/^@//|' > "sam|
|00001f20| 70 6c 65 32 22 20 3c 3c | 27 40 2f 2f 45 2a 4f 2a |ple2" <<|'@//E*O*|
|00001f30| 46 20 73 61 6d 70 6c 65 | 32 2f 2f 27 0a 23 21 2f |F sample|2//'.#!/|
|00001f40| 75 73 72 2f 62 69 6e 2f | 70 65 72 6c 0a 72 65 71 |usr/bin/|perl.req|
|00001f50| 75 69 72 65 20 27 6f 70 | 65 72 6c 2e 70 6c 27 3b |uire 'op|erl.pl';|
|00001f60| 0a 0a 23 20 64 65 66 69 | 6e 65 20 6e 65 77 20 63 |..# defi|ne new c|
|00001f70| 6c 61 73 73 20 27 68 65 | 6c 6c 6f 27 20 61 73 20 |lass 'he|llo' as |
|00001f80| 73 75 62 63 6c 61 73 73 | 20 6f 66 20 27 72 6f 6f |subclass| of 'roo|
|00001f90| 74 27 0a 26 64 65 66 63 | 6c 61 73 73 20 28 27 68 |t'.&defc|lass ('h|
|00001fa0| 65 6c 6c 6f 27 2c 20 27 | 72 6f 6f 74 27 29 3b 0a |ello', '|root');.|
|00001fb0| 0a 23 20 27 69 6e 69 74 | 27 20 6d 65 74 68 6f 64 |.# 'init|' method|
|00001fc0| 20 77 69 6c 6c 20 62 65 | 20 69 6e 76 6f 6b 65 64 | will be| invoked|
|00001fd0| 20 6f 6e 20 63 72 65 61 | 74 69 6e 67 20 61 6e 20 | on crea|ting an |
|00001fe0| 6f 62 6a 65 63 74 0a 26 | 64 65 66 6d 65 74 68 6f |object.&|defmetho|
|00001ff0| 64 28 27 68 65 6c 6c 6f | 27 2c 20 27 69 6e 69 74 |d('hello|', 'init|
|00002000| 27 2c 20 27 24 69 20 3d | 20 30 3b 27 29 3b 0a 0a |', '$i =| 0;');..|
|00002010| 23 20 6d 65 74 68 6f 64 | 20 27 61 64 64 31 27 20 |# method| 'add1' |
|00002020| 61 64 64 73 20 31 20 74 | 6f 20 24 69 0a 26 64 65 |adds 1 t|o $i.&de|
|00002030| 66 6d 65 74 68 6f 64 28 | 27 68 65 6c 6c 6f 27 2c |fmethod(|'hello',|
|00002040| 20 27 61 64 64 31 27 2c | 20 27 24 69 2b 2b 3b 27 | 'add1',| '$i++;'|
|00002050| 29 3b 0a 0a 23 20 6d 65 | 74 68 6f 64 20 27 73 68 |);..# me|thod 'sh|
|00002060| 6f 77 27 20 73 68 6f 77 | 73 20 74 68 65 20 76 61 |ow' show|s the va|
|00002070| 6c 75 65 20 6f 66 20 24 | 69 0a 26 64 65 66 6d 65 |lue of $|i.&defme|
|00002080| 74 68 6f 64 28 27 68 65 | 6c 6c 6f 27 2c 20 27 73 |thod('he|llo', 's|
|00002090| 68 6f 77 27 2c 20 27 70 | 72 69 6e 74 20 22 2d 3e |how', 'p|rint "->|
|000020a0| 20 22 20 2e 20 24 69 20 | 2e 20 22 5c 6e 22 3b 27 | " . $i |. "\n";'|
|000020b0| 29 3b 0a 0a 24 6f 31 20 | 3d 20 26 6e 65 77 6f 62 |);..$o1 |= &newob|
|000020c0| 6a 65 63 74 28 27 68 65 | 6c 6c 6f 27 29 3b 0a 24 |ject('he|llo');.$|
|000020d0| 6f 32 20 3d 20 26 6e 65 | 77 6f 62 6a 65 63 74 28 |o2 = &ne|wobject(|
|000020e0| 27 68 65 6c 6c 6f 27 29 | 3b 0a 0a 70 72 69 6e 74 |'hello')|;..print|
|000020f0| 20 22 66 69 72 73 74 20 | 20 6f 62 6a 65 63 74 3d | "first | object=|
|00002100| 22 20 2e 20 24 6f 31 20 | 2e 20 22 5c 6e 22 3b 0a |" . $o1 |. "\n";.|
|00002110| 70 72 69 6e 74 20 22 73 | 65 63 6f 6e 64 20 6f 62 |print "s|econd ob|
|00002120| 6a 65 63 74 3d 22 20 2e | 20 24 6f 32 20 2e 20 22 |ject=" .| $o2 . "|
|00002130| 5c 6e 22 3b 0a 0a 70 72 | 69 6e 74 20 22 41 70 70 |\n";..pr|int "App|
|00002140| 6c 79 20 73 65 76 65 72 | 61 6c 20 6f 70 65 72 61 |ly sever|al opera|
|00002150| 74 69 6f 6e 73 20 6f 6e | 20 24 6f 31 5c 6e 22 3b |tions on| $o1\n";|
|00002160| 0a 26 73 65 6e 64 28 24 | 6f 31 2c 20 27 61 64 64 |.&send($|o1, 'add|
|00002170| 31 27 29 3b 0a 26 73 65 | 6e 64 28 24 6f 31 2c 20 |1');.&se|nd($o1, |
|00002180| 27 73 68 6f 77 27 29 3b | 0a 26 73 65 6e 64 28 24 |'show');|.&send($|
|00002190| 6f 31 2c 20 27 61 64 64 | 31 27 29 3b 0a 26 73 65 |o1, 'add|1');.&se|
|000021a0| 6e 64 28 24 6f 31 2c 20 | 27 73 68 6f 77 27 29 3b |nd($o1, |'show');|
|000021b0| 0a 26 73 65 6e 64 28 24 | 6f 31 2c 20 27 61 64 64 |.&send($|o1, 'add|
|000021c0| 31 27 29 3b 0a 26 73 65 | 6e 64 28 24 6f 31 2c 20 |1');.&se|nd($o1, |
|000021d0| 27 73 68 6f 77 27 29 3b | 0a 26 73 65 6e 64 28 24 |'show');|.&send($|
|000021e0| 6f 31 2c 20 27 61 64 64 | 31 27 29 3b 0a 26 73 65 |o1, 'add|1');.&se|
|000021f0| 6e 64 28 24 6f 31 2c 20 | 27 73 68 6f 77 27 29 3b |nd($o1, |'show');|
|00002200| 0a 0a 70 72 69 6e 74 20 | 22 53 65 65 3f 20 54 68 |..print |"See? Th|
|00002210| 65 72 65 20 69 73 20 6e | 6f 20 63 68 61 6e 67 65 |ere is n|o change|
|00002220| 20 69 6e 20 24 6f 32 5c | 6e 22 3b 0a 26 73 65 6e | in $o2\|n";.&sen|
|00002230| 64 28 24 6f 32 2c 20 27 | 73 68 6f 77 27 29 3b 0a |d($o2, '|show');.|
|00002240| 0a 26 64 75 6d 70 63 6c | 61 73 73 28 29 3b 0a 40 |.&dumpcl|ass();.@|
|00002250| 2f 2f 45 2a 4f 2a 46 20 | 73 61 6d 70 6c 65 32 2f |//E*O*F |sample2/|
|00002260| 2f 0a 63 68 6d 6f 64 20 | 75 3d 72 77 78 2c 67 3d |/.chmod |u=rwx,g=|
|00002270| 72 77 78 2c 6f 3d 72 78 | 20 73 61 6d 70 6c 65 32 |rwx,o=rx| sample2|
|00002280| 0a 20 0a 65 63 68 6f 20 | 78 20 2d 20 73 61 6d 70 |. .echo |x - samp|
|00002290| 6c 65 33 0a 73 65 64 20 | 27 73 2f 5e 40 2f 2f 27 |le3.sed |'s/^@//'|
|000022a0| 20 3e 20 22 73 61 6d 70 | 6c 65 33 22 20 3c 3c 27 | > "samp|le3" <<'|
|000022b0| 40 2f 2f 45 2a 4f 2a 46 | 20 73 61 6d 70 6c 65 33 |@//E*O*F| sample3|
|000022c0| 2f 2f 27 0a 23 21 2f 75 | 73 72 2f 62 69 6e 2f 70 |//'.#!/u|sr/bin/p|
|000022d0| 65 72 6c 0a 72 65 71 75 | 69 72 65 20 27 73 65 74 |erl.requ|ire 'set|
|000022e0| 2e 70 6c 27 3b 0a 0a 24 | 73 65 74 31 20 3d 20 26 |.pl';..$|set1 = &|
|000022f0| 6e 65 77 6f 62 6a 65 63 | 74 28 27 73 65 74 27 29 |newobjec|t('set')|
|00002300| 3b 20 23 20 45 6c 65 6d | 65 6e 74 73 20 63 61 6e |; # Elem|ents can|
|00002310| 27 74 20 64 75 70 6c 69 | 63 61 74 65 20 69 6e 20 |'t dupli|cate in |
|00002320| 73 65 74 20 63 6c 61 73 | 73 0a 24 62 61 67 31 20 |set clas|s.$bag1 |
|00002330| 3d 20 26 6e 65 77 6f 62 | 6a 65 63 74 28 27 62 61 |= &newob|ject('ba|
|00002340| 67 27 29 3b 20 23 20 45 | 6c 65 6d 65 6e 74 73 20 |g'); # E|lements |
|00002350| 63 61 6e 20 64 75 70 6c | 69 63 61 74 65 20 69 6e |can dupl|icate in|
|00002360| 20 62 61 67 20 63 6c 61 | 73 73 0a 0a 70 72 69 6e | bag cla|ss..prin|
|00002370| 74 20 22 2a 2a 20 73 65 | 74 20 2a 2a 5c 6e 22 3b |t "** se|t **\n";|
|00002380| 0a 26 73 65 6e 64 28 24 | 73 65 74 31 2c 20 27 70 |.&send($|set1, 'p|
|00002390| 75 74 27 2c 20 27 62 61 | 6e 61 6e 61 27 29 3b 0a |ut', 'ba|nana');.|
|000023a0| 26 73 65 6e 64 28 24 73 | 65 74 31 2c 20 27 70 75 |&send($s|et1, 'pu|
|000023b0| 74 27 2c 20 27 61 70 70 | 6c 65 27 29 3b 0a 26 73 |t', 'app|le');.&s|
|000023c0| 65 6e 64 28 24 73 65 74 | 31 2c 20 27 70 75 74 27 |end($set|1, 'put'|
|000023d0| 2c 20 27 6f 72 61 6e 67 | 65 27 29 3b 0a 26 73 65 |, 'orang|e');.&se|
|000023e0| 6e 64 28 24 73 65 74 31 | 2c 20 27 70 75 74 27 2c |nd($set1|, 'put',|
|000023f0| 20 27 6f 72 61 6e 67 65 | 27 29 3b 0a 26 73 65 6e | 'orange|');.&sen|
|00002400| 64 28 24 73 65 74 31 2c | 20 27 70 75 74 27 2c 20 |d($set1,| 'put', |
|00002410| 27 6f 72 61 6e 67 65 27 | 29 3b 0a 0a 70 72 69 6e |'orange'|);..prin|
|00002420| 74 20 22 4f 72 61 6e 67 | 65 20 54 6f 74 61 6c 3d |t "Orang|e Total=|
|00002430| 22 20 2e 20 26 73 65 6e | 64 28 24 73 65 74 31 2c |" . &sen|d($set1,|
|00002440| 20 27 68 6f 77 5f 6d 61 | 6e 79 27 2c 20 27 6f 72 | 'how_ma|ny', 'or|
|00002450| 61 6e 67 65 27 29 20 2e | 20 22 5c 6e 22 3b 0a 26 |ange') .| "\n";.&|
|00002460| 73 65 6e 64 28 24 73 65 | 74 31 2c 20 27 64 75 6d |send($se|t1, 'dum|
|00002470| 70 27 29 3b 0a 26 73 65 | 6e 64 28 24 73 65 74 31 |p');.&se|nd($set1|
|00002480| 2c 20 27 73 68 6f 77 5f | 73 65 6c 66 27 29 3b 0a |, 'show_|self');.|
|00002490| 0a 26 73 65 6e 64 28 24 | 73 65 74 31 2c 20 27 64 |.&send($|set1, 'd|
|000024a0| 65 6c 65 74 65 27 2c 20 | 27 6f 72 61 6e 67 65 27 |elete', |'orange'|
|000024b0| 29 3b 0a 0a 70 72 69 6e | 74 20 22 4f 72 61 6e 67 |);..prin|t "Orang|
|000024c0| 65 20 54 6f 74 61 6c 3d | 22 20 2e 20 26 73 65 6e |e Total=|" . &sen|
|000024d0| 64 28 24 73 65 74 31 2c | 20 27 68 6f 77 5f 6d 61 |d($set1,| 'how_ma|
|000024e0| 6e 79 27 2c 20 27 6f 72 | 61 6e 67 65 27 29 20 2e |ny', 'or|ange') .|
|000024f0| 20 22 5c 6e 22 3b 0a 26 | 73 65 6e 64 28 24 73 65 | "\n";.&|send($se|
|00002500| 74 31 2c 20 27 64 75 6d | 70 27 29 3b 0a 26 73 65 |t1, 'dum|p');.&se|
|00002510| 6e 64 28 24 73 65 74 31 | 2c 20 27 73 68 6f 77 5f |nd($set1|, 'show_|
|00002520| 73 65 6c 66 27 29 3b 0a | 0a 70 72 69 6e 74 20 22 |self');.|.print "|
|00002530| 2a 2a 20 62 61 67 20 2a | 2a 5c 6e 22 3b 0a 26 73 |** bag *|*\n";.&s|
|00002540| 65 6e 64 28 24 62 61 67 | 31 2c 20 27 70 75 74 27 |end($bag|1, 'put'|
|00002550| 2c 20 27 62 61 6e 61 6e | 61 27 29 3b 0a 26 73 65 |, 'banan|a');.&se|
|00002560| 6e 64 28 24 62 61 67 31 | 2c 20 27 70 75 74 27 2c |nd($bag1|, 'put',|
|00002570| 20 27 61 70 70 6c 65 27 | 29 3b 0a 26 73 65 6e 64 | 'apple'|);.&send|
|00002580| 28 24 62 61 67 31 2c 20 | 27 70 75 74 27 2c 20 27 |($bag1, |'put', '|
|00002590| 6f 72 61 6e 67 65 27 29 | 3b 0a 26 73 65 6e 64 28 |orange')|;.&send(|
|000025a0| 24 62 61 67 31 2c 20 27 | 70 75 74 27 2c 20 27 6f |$bag1, '|put', 'o|
|000025b0| 72 61 6e 67 65 27 29 3b | 0a 26 73 65 6e 64 28 24 |range');|.&send($|
|000025c0| 62 61 67 31 2c 20 27 70 | 75 74 27 2c 20 27 6f 72 |bag1, 'p|ut', 'or|
|000025d0| 61 6e 67 65 27 29 3b 0a | 0a 70 72 69 6e 74 20 22 |ange');.|.print "|
|000025e0| 4f 72 61 6e 67 65 20 54 | 6f 74 61 6c 3d 22 20 2e |Orange T|otal=" .|
|000025f0| 20 26 73 65 6e 64 28 24 | 62 61 67 31 2c 20 27 68 | &send($|bag1, 'h|
|00002600| 6f 77 5f 6d 61 6e 79 27 | 2c 20 27 6f 72 61 6e 67 |ow_many'|, 'orang|
|00002610| 65 27 29 20 2e 20 22 5c | 6e 22 3b 0a 26 73 65 6e |e') . "\|n";.&sen|
|00002620| 64 28 24 62 61 67 31 2c | 20 27 64 75 6d 70 27 29 |d($bag1,| 'dump')|
|00002630| 3b 0a 26 73 65 6e 64 28 | 24 62 61 67 31 2c 20 27 |;.&send(|$bag1, '|
|00002640| 73 68 6f 77 5f 73 65 6c | 66 27 29 3b 0a 0a 26 73 |show_sel|f');..&s|
|00002650| 65 6e 64 28 24 62 61 67 | 31 2c 20 27 64 65 6c 65 |end($bag|1, 'dele|
|00002660| 74 65 27 2c 20 27 6f 72 | 61 6e 67 65 27 29 3b 0a |te', 'or|ange');.|
|00002670| 0a 70 72 69 6e 74 20 22 | 4f 72 61 6e 67 65 20 54 |.print "|Orange T|
|00002680| 6f 74 61 6c 3d 22 20 2e | 20 26 73 65 6e 64 28 24 |otal=" .| &send($|
|00002690| 62 61 67 31 2c 20 27 68 | 6f 77 5f 6d 61 6e 79 27 |bag1, 'h|ow_many'|
|000026a0| 2c 20 27 6f 72 61 6e 67 | 65 27 29 20 2e 20 22 5c |, 'orang|e') . "\|
|000026b0| 6e 22 3b 0a 26 73 65 6e | 64 28 24 62 61 67 31 2c |n";.&sen|d($bag1,|
|000026c0| 20 27 64 75 6d 70 27 29 | 3b 0a 26 73 65 6e 64 28 | 'dump')|;.&send(|
|000026d0| 24 62 61 67 31 2c 20 27 | 73 68 6f 77 5f 73 65 6c |$bag1, '|show_sel|
|000026e0| 66 27 29 3b 0a 40 2f 2f | 45 2a 4f 2a 46 20 73 61 |f');.@//|E*O*F sa|
|000026f0| 6d 70 6c 65 33 2f 2f 0a | 63 68 6d 6f 64 20 75 3d |mple3//.|chmod u=|
|00002700| 72 77 78 2c 67 3d 72 77 | 78 2c 6f 3d 72 78 20 73 |rwx,g=rw|x,o=rx s|
|00002710| 61 6d 70 6c 65 33 0a 20 | 0a 65 63 68 6f 20 78 20 |ample3. |.echo x |
|00002720| 2d 20 73 61 6d 70 6c 65 | 34 0a 73 65 64 20 27 73 |- sample|4.sed 's|
|00002730| 2f 5e 40 2f 2f 27 20 3e | 20 22 73 61 6d 70 6c 65 |/^@//' >| "sample|
|00002740| 34 22 20 3c 3c 27 40 2f | 2f 45 2a 4f 2a 46 20 73 |4" <<'@/|/E*O*F s|
|00002750| 61 6d 70 6c 65 34 2f 2f | 27 0a 23 21 2f 75 73 72 |ample4//|'.#!/usr|
|00002760| 2f 62 69 6e 2f 70 65 72 | 6c 0a 72 65 71 75 69 72 |/bin/per|l.requir|
|00002770| 65 20 27 73 74 61 63 6b | 2e 70 6c 27 3b 0a 0a 23 |e 'stack|.pl';..#|
|00002780| 20 63 72 65 61 74 65 20 | 74 77 6f 20 69 6e 73 74 | create |two inst|
|00002790| 61 6e 63 65 73 20 6f 66 | 20 63 6c 61 73 73 20 27 |ances of| class '|
|000027a0| 73 74 61 63 6b 27 0a 24 | 73 31 20 3d 20 26 6e 65 |stack'.$|s1 = &ne|
|000027b0| 77 6f 62 6a 65 63 74 28 | 27 73 74 61 63 6b 27 29 |wobject(|'stack')|
|000027c0| 3b 0a 24 73 32 20 3d 20 | 26 6e 65 77 6f 62 6a 65 |;.$s2 = |&newobje|
|000027d0| 63 74 28 27 73 74 61 63 | 6b 27 29 3b 0a 0a 23 20 |ct('stac|k');..# |
|000027e0| 70 75 73 68 20 69 74 65 | 6d 73 20 6f 6e 74 6f 20 |push ite|ms onto |
|000027f0| 73 74 61 63 6b 20 24 73 | 31 0a 26 73 65 6e 64 28 |stack $s|1.&send(|
|00002800| 24 73 31 2c 20 27 70 75 | 73 68 27 2c 20 31 30 29 |$s1, 'pu|sh', 10)|
|00002810| 3b 0a 26 73 65 6e 64 28 | 24 73 31 2c 20 27 70 75 |;.&send(|$s1, 'pu|
|00002820| 73 68 27 2c 20 32 30 29 | 3b 0a 26 73 65 6e 64 28 |sh', 20)|;.&send(|
|00002830| 24 73 31 2c 20 27 70 75 | 73 68 27 2c 20 33 30 29 |$s1, 'pu|sh', 30)|
|00002840| 3b 0a 0a 70 72 69 6e 74 | 20 22 74 6f 70 20 6f 66 |;..print| "top of|
|00002850| 20 73 74 61 63 6b 20 31 | 3d 22 20 2e 20 26 73 65 | stack 1|=" . &se|
|00002860| 6e 64 28 24 73 31 2c 20 | 27 74 6f 70 27 29 20 2e |nd($s1, |'top') .|
|00002870| 20 22 5c 6e 22 3b 0a 70 | 72 69 6e 74 20 22 2d 2d | "\n";.p|rint "--|
|00002880| 2d 20 64 75 6d 70 20 6f | 66 20 73 74 61 63 6b 20 |- dump o|f stack |
|00002890| 31 20 2d 2d 2d 5c 6e 22 | 3b 0a 26 73 65 6e 64 28 |1 ---\n"|;.&send(|
|000028a0| 24 73 31 2c 20 27 64 75 | 6d 70 27 29 3b 0a 0a 26 |$s1, 'du|mp');..&|
|000028b0| 73 65 6e 64 28 24 73 32 | 2c 20 27 70 75 73 68 27 |send($s2|, 'push'|
|000028c0| 2c 20 27 48 65 6c 6c 6f | 2c 20 77 6f 72 6c 64 2e |, 'Hello|, world.|
|000028d0| 27 29 3b 0a 70 72 69 6e | 74 20 22 74 6f 70 20 6f |');.prin|t "top o|
|000028e0| 66 20 73 74 61 63 6b 20 | 32 3d 22 20 2e 20 26 73 |f stack |2=" . &s|
|000028f0| 65 6e 64 28 24 73 32 2c | 20 27 74 6f 70 27 29 20 |end($s2,| 'top') |
|00002900| 2e 20 22 5c 6e 22 3b 0a | 0a 70 72 69 6e 74 20 22 |. "\n";.|.print "|
|00002910| 2d 2d 2d 20 73 68 6f 77 | 20 6d 65 20 2d 2d 2d 5c |--- show| me ---\|
|00002920| 6e 22 3b 0a 26 73 65 6e | 64 28 24 73 31 2c 20 27 |n";.&sen|d($s1, '|
|00002930| 73 68 6f 77 5f 73 65 6c | 66 27 29 3b 0a 70 72 69 |show_sel|f');.pri|
|00002940| 6e 74 20 22 2d 2d 2d 20 | 73 68 6f 77 20 6d 65 20 |nt "--- |show me |
|00002950| 2d 2d 2d 5c 6e 22 3b 0a | 26 73 65 6e 64 28 24 73 |---\n";.|&send($s|
|00002960| 32 2c 20 27 73 68 6f 77 | 5f 73 65 6c 66 27 29 3b |2, 'show|_self');|
|00002970| 0a 0a 26 73 65 6e 64 28 | 24 73 31 2c 20 27 70 6f |..&send(|$s1, 'po|
|00002980| 70 27 29 3b 0a 70 72 69 | 6e 74 20 22 74 6f 70 20 |p');.pri|nt "top |
|00002990| 6f 66 20 73 74 61 63 6b | 20 31 3d 22 20 2e 20 26 |of stack| 1=" . &|
|000029a0| 73 65 6e 64 28 24 73 31 | 2c 20 27 74 6f 70 27 29 |send($s1|, 'top')|
|000029b0| 20 2e 20 22 5c 6e 22 3b | 0a 0a 26 73 65 6e 64 28 | . "\n";|..&send(|
|000029c0| 24 73 31 2c 20 27 70 6f | 70 27 29 3b 0a 70 72 69 |$s1, 'po|p');.pri|
|000029d0| 6e 74 20 22 74 6f 70 20 | 6f 66 20 73 74 61 63 6b |nt "top |of stack|
|000029e0| 20 31 3d 22 20 2e 20 26 | 73 65 6e 64 28 24 73 31 | 1=" . &|send($s1|
|000029f0| 2c 20 27 74 6f 70 27 29 | 20 2e 20 22 5c 6e 22 3b |, 'top')| . "\n";|
|00002a00| 0a 0a 26 73 65 6e 64 28 | 24 73 31 2c 20 27 70 6f |..&send(|$s1, 'po|
|00002a10| 70 27 29 3b 0a 70 72 69 | 6e 74 20 22 74 6f 70 20 |p');.pri|nt "top |
|00002a20| 6f 66 20 73 74 61 63 6b | 20 31 3d 22 20 2e 20 26 |of stack| 1=" . &|
|00002a30| 73 65 6e 64 28 24 73 31 | 2c 20 27 74 6f 70 27 29 |send($s1|, 'top')|
|00002a40| 20 2e 20 22 5c 6e 22 3b | 0a 40 2f 2f 45 2a 4f 2a | . "\n";|.@//E*O*|
|00002a50| 46 20 73 61 6d 70 6c 65 | 34 2f 2f 0a 63 68 6d 6f |F sample|4//.chmo|
|00002a60| 64 20 75 3d 72 77 78 2c | 67 3d 72 77 78 2c 6f 3d |d u=rwx,|g=rwx,o=|
|00002a70| 72 78 20 73 61 6d 70 6c | 65 34 0a 20 0a 65 63 68 |rx sampl|e4. .ech|
|00002a80| 6f 20 78 20 2d 20 73 61 | 6d 70 6c 65 35 0a 73 65 |o x - sa|mple5.se|
|00002a90| 64 20 27 73 2f 5e 40 2f | 2f 27 20 3e 20 22 73 61 |d 's/^@/|/' > "sa|
|00002aa0| 6d 70 6c 65 35 22 20 3c | 3c 27 40 2f 2f 45 2a 4f |mple5" <|<'@//E*O|
|00002ab0| 2a 46 20 73 61 6d 70 6c | 65 35 2f 2f 27 0a 23 21 |*F sampl|e5//'.#!|
|00002ac0| 2f 75 73 72 2f 62 69 6e | 2f 70 65 72 6c 0a 72 65 |/usr/bin|/perl.re|
|00002ad0| 71 75 69 72 65 20 27 70 | 6f 69 6e 74 2e 70 6c 27 |quire 'p|oint.pl'|
|00002ae0| 3b 0a 0a 24 6d 73 67 74 | 72 61 63 65 20 3d 20 31 |;..$msgt|race = 1|
|00002af0| 3b 20 23 20 6d 65 73 73 | 61 67 65 20 74 72 61 63 |; # mess|age trac|
|00002b00| 65 20 6f 6e 0a 0a 23 20 | 63 72 65 61 74 65 20 61 |e on..# |create a|
|00002b10| 20 70 6f 69 6e 74 20 40 | 20 28 31 30 2c 20 32 30 | point @| (10, 20|
|00002b20| 29 20 2e 2e 2e 20 73 65 | 65 20 27 69 6e 69 74 27 |) ... se|e 'init'|
|00002b30| 20 6d 65 74 68 6f 64 0a | 24 70 31 20 3d 20 26 6e | method.|$p1 = &n|
|00002b40| 65 77 6f 62 6a 65 63 74 | 28 27 70 6f 69 6e 74 27 |ewobject|('point'|
|00002b50| 2c 20 31 30 2c 20 32 30 | 29 3b 0a 26 73 65 6e 64 |, 10, 20|);.&send|
|00002b60| 28 24 70 31 2c 20 27 73 | 68 6f 77 5f 73 65 6c 66 |($p1, 's|how_self|
|00002b70| 27 29 3b 0a 0a 26 73 65 | 6e 64 28 24 70 31 2c 20 |');..&se|nd($p1, |
|00002b80| 27 6d 6f 76 65 27 2c 20 | 31 30 30 2c 20 31 30 30 |'move', |100, 100|
|00002b90| 29 3b 0a 26 73 65 6e 64 | 28 24 70 31 2c 20 27 73 |);.&send|($p1, 's|
|00002ba0| 68 6f 77 5f 73 65 6c 66 | 27 29 3b 0a 0a 26 73 65 |how_self|');..&se|
|00002bb0| 6e 64 28 24 70 31 2c 20 | 27 72 6d 6f 76 65 27 2c |nd($p1, |'rmove',|
|00002bc0| 20 32 30 2c 20 32 30 29 | 3b 0a 26 73 65 6e 64 28 | 20, 20)|;.&send(|
|00002bd0| 24 70 31 2c 20 27 73 68 | 6f 77 5f 73 65 6c 66 27 |$p1, 'sh|ow_self'|
|00002be0| 29 3b 0a 40 2f 2f 45 2a | 4f 2a 46 20 73 61 6d 70 |);.@//E*|O*F samp|
|00002bf0| 6c 65 35 2f 2f 0a 63 68 | 6d 6f 64 20 75 3d 72 77 |le5//.ch|mod u=rw|
|00002c00| 78 2c 67 3d 72 77 78 2c | 6f 3d 72 78 20 73 61 6d |x,g=rwx,|o=rx sam|
|00002c10| 70 6c 65 35 0a 20 0a 65 | 63 68 6f 20 78 20 2d 20 |ple5. .e|cho x - |
|00002c20| 73 61 6d 70 6c 65 36 0a | 73 65 64 20 27 73 2f 5e |sample6.|sed 's/^|
|00002c30| 40 2f 2f 27 20 3e 20 22 | 73 61 6d 70 6c 65 36 22 |@//' > "|sample6"|
|00002c40| 20 3c 3c 27 40 2f 2f 45 | 2a 4f 2a 46 20 73 61 6d | <<'@//E|*O*F sam|
|00002c50| 70 6c 65 36 2f 2f 27 0a | 23 21 2f 75 73 72 2f 62 |ple6//'.|#!/usr/b|
|00002c60| 69 6e 2f 70 65 72 6c 0a | 72 65 71 75 69 72 65 20 |in/perl.|require |
|00002c70| 27 6f 70 65 72 6c 2e 70 | 6c 27 3b 0a 0a 23 20 64 |'operl.p|l';..# d|
|00002c80| 65 66 69 6e 65 20 6e 65 | 77 20 63 6c 61 73 73 20 |efine ne|w class |
|00002c90| 27 68 65 6c 6c 6f 27 20 | 61 73 20 73 75 62 63 6c |'hello' |as subcl|
|00002ca0| 61 73 73 20 6f 66 20 27 | 72 6f 6f 74 27 0a 26 64 |ass of '|root'.&d|
|00002cb0| 65 66 63 6c 61 73 73 20 | 28 27 68 65 6c 6c 6f 27 |efclass |('hello'|
|00002cc0| 2c 20 27 72 6f 6f 74 27 | 29 3b 0a 0a 23 20 27 69 |, 'root'|);..# 'i|
|00002cd0| 6e 69 74 27 20 6d 65 74 | 68 6f 64 20 77 69 6c 6c |nit' met|hod will|
|00002ce0| 20 62 65 20 69 6e 76 6f | 6b 65 64 20 6f 6e 20 63 | be invo|ked on c|
|00002cf0| 72 65 61 74 69 6e 67 20 | 61 6e 20 6f 62 6a 65 63 |reating |an objec|
|00002d00| 74 0a 26 64 65 66 6d 65 | 74 68 6f 64 28 27 68 65 |t.&defme|thod('he|
|00002d10| 6c 6c 6f 27 2c 20 27 69 | 6e 69 74 27 2c 20 27 24 |llo', 'i|nit', '$|
|00002d20| 69 20 3d 20 30 3b 27 29 | 3b 0a 0a 23 20 6d 65 74 |i = 0;')|;..# met|
|00002d30| 68 6f 64 20 27 61 64 64 | 31 27 20 61 64 64 73 20 |hod 'add|1' adds |
|00002d40| 31 20 74 6f 20 24 69 0a | 26 64 65 66 6d 65 74 68 |1 to $i.|&defmeth|
|00002d50| 6f 64 28 27 68 65 6c 6c | 6f 27 2c 20 27 61 64 64 |od('hell|o', 'add|
|00002d60| 31 27 2c 20 27 24 69 2b | 2b 3b 27 29 3b 0a 0a 23 |1', '$i+|+;');..#|
|00002d70| 20 6d 65 74 68 6f 64 20 | 27 73 68 6f 77 27 20 73 | method |'show' s|
|00002d80| 68 6f 77 73 20 74 68 65 | 20 76 61 6c 75 65 20 6f |hows the| value o|
|00002d90| 66 20 24 69 0a 26 64 65 | 66 6d 65 74 68 6f 64 28 |f $i.&de|fmethod(|
|00002da0| 27 68 65 6c 6c 6f 27 2c | 20 27 73 68 6f 77 27 2c |'hello',| 'show',|
|00002db0| 20 27 70 72 69 6e 74 20 | 22 2d 3e 20 22 20 2e 20 | 'print |"-> " . |
|00002dc0| 24 69 20 2e 20 22 5c 6e | 22 3b 27 29 3b 0a 0a 23 |$i . "\n|";');..#|
|00002dd0| 20 64 65 66 69 6e 65 20 | 6e 65 77 20 63 6c 61 73 | define |new clas|
|00002de0| 73 20 27 68 65 6c 6c 6f | 32 27 20 61 73 20 73 75 |s 'hello|2' as su|
|00002df0| 62 63 6c 61 73 73 20 6f | 66 20 27 68 65 6c 6c 6f |bclass o|f 'hello|
|00002e00| 27 0a 26 64 65 66 63 6c | 61 73 73 20 28 27 68 65 |'.&defcl|ass ('he|
|00002e10| 6c 6c 6f 32 27 2c 20 27 | 68 65 6c 6c 6f 27 29 3b |llo2', '|hello');|
|00002e20| 0a 0a 23 20 6d 65 74 68 | 6f 64 20 27 61 64 64 32 |..# meth|od 'add2|
|00002e30| 27 20 61 64 64 73 20 32 | 20 74 6f 20 69 74 73 65 |' adds 2| to itse|
|00002e40| 6c 66 20 28 73 65 6e 64 | 20 61 64 64 31 20 74 6f |lf (send| add1 to|
|00002e50| 20 73 65 6c 66 20 74 77 | 69 63 65 29 0a 23 20 79 | self tw|ice).# y|
|00002e60| 6f 75 20 63 61 6e 20 72 | 65 66 65 72 20 74 6f 20 |ou can r|efer to |
|00002e70| 74 68 65 20 63 75 72 72 | 65 6e 74 20 6f 62 6a 65 |the curr|ent obje|
|00002e80| 63 74 20 61 73 20 24 73 | 65 6c 66 0a 26 64 65 66 |ct as $s|elf.&def|
|00002e90| 6d 65 74 68 6f 64 28 27 | 68 65 6c 6c 6f 27 2c 20 |method('|hello', |
|00002ea0| 27 61 64 64 32 27 2c 20 | 3c 3c 27 4d 45 54 48 4f |'add2', |<<'METHO|
|00002eb0| 44 27 20 29 3b 0a 09 26 | 6d 61 69 6e 27 73 65 6e |D' );..&|main'sen|
|00002ec0| 64 28 24 73 65 6c 66 2c | 20 27 61 64 64 31 27 29 |d($self,| 'add1')|
|00002ed0| 3b 0a 09 26 6d 61 69 6e | 27 73 65 6e 64 28 24 73 |;..&main|'send($s|
|00002ee0| 65 6c 66 2c 20 27 61 64 | 64 31 27 29 3b 0a 4d 45 |elf, 'ad|d1');.ME|
|00002ef0| 54 48 4f 44 0a 0a 24 6f | 31 20 3d 20 26 6e 65 77 |THOD..$o|1 = &new|
|00002f00| 6f 62 6a 65 63 74 28 27 | 68 65 6c 6c 6f 32 27 29 |object('|hello2')|
|00002f10| 3b 0a 0a 26 73 65 6e 64 | 28 24 6f 31 2c 20 27 73 |;..&send|($o1, 's|
|00002f20| 68 6f 77 27 29 3b 0a 26 | 73 65 6e 64 28 24 6f 31 |how');.&|send($o1|
|00002f30| 2c 20 27 61 64 64 32 27 | 29 3b 0a 26 73 65 6e 64 |, 'add2'|);.&send|
|00002f40| 28 24 6f 31 2c 20 27 73 | 68 6f 77 27 29 3b 0a 40 |($o1, 's|how');.@|
|00002f50| 2f 2f 45 2a 4f 2a 46 20 | 73 61 6d 70 6c 65 36 2f |//E*O*F |sample6/|
|00002f60| 2f 0a 63 68 6d 6f 64 20 | 75 3d 72 77 78 2c 67 3d |/.chmod |u=rwx,g=|
|00002f70| 72 77 78 2c 6f 3d 72 78 | 20 73 61 6d 70 6c 65 36 |rwx,o=rx| sample6|
|00002f80| 0a 20 0a 65 78 69 74 20 | 30 0a 2d 2d 0a 20 73 61 |. .exit |0.--. sa|
|00002f90| 6b 6f 68 40 73 72 61 2e | 63 6f 2e 6a 70 0a 22 57 |koh@sra.|co.jp."W|
|00002fa0| 68 65 72 65 6f 66 20 6f | 6e 65 20 63 61 6e 6e 6f |hereof o|ne canno|
|00002fb0| 74 20 73 70 65 61 6b 2c | 20 74 68 65 72 65 6f 66 |t speak,| thereof|
|00002fc0| 20 6f 6e 65 20 6d 75 73 | 74 20 72 65 6d 61 69 6e | one mus|t remain|
|00002fd0| 20 73 69 6c 65 6e 74 2e | 22 20 20 2d 2d 2d 57 69 | silent.|" ---Wi|
|00002fe0| 74 74 67 65 6e 73 74 65 | 69 6e 0a 22 53 6f 6d 65 |ttgenste|in."Some|
|00002ff0| 74 69 6d 65 73 20 6e 6f | 69 73 65 20 69 73 20 73 |times no|ise is s|
|00003000| 69 67 6e 69 66 69 63 61 | 6e 74 2e 22 20 20 20 20 |ignifica|nt." |
|00003010| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003020| 20 20 20 20 20 20 20 20 | 2d 2d 2d 57 69 6c 6c 69 | |---Willi|
|00003030| 61 6d 20 48 65 77 6c 65 | 74 74 0a 0a |am Hewle|tt.. |
+--------+-------------------------+-------------------------+--------+--------+