| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | #-------------------------------------------------------------------------# | 
| 2 |  |  |  |  |  |  | # Acme::Playwright | 
| 3 |  |  |  |  |  |  | #       Date Written:   21-Mar-2002 04:15:52 PM | 
| 4 |  |  |  |  |  |  | #       Last Modified:  26-Mar-2002 09:32:37 AM | 
| 5 |  |  |  |  |  |  | #       Author:    Kurt Kincaid | 
| 6 |  |  |  |  |  |  | #       Copyright (c) 2002, Kurt Kincaid | 
| 7 |  |  |  |  |  |  | #           All Rights Reserved | 
| 8 |  |  |  |  |  |  | # | 
| 9 |  |  |  |  |  |  | # NOTICE: This is free software and may be modified and/or redistributed | 
| 10 |  |  |  |  |  |  | #         under the same terms as Perl itself. | 
| 11 |  |  |  |  |  |  | #-------------------------------------------------------------------------# | 
| 12 |  |  |  |  |  |  |  | 
| 13 |  |  |  |  |  |  | package Acme::Playwright; | 
| 14 |  |  |  |  |  |  |  | 
| 15 | 1 |  |  | 1 |  | 7033 | use 5.006; | 
|  | 1 |  |  |  |  | 3 |  | 
|  | 1 |  |  |  |  | 39 |  | 
| 16 | 1 |  |  | 1 |  | 6 | use strict; | 
|  | 1 |  |  |  |  | 3 |  | 
|  | 1 |  |  |  |  | 28 |  | 
| 17 | 1 |  |  | 1 |  | 6 | use warnings; | 
|  | 1 |  |  |  |  | 5 |  | 
|  | 1 |  |  |  |  | 52 |  | 
| 18 | 1 |  |  |  |  | 3316 | use vars qw/ $name $val %Names %Phrases %rNames %rPhrases | 
| 19 |  |  |  |  |  |  | @Names @Actions @nSpace @pSpace @nA @pA @nE @pE | 
| 20 |  |  |  |  |  |  | @nN @pN @nO @pO @nR @pR @nS @pS @nT @pT %Delimiter | 
| 21 | 1 |  |  | 1 |  | 5 | $AUTOLOAD /; | 
|  | 1 |  |  |  |  | 1 |  | 
| 22 |  |  |  |  |  |  |  | 
| 23 |  |  |  |  |  |  | our $VERSION = '0.02'; | 
| 24 |  |  |  |  |  |  |  | 
| 25 |  |  |  |  |  |  | %Delimiter = ( | 
| 26 |  |  |  |  |  |  | 'left' => '[ ', | 
| 27 |  |  |  |  |  |  | 'right' => ' ]' | 
| 28 |  |  |  |  |  |  | ); | 
| 29 |  |  |  |  |  |  |  | 
| 30 |  |  |  |  |  |  | %Names = ( | 
| 31 |  |  |  |  |  |  | 'Edward'     => 'A', 'Michael'    => 'B', 'Doug'       => 'C', 'Bill'       => 'D', | 
| 32 |  |  |  |  |  |  | 'Matt'       => 'E', 'Kyle'       => 'F', 'Dawn'       => 'G', 'Kurt'       => 'H', | 
| 33 |  |  |  |  |  |  | 'Courtney'   => 'I', 'Amanda'     => 'J', 'Taylor'     => 'K', 'Shelby'     => 'L', | 
| 34 |  |  |  |  |  |  | 'Carol'      => 'M', 'Kathy'      => 'N', 'Keith'      => 'O', 'Carrie'     => 'P', | 
| 35 |  |  |  |  |  |  | 'Corey'      => 'Q', 'Kelly'      => 'R', 'Erik'       => 'S', 'John'       => 'T', | 
| 36 |  |  |  |  |  |  | 'Nick'       => 'U', 'Eva'        => 'V', 'Karen'      => 'W', 'Barb'       => 'X', | 
| 37 |  |  |  |  |  |  | 'Ivan'       => 'Y', 'Michelle'   => 'Z', 'Shelly'     => 'a', 'Guyla'      => 'b', | 
| 38 |  |  |  |  |  |  | 'Gary'       => 'c', 'Dan'        => 'd', 'Bianca'     => 'e', 'Hamlet'     => 'f', | 
| 39 |  |  |  |  |  |  | 'Othello'    => 'g', 'Iago'       => 'h', 'Brabantio'  => 'i', 'Berenice'   => 'j', | 
| 40 |  |  |  |  |  |  | 'Beatrice'   => 'k', 'Emilia'     => 'l', 'Amy'        => 'm', 'Angela'     => 'n', | 
| 41 |  |  |  |  |  |  | 'Sheri'      => 'o', 'Ginger'     => 'p', 'Chloe'      => 'q', 'Amber'      => 'r', | 
| 42 |  |  |  |  |  |  | 'Kristi'     => 's', 'Jasmine'    => 't', 'Pierre'     => 'u', 'Francois'   => 'v', | 
| 43 |  |  |  |  |  |  | 'Louis'      => 'w', 'Pietro'     => 'x', 'Reed'       => 'y', 'Peter'      => 'z', | 
| 44 |  |  |  |  |  |  | 'Ned'        => '`', 'Homer'      => '1', 'Bart'       => '2', 'Lisa'       => '3', | 
| 45 |  |  |  |  |  |  | 'Marge'      => '4', 'Margaret'   => '5', 'Mo'         => '6', 'Barney'     => '7', | 
| 46 |  |  |  |  |  |  | 'Sherlock'   => '8', 'Pennywise'  => '9', 'Harry'      => '0', 'Stephen'    => '-', | 
| 47 |  |  |  |  |  |  | 'Lenore'     => '=', 'Edgar'      => '~', 'Howard'     => '!', 'Phillip'    => '@', | 
| 48 |  |  |  |  |  |  | 'Hrothgar'   => '#', 'Gunther'    => '$', 'Beowulf'    => '%', 'Unferth'    => '^', | 
| 49 |  |  |  |  |  |  | 'Arthur'     => '&', 'Lancelot'   => '*', 'Percival'   => '(', 'Bors'       => ')', | 
| 50 |  |  |  |  |  |  | 'Elaine'     => '_', 'Igraine'    => '+', 'Uther'      => ';', 'Merlin'     => ':', | 
| 51 |  |  |  |  |  |  | 'Leo'        => '"', 'Brett'      => "'", 'Shane'      => '[', 'George'     => '{', | 
| 52 |  |  |  |  |  |  | 'Alfred'     => ']', 'Alex'       => '}', 'Ron'        => '\\','Henry'      => '|', | 
| 53 |  |  |  |  |  |  | 'Mitchell'   => ',', 'Spenser'    => '<', 'Ray'        => '.', 'Donald'     => '>', | 
| 54 |  |  |  |  |  |  | 'Robin'      => '/', 'Robert'     => '?', 'Kevin'      => ' ', 'Terry'      => ' ', | 
| 55 |  |  |  |  |  |  | 'Franklin'   => ' ', 'Rodney'     => ' ', 'Willow'     => ' ', 'Buffy'      => ' ', | 
| 56 |  |  |  |  |  |  | 'Brenda'     => ' ', 'Mark'       => ' ', 'Luke'       => ' ', 'Elizabeth'  => ' ', | 
| 57 |  |  |  |  |  |  | 'Tucker'     => ' ', 'Hal'        => ' ', 'Monica'     => 'a', 'Allen'      => 'a', | 
| 58 |  |  |  |  |  |  | 'Cliff'      => 'a', 'Nina'       => 'a', 'Palmer'     => 'a', 'Joseph'     => 'a', | 
| 59 |  |  |  |  |  |  | 'Leslie'     => 'a', 'Randall'    => 'a', 'Kent'       => 'a', 'Gronk'      => 'a', | 
| 60 |  |  |  |  |  |  | 'Remick'     => 'e', 'Ronald'     => 'e', 'Dougal'     => 'e', 'Angus'      => 'e', | 
| 61 |  |  |  |  |  |  | 'Flip'       => 'e', 'Jay'        => 'e', 'Reese'      => 'e', 'Dwight'     => 'e', | 
| 62 |  |  |  |  |  |  | 'Rocky'      => 'e', 'Bjorn'      => 'e', 'Helga'      => 'n', 'Loki'       => 'n', | 
| 63 |  |  |  |  |  |  | 'Brunhilda'  => 'n', 'Hansel'     => 'n', 'Gretel'     => 'n', 'Grendel'    => 'n', | 
| 64 |  |  |  |  |  |  | 'Bertilak'   => 'n', 'Bernie'     => 'n', 'Basil'      => 'n', 'Erol'       => 'n', | 
| 65 |  |  |  |  |  |  | 'Malcom'     => 'o', 'Marie'      => 'o', 'Jane'       => 'o', 'Clark'      => 'o', | 
| 66 |  |  |  |  |  |  | 'Buster'     => 'o', 'Franco'     => 'o', 'Earl'       => 'o', 'Laertes'    => 'o', | 
| 67 |  |  |  |  |  |  | 'Odysseus'   => 'o', 'Telemachus' => 'o', 'Zeus'       => 'r', 'Heracles'   => 'r', | 
| 68 |  |  |  |  |  |  | 'Ophelia'    => 'r', 'Hera'       => 'r', 'Aphrodite'  => 'r', 'Venus'      => 'r', | 
| 69 |  |  |  |  |  |  | 'Ares'       => 'r', 'Apollo'     => 'r', 'Amphitryon' => 'r', 'Agamemnon'  => 'r', | 
| 70 |  |  |  |  |  |  | 'Menelaus'   => 's', 'Paulo'      => 's', 'Ivano'      => 's', 'Junior'     => 's', | 
| 71 |  |  |  |  |  |  | 'Jughead'    => 's', 'Jared'      => 's', 'Jimmy'      => 's', 'Perry'      => 's', | 
| 72 |  |  |  |  |  |  | 'Taliesin'   => 's', 'Devon'      => 's', 'Red'        => 't', 'Bonzo'      => 't', | 
| 73 |  |  |  |  |  |  | 'Sparky'     => 't', 'Tex'        => 't', 'Surachai'   => 't', 'Samaransak' => 't', | 
| 74 |  |  |  |  |  |  | 'Nai'        => 't', 'Jackie'     => 't', 'Bruce'      => 't', 'Lennox'     => 't' | 
| 75 |  |  |  |  |  |  | ); | 
| 76 |  |  |  |  |  |  |  | 
| 77 |  |  |  |  |  |  | @nSpace = ( 'Kevin',    'Terry',    'Franklin',  'Rodney', 'Willow',    'Buffy',      'Brenda',   'Mark',    'Luke',       'Elizabeth', 'Tucker', 'Hal' ); | 
| 78 |  |  |  |  |  |  | @nA =     ( 'Monica',   'Allen',    'Cliff',     'Nina',   'Palmer',    'Joseph',     'Leslie',   'Randall', 'Kent',       'Gronk' ); | 
| 79 |  |  |  |  |  |  | @nE =     ( 'Remick',   'Ronald',   'Dougal',    'Angus',  'Flip',      'Jay',        'Reese',    'Dwight',  'Rocky',      'Bjorn' ); | 
| 80 |  |  |  |  |  |  | @nN =     ( 'Helga',    'Loki',     'Brunhilda', 'Hansel', 'Gretel',    'Grendel',    'Bertilak', 'Bernie',  'Basil',      'Erol' ); | 
| 81 |  |  |  |  |  |  | @nO =     ( 'Malcom',   'Marie',    'Jane',      'Clark',  'Buster',    'Franco',     'Earl',     'Laertes', 'Odysseus',   'Telemachus' ); | 
| 82 |  |  |  |  |  |  | @nR =     ( 'Zeus',     'Heracles', 'Ophelia',   'Hera',   'Aphrodite', 'Venus',      'Ares',     'Apollo',  'Amphitryon', 'Agamemnon' ); | 
| 83 |  |  |  |  |  |  | @nS =     ( 'Menelaus', 'Paulo',    'Ivano',     'Junior', 'Jughead',   'Jared',      'Jimmy',    'Perry',   'Taliesin',   'Devon' ); | 
| 84 |  |  |  |  |  |  | @nT =     ( 'Red',      'Bonzo',    'Sparky',    'Tex',    'Surachai',  'Samaransak', 'Nai',      'Jackie',  'Bruce',      'Lennox' ); | 
| 85 |  |  |  |  |  |  |  | 
| 86 |  |  |  |  |  |  | %Phrases = ( | 
| 87 |  |  |  |  |  |  | 'That was funny!'                                        => 'A', 'How long have you been here?'                           => 'B', | 
| 88 |  |  |  |  |  |  | 'How long have you been waiting?'                        => 'C', 'When did you say you had your appointment?'             => 'D', | 
| 89 |  |  |  |  |  |  | 'That is a lovely shade of blue.'                        => 'E', 'That weighs a bit more than I expected.'                => 'F', | 
| 90 |  |  |  |  |  |  | 'Where did you say you want me to put that?'             => 'G', "I won't put that there."                                => 'H', | 
| 91 |  |  |  |  |  |  | "Are you sure I'm supposed to put that there?"           => 'I', 'I need to sharpen my sword.'                            => 'J', | 
| 92 |  |  |  |  |  |  | 'I like to paint.'                                       => 'K', 'Wow, you have a lot of books.'                          => 'L', | 
| 93 |  |  |  |  |  |  | 'I finally got my network setup.'                        => 'M', 'I need more RAM.'                                       => 'N', | 
| 94 |  |  |  |  |  |  | 'Where did I put my pen?'                                => 'O', 'That looks like a nasty cut.'                           => 'P', | 
| 95 |  |  |  |  |  |  | 'Have you got some aspirin?'                             => 'Q', 'Got any gum?'                                           => 'R', | 
| 96 |  |  |  |  |  |  | 'My subscription to Sys Admin is about to expire.'       => 'S', "She's pretty"                                           => 'T', | 
| 97 |  |  |  |  |  |  | 'I wish it would stop raining.'                          => 'U', 'It is waaaaay too hot in here.'                         => 'V', | 
| 98 |  |  |  |  |  |  | 'Could you turn that fan off?'                           => 'W', 'Do you know much about TCP/IP?'                         => 'X', | 
| 99 |  |  |  |  |  |  | 'I finally got my certificate.'                          => 'Y', 'That picture frame is a little crooked.'                => 'Z', | 
| 100 |  |  |  |  |  |  | 'Did you hear that noise?'                               => 'a', 'Hey, the Inspector General is coming.'                  => 'b', | 
| 101 |  |  |  |  |  |  | 'Lucky for me.'                                          => 'c', "You don't say?"                                         => 'd', | 
| 102 |  |  |  |  |  |  | 'Could that possibly smell any worse?'                   => 'e', 'Probably not.'                                          => 'f', | 
| 103 |  |  |  |  |  |  | 'How long should I cook this?'                           => 'g', "You'll want to cook that very slowly."                  => 'h', | 
| 104 |  |  |  |  |  |  | 'Me want beer.'                                          => 'i', 'I could really use a nap.'                              => 'j', | 
| 105 |  |  |  |  |  |  | 'I have to pick up my daughter after work.'              => 'k', 'Do you think anyone will notice?'                       => 'l', | 
| 106 |  |  |  |  |  |  | "Not if you expect to go out in public."                 => 'm', 'Hey, I like this song.'                                 => 'n', | 
| 107 |  |  |  |  |  |  | 'That is too expensive for me.'                          => 'o', 'Says who?'                                              => 'p', | 
| 108 |  |  |  |  |  |  | "I don't like it when you touch me there."               => 'q', 'I know, but I never liked it.'                          => 'r', | 
| 109 |  |  |  |  |  |  | 'Hot enough for you?'                                    => 's', 'I had spaghetti for dinner three times last week.'      => 't', | 
| 110 |  |  |  |  |  |  | 'I could have sworn I locked the door.'                  => 'u', 'Have you seen my keys?'                                 => 'v', | 
| 111 |  |  |  |  |  |  | 'I saw it over there.'                                   => 'w', 'Do these pants make my butt look big?'                  => 'x', | 
| 112 |  |  |  |  |  |  | 'Putting on a little weight, I see.'                     => 'y', "Say that again and I'll smack you."                     => 'z', | 
| 113 |  |  |  |  |  |  | 'I am an excellent driver.'                              => '`', 'You drive too fast.'                                    => '1', | 
| 114 |  |  |  |  |  |  | 'I love pizza.'                                          => '2', 'Not nearly as much as you do.'                          => '3', | 
| 115 |  |  |  |  |  |  | 'Come over here and sit on my lap.'                      => '4', 'Not a chance in hell.'                                  => '5', | 
| 116 |  |  |  |  |  |  | 'You know you want to.'                                  => '6', 'Sure I do.'                                             => '7', | 
| 117 |  |  |  |  |  |  | 'You are weak and lack skill.'                           => '8', 'How about a nice bottle of wine with dinner?'           => '9', | 
| 118 |  |  |  |  |  |  | 'I could use a shower.'                                  => '0', 'How many fish did you catch?'                           => '-', | 
| 119 |  |  |  |  |  |  | 'That is quite a collection you have there.'             => '=', 'Please stop hitting me with that pickle.'               => '~', | 
| 120 |  |  |  |  |  |  | 'Why would I want to do that?'                           => '!', 'I asked nicely.'                                        => '@', | 
| 121 |  |  |  |  |  |  | 'Look at all those chickens!'                            => '#', 'This is taking too long.'                               => '$', | 
| 122 |  |  |  |  |  |  | "I've been trying to learn that for ages."               => '%', 'How many times?'                                        => '^', | 
| 123 |  |  |  |  |  |  | 'Eight or nine, I think.'                                => '&', 'Not unless you want me to cry.'                         => '*', | 
| 124 |  |  |  |  |  |  | 'I hope she likes it.'                                   => '(', 'She will, especially if you throw it at her.'           => ')', | 
| 125 |  |  |  |  |  |  | 'He never stops complaining!'                            => '_', "Sure, just wait until he isn't looking."                => '+', | 
| 126 |  |  |  |  |  |  | 'Why does that smell like cheese?'                       => '[', "I'm not sure I've ever seen anything that ugly."        => '{', | 
| 127 |  |  |  |  |  |  | 'How may of those do you have?'                          => ']', 'Lots more than you do.'                                 => '}', | 
| 128 |  |  |  |  |  |  | 'I would love to.'                                       => '\\','I can think of nothing I would like better.'            => '|', | 
| 129 |  |  |  |  |  |  | 'No, it is too soon for that.'                           => ';', 'She thinks I dance funny.'                              => ':', | 
| 130 |  |  |  |  |  |  | 'Nice socks. Did you get dressed in the dark?'           => "'", 'Why must you say things like that?'                     => '"', | 
| 131 |  |  |  |  |  |  | 'Because I think it is funny.'                           => ',', 'Hey, you asked.'                                        => '<', | 
| 132 |  |  |  |  |  |  | "That's the last time I ask for your opinion."           => '.', 'I never did care for that.'                             => '>', | 
| 133 |  |  |  |  |  |  | "That's what you think."                                 => '/', 'Wonderful, my nose is bleeding again.'                  => '?', | 
| 134 |  |  |  |  |  |  | 'Why would I do that?'                                   => ' ', 'I need more paint.'                                     => ' ', | 
| 135 |  |  |  |  |  |  | 'The water is warm.'                                     => ' ', 'Have you ever seen so many worms?'                      => ' ', | 
| 136 |  |  |  |  |  |  | 'Three, maybe four times. And you?'                      => ' ', 'My shoe is untied again.'                               => ' ', | 
| 137 |  |  |  |  |  |  | 'I finally got around to doing that.'                    => ' ', 'Could you please pass the coleslaw?'                    => ' ', | 
| 138 |  |  |  |  |  |  | 'Have you ever seen one of these?'                       => ' ', "I've never seen one so close up before."                => ' ', | 
| 139 |  |  |  |  |  |  | 'It looks sort of squashed.'                             => ' ', 'Whatever you say.'                                      => ' ', | 
| 140 |  |  |  |  |  |  | 'Not if you paid me.'                                    => 'a', "Please don't poke me with that."                        => 'a', | 
| 141 |  |  |  |  |  |  | 'Have you looked under the table?'                       => 'a', 'It has water in it.'                                    => 'a', | 
| 142 |  |  |  |  |  |  | 'Hey, nice foot.'                                        => 'a', "I'm not sure I should put that there."                  => 'a', | 
| 143 |  |  |  |  |  |  | 'I beg your pardon?'                                     => 'a', 'Not at the moment.'                                     => 'a', | 
| 144 |  |  |  |  |  |  | "I don't think so."                                      => 'a', 'Who?'                                                   => 'a', | 
| 145 |  |  |  |  |  |  | 'I never did learn how to do that very well.'            => 'e', 'It is much heavier than it looks.'                      => 'e', | 
| 146 |  |  |  |  |  |  | 'No, you have too many already.'                         => 'e', 'Done!',                                                 => 'e', | 
| 147 |  |  |  |  |  |  | 'I win, you lose.'                                       => 'e', 'Get bent.'                                              => 'e', | 
| 148 |  |  |  |  |  |  | 'When would be a good time for you?'                     => 'e', 'Pfah!'                                                  => 'e', | 
| 149 |  |  |  |  |  |  | 'In your shoe, I think.'                                 => 'e', 'I did that yesterday.'                                  => 'e', | 
| 150 |  |  |  |  |  |  | 'Ok, but it will cost you.'                              => 'n', 'I like it when you touch me there.'                     => 'n', | 
| 151 |  |  |  |  |  |  | 'Have I ever told you that you look like Ted Koppel?'    => 'n', "Shhhh. I'm trying to listen to this."                   => 'n', | 
| 152 |  |  |  |  |  |  | 'Will you never stop crying?'                            => 'n', 'Because I said so.'                                     => 'n', | 
| 153 |  |  |  |  |  |  | 'As soon as the train stops.'                            => 'n', 'That is a very large apple.'                            => 'n', | 
| 154 |  |  |  |  |  |  | "I'm not sure what that is."                             => 'n', 'No thanks.'                                             => 'n', | 
| 155 |  |  |  |  |  |  | 'Could you repeat that?'                                 => 'o', 'I have never been so bored.'                            => 'o', | 
| 156 |  |  |  |  |  |  | 'So what are your thoughts on Tolstoy?'                  => 'o', "I'm still trying to find the plot."                     => 'o', | 
| 157 |  |  |  |  |  |  | "He's rather fond of himself, isn't he?"                 => 'o', "Well it looks like...I don't know what it looks like."  => 'o', | 
| 158 |  |  |  |  |  |  | 'Your point being?'                                      => 'o', 'And...?'                                                => 'o', | 
| 159 |  |  |  |  |  |  | 'I have a picture of that on my mousepad.'               => 'o', 'That stain will never come out.'                        => 'o', | 
| 160 |  |  |  |  |  |  | 'I tried that once, but it felt really weird.'           => 'r', 'That door sure is hard to open.'                        => 'r', | 
| 161 |  |  |  |  |  |  | 'That really hurt.'                                      => 'r', 'I have to delete that.'                                 => 'r', | 
| 162 |  |  |  |  |  |  | 'It is just too big.'                                    => 'r', 'Only when I cross my eyes.'                             => 'r', | 
| 163 |  |  |  |  |  |  | 'Do you really think so?'                                => 'r', 'I took an educated guess.'                              => 'r', | 
| 164 |  |  |  |  |  |  | 'Your theory is fundamentally flawed.'                   => 'r', "You probably shouldn't put your finger there."          => 'r', | 
| 165 |  |  |  |  |  |  | 'I think you broke it.'                                  => 's', 'It just needs new batteries.'                           => 's', | 
| 166 |  |  |  |  |  |  | 'How long have you known?'                               => 's', "You think I'm dumb, don't you?"                         => 's', | 
| 167 |  |  |  |  |  |  | "I've never been so insulted."                           => 's', 'Sure is windy out there.'                               => 's', | 
| 168 |  |  |  |  |  |  | 'I wish I could fly.'                                    => 's', 'At night the ice weasles come.'                         => 's', | 
| 169 |  |  |  |  |  |  | 'The penguins are tearing at my flesh.'                  => 's', 'Do you smell smoke?'                                    => 's', | 
| 170 |  |  |  |  |  |  | 'You should try it sometime.'                            => 't', "I don't think I'd like that."                           => 't', | 
| 171 |  |  |  |  |  |  | 'Kiss me.'                                               => 't', 'Do you need a tissue?'                                  => 't', | 
| 172 |  |  |  |  |  |  | 'Good question.'                                         => 't', 'What an ugly cat!'                                      => 't', | 
| 173 |  |  |  |  |  |  | 'Want to hear a joke?'                                   => 't', 'Not if you are the one doing it.'                       => 't', | 
| 174 |  |  |  |  |  |  | 'It sure is a long way down.'                            => 't', 'How long did it take to make that?'                     => 't' | 
| 175 |  |  |  |  |  |  | ); | 
| 176 |  |  |  |  |  |  |  | 
| 177 |  |  |  |  |  |  | @pSpace = ( | 
| 178 |  |  |  |  |  |  | 'Why would I do that?',                    'I need more paint.',                  'The water is warm.', | 
| 179 |  |  |  |  |  |  | 'Have you ever seen so many worms?',       'Three, maybe four times. And you?',   'My shoe is untied again.', | 
| 180 |  |  |  |  |  |  | 'I finally got around to doing that.',     'Could you please pass the coleslaw?', 'Have you ever seen one of these?', | 
| 181 |  |  |  |  |  |  | "I've never seen one so close up before.", 'It looks sort of squashed.',          'Whatever you say.' | 
| 182 |  |  |  |  |  |  | ); | 
| 183 |  |  |  |  |  |  |  | 
| 184 |  |  |  |  |  |  | @pA = ( | 
| 185 |  |  |  |  |  |  | 'Not if you paid me.',              "Please don't poke me with that.", | 
| 186 |  |  |  |  |  |  | 'Have you looked under the table?', 'It has water in it.', | 
| 187 |  |  |  |  |  |  | 'Hey, nice foot.',                  "I'm not sure I should put that there.", | 
| 188 |  |  |  |  |  |  | 'I beg your pardon?',               'Not at the moment.', | 
| 189 |  |  |  |  |  |  | "I don't think so.",                'Who?' | 
| 190 |  |  |  |  |  |  | ); | 
| 191 |  |  |  |  |  |  |  | 
| 192 |  |  |  |  |  |  | @pE = ( | 
| 193 |  |  |  |  |  |  | "I never did learn how to do that very well.", "It is much heavier than it looks.", | 
| 194 |  |  |  |  |  |  | "No, you have too many already.",              "Done!", | 
| 195 |  |  |  |  |  |  | "I win, you lose.",                            "Get bent.", | 
| 196 |  |  |  |  |  |  | "When would be a good time for you?",          "Pfah!", | 
| 197 |  |  |  |  |  |  | "In your shoe, I think.",                      "I did that yesterday." | 
| 198 |  |  |  |  |  |  | ); | 
| 199 |  |  |  |  |  |  |  | 
| 200 |  |  |  |  |  |  | @pN = ( | 
| 201 |  |  |  |  |  |  | 'Ok, but it will cost you.',                           'I like it when you touch me there.', | 
| 202 |  |  |  |  |  |  | 'Have I ever told you that you look like Ted Koppel?', "Shhhh. I'm trying to listen to this.", | 
| 203 |  |  |  |  |  |  | 'Will you never stop crying?',                         'Because I said so.', | 
| 204 |  |  |  |  |  |  | 'As soon as the train stops.',                         'That is a very large apple.', | 
| 205 |  |  |  |  |  |  | "I'm not sure what that is.",                          'No thanks.' | 
| 206 |  |  |  |  |  |  | ); | 
| 207 |  |  |  |  |  |  |  | 
| 208 |  |  |  |  |  |  | @pO = ( | 
| 209 |  |  |  |  |  |  | 'Could you repeat that?',                   'I have never been so bored.', | 
| 210 |  |  |  |  |  |  | 'So what are your thoughts on Tolstoy?',    "I'm still trying to find the plot.", | 
| 211 |  |  |  |  |  |  | "He's rather fond of himself, isn't he?",   "Well it looks like...I don't know what it looks like.", | 
| 212 |  |  |  |  |  |  | "Your point being?",                        'And...?', | 
| 213 |  |  |  |  |  |  | 'I have a picture of that on my mousepad.', 'That stain will never come out.' | 
| 214 |  |  |  |  |  |  | ); | 
| 215 |  |  |  |  |  |  |  | 
| 216 |  |  |  |  |  |  | @pR = ( | 
| 217 |  |  |  |  |  |  | 'I tried it once, but it felt really weird.', 'That door sure is hard to open.', | 
| 218 |  |  |  |  |  |  | 'That really hurt.',                          'I have to delete that.', | 
| 219 |  |  |  |  |  |  | 'It is just too big.',                        'Only when I cross my eyes.', | 
| 220 |  |  |  |  |  |  | 'Do you really think so?',                    'I took an educated guess.', | 
| 221 |  |  |  |  |  |  | 'Your theory is fundamentally flawed.',       "You probably shouldn't put your finger there." | 
| 222 |  |  |  |  |  |  | ); | 
| 223 |  |  |  |  |  |  |  | 
| 224 |  |  |  |  |  |  | @pS = ( | 
| 225 |  |  |  |  |  |  | 'I think you broke it.',          'It just needs new batteries.', | 
| 226 |  |  |  |  |  |  | 'How long have you known?',       'I wish I could fly.', | 
| 227 |  |  |  |  |  |  | 'At night the ice weasles come.', 'The penguins are tearing at my flesh.', | 
| 228 |  |  |  |  |  |  | "You think I'm dumb, don't you?", "I've never been so insulted.", | 
| 229 |  |  |  |  |  |  | 'Sure is windy out there.',       'Do you smell smoke?' | 
| 230 |  |  |  |  |  |  | ); | 
| 231 |  |  |  |  |  |  |  | 
| 232 |  |  |  |  |  |  | @pT = ( | 
| 233 |  |  |  |  |  |  | 'You should try it sometime.', "I don't think I'd like that.", | 
| 234 |  |  |  |  |  |  | 'Kiss me.',                    'Do you need a tissue?', | 
| 235 |  |  |  |  |  |  | 'Good question.',              'What an ugly cat!', | 
| 236 |  |  |  |  |  |  | 'Want to hear a joke?',        'Not if you are the one doing it.', | 
| 237 |  |  |  |  |  |  | 'It sure is a long way down.', 'How long did it take to make that?' | 
| 238 |  |  |  |  |  |  | ); | 
| 239 |  |  |  |  |  |  |  | 
| 240 |  |  |  |  |  |  | while ( ( $name, $val ) = each %Names ) { | 
| 241 |  |  |  |  |  |  | $rNames{ $val } = $name; | 
| 242 |  |  |  |  |  |  | } | 
| 243 |  |  |  |  |  |  |  | 
| 244 |  |  |  |  |  |  | while ( ( $name, $val ) = each %Phrases ) { | 
| 245 |  |  |  |  |  |  | $rPhrases{ $val } = $name; | 
| 246 |  |  |  |  |  |  | } | 
| 247 |  |  |  |  |  |  |  | 
| 248 |  |  |  |  |  |  | @Names = keys %Names; | 
| 249 |  |  |  |  |  |  |  | 
| 250 |  |  |  |  |  |  | @Actions = ( | 
| 251 |  |  |  |  |  |  | 'writes a poem',                            'enters from stage left', | 
| 252 |  |  |  |  |  |  | "peers over Michael's shoulder",            'laughs', | 
| 253 |  |  |  |  |  |  | 'screams in pain',                          'opens a book', | 
| 254 |  |  |  |  |  |  | 'sits at the table',                        'crosses stage right', | 
| 255 |  |  |  |  |  |  | 'looks under the chair',                    'straightens the table cloth', | 
| 256 |  |  |  |  |  |  | 'opens the window',                         'looks around in confusion', | 
| 257 |  |  |  |  |  |  | 'starts singing quietly',                   'closes the window', | 
| 258 |  |  |  |  |  |  | 'cries',                                    'enters from stage right', | 
| 259 |  |  |  |  |  |  | 'crosses stage left',                       'picks up the book', | 
| 260 |  |  |  |  |  |  | 'breaks the mirror',                        'kicks the table', | 
| 261 |  |  |  |  |  |  | 'gazes longingly at Pietro',                'dances a merry jig', | 
| 262 |  |  |  |  |  |  | 'thinks happy thoughts',                    'falls to the floor', | 
| 263 |  |  |  |  |  |  | 'tries to think of something funny to say', 'yearns for the good old days', | 
| 264 |  |  |  |  |  |  | 'turns on the radio',                       'turns off the radio', | 
| 265 |  |  |  |  |  |  | 'turns on the television',                  'turns off the television', | 
| 266 |  |  |  |  |  |  | 'selects a book from the bookshelf',        'concentrates', | 
| 267 |  |  |  |  |  |  | 'burps',                                    'clucks like a chicken', | 
| 268 |  |  |  |  |  |  | 'motions toward the door',                  'plops down on the sofa', | 
| 269 |  |  |  |  |  |  | 'looks around suspiciously',                'beings folding laundry', | 
| 270 |  |  |  |  |  |  | 'takes a pan of brownies from the oven',    'thinks of the color blue', | 
| 271 |  |  |  |  |  |  | "pours vinegar in Karen's shoes",           'eats a pickle', | 
| 272 |  |  |  |  |  |  | 'disrobes',                                 'dances about like a loon', | 
| 273 |  |  |  |  |  |  | 'flits about like a fawn in springtime',    'does an impression of Charlie Chaplin', | 
| 274 |  |  |  |  |  |  | 'takes a ham from the oven',                'begins plucking a chicken', | 
| 275 |  |  |  |  |  |  | 'tries to hide under the rug',              'removes the cushions from the sofa', | 
| 276 |  |  |  |  |  |  | 'opens the pantry',                         'climbs in the pantry', | 
| 277 |  |  |  |  |  |  | 'crawls under the sink',                    'closes the pantry', | 
| 278 |  |  |  |  |  |  | 'fixes a turkey sandwich',                  'starts making pancakes' | 
| 279 |  |  |  |  |  |  | ); | 
| 280 |  |  |  |  |  |  |  | 
| 281 |  |  |  |  |  |  | sub new { | 
| 282 | 0 |  |  | 0 | 0 |  | my $class = shift; | 
| 283 | 0 |  |  |  |  |  | my $self = bless {}, $class; | 
| 284 | 0 |  |  |  |  |  | return $self; | 
| 285 |  |  |  |  |  |  | } | 
| 286 |  |  |  |  |  |  |  | 
| 287 |  |  |  |  |  |  | sub RandomElement { | 
| 288 | 0 | 0 |  | 0 | 0 |  | shift if UNIVERSAL::isa( $_[ 0 ], __PACKAGE__ ); | 
| 289 | 0 |  |  |  |  |  | my $arrayref = shift; | 
| 290 | 0 |  |  |  |  |  | $arrayref->[ rand @{ $arrayref } ]; | 
|  | 0 |  |  |  |  |  |  | 
| 291 |  |  |  |  |  |  | } | 
| 292 |  |  |  |  |  |  |  | 
| 293 |  |  |  |  |  |  | sub StageDirections { | 
| 294 | 0 | 0 |  | 0 | 0 |  | shift if UNIVERSAL::isa( $_[ 0 ], __PACKAGE__ ); | 
| 295 | 0 |  |  |  |  |  | return $Delimiter{ 'left' } . RandomElement( \@Names ) . " " . RandomElement( \@Actions ) . $Delimiter{ 'right' } . "\n"; | 
| 296 |  |  |  |  |  |  | } | 
| 297 |  |  |  |  |  |  |  | 
| 298 |  |  |  |  |  |  | sub Make { | 
| 299 | 0 | 0 |  | 0 | 0 |  | shift if UNIVERSAL::isa( $_[ 0 ], __PACKAGE__ ); | 
| 300 | 0 |  |  |  |  |  | my $string = shift; | 
| 301 | 0 |  |  |  |  |  | my @chars = split ( //, $string ); | 
| 302 | 0 |  |  |  |  |  | my ( $out, $i, $temp ); | 
| 303 | 0 |  |  |  |  |  | for ( $i = 0 ; $i <= $#chars ; $i += 2 ) { | 
| 304 | 0 | 0 |  |  |  |  | if ( $chars[ $i ] eq "\n" ) { | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
| 305 | 0 |  |  |  |  |  | $out .= StageDirections(); | 
| 306 | 0 |  |  |  |  |  | $i--; | 
| 307 | 0 |  |  |  |  |  | next; | 
| 308 |  |  |  |  |  |  | } elsif ( $chars[ $i ] eq " " ) { | 
| 309 | 0 |  |  |  |  |  | $temp = RandomElement( \@nSpace ) . ":"; | 
| 310 |  |  |  |  |  |  | } elsif ( $chars[ $i ] eq "a" ) { | 
| 311 | 0 |  |  |  |  |  | $temp = RandomElement( \@nA ) . ":"; | 
| 312 |  |  |  |  |  |  | } elsif ( $chars[ $i ] eq "e" ) { | 
| 313 | 0 |  |  |  |  |  | $temp = RandomElement( \@nE ) . ":"; | 
| 314 |  |  |  |  |  |  | } elsif ( $chars[ $i ] eq "n" ) { | 
| 315 | 0 |  |  |  |  |  | $temp = RandomElement( \@nN ) . ":"; | 
| 316 |  |  |  |  |  |  | } elsif ( $chars[ $i ] eq "o" ) { | 
| 317 | 0 |  |  |  |  |  | $temp = RandomElement( \@nO ) . ":"; | 
| 318 |  |  |  |  |  |  | } elsif ( $chars[ $i ] eq "r" ) { | 
| 319 | 0 |  |  |  |  |  | $temp = RandomElement( \@nR ) . ":"; | 
| 320 |  |  |  |  |  |  | } elsif ( $chars[ $i ] eq "s" ) { | 
| 321 | 0 |  |  |  |  |  | $temp = RandomElement( \@nS ) . ":"; | 
| 322 |  |  |  |  |  |  | } elsif ( $chars[ $i ] eq "t" ) { | 
| 323 | 0 |  |  |  |  |  | $temp = RandomElement( \@nT ) . ":"; | 
| 324 |  |  |  |  |  |  | } else { | 
| 325 | 0 |  |  |  |  |  | $temp = "$rNames{ $chars[ $i ] }:"; | 
| 326 |  |  |  |  |  |  | } | 
| 327 | 0 | 0 | 0 |  |  |  | if ( ( $i + 1 ) > $#chars || $chars[ $i + 1 ] eq "\n" ) { | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
|  |  | 0 |  |  |  |  |  | 
| 328 | 0 |  |  |  |  |  | $out .= $temp . " " . RandomElement( \@pSpace ) . "\n" . StageDirections(); | 
| 329 | 0 |  |  |  |  |  | next; | 
| 330 |  |  |  |  |  |  | } elsif ( $chars[ $i + 1 ] eq " " ) { | 
| 331 | 0 |  |  |  |  |  | $temp .= " " . RandomElement( \@pSpace ); | 
| 332 |  |  |  |  |  |  | } elsif ( $chars[ $i + 1 ] eq "a" ) { | 
| 333 | 0 |  |  |  |  |  | $temp .= " " . RandomElement( \@pA ); | 
| 334 |  |  |  |  |  |  | } elsif ( $chars[ $i + 1 ] eq "e" ) { | 
| 335 | 0 |  |  |  |  |  | $temp .= " " . RandomElement( \@pE ); | 
| 336 |  |  |  |  |  |  | } elsif ( $chars[ $i + 1 ] eq "n" ) { | 
| 337 | 0 |  |  |  |  |  | $temp .= " " . RandomElement( \@pN ); | 
| 338 |  |  |  |  |  |  | } elsif ( $chars[ $i + 1 ] eq "o" ) { | 
| 339 | 0 |  |  |  |  |  | $temp .= " " . RandomElement( \@pO ); | 
| 340 |  |  |  |  |  |  | } elsif ( $chars[ $i + 1 ] eq "r" ) { | 
| 341 | 0 |  |  |  |  |  | $temp .= " " . RandomElement( \@pR ); | 
| 342 |  |  |  |  |  |  | } elsif ( $chars[ $i + 1 ] eq "s" ) { | 
| 343 | 0 |  |  |  |  |  | $temp .= " " . RandomElement( \@pS ); | 
| 344 |  |  |  |  |  |  | } elsif ( $chars[ $i + 1 ] eq "t" ) { | 
| 345 | 0 |  |  |  |  |  | $temp .= " " . RandomElement( \@pT ); | 
| 346 |  |  |  |  |  |  | } else { | 
| 347 | 0 |  |  |  |  |  | $temp .= " " . $rPhrases{ $chars[ $i + 1 ] }; | 
| 348 |  |  |  |  |  |  | } | 
| 349 | 0 |  |  |  |  |  | $out .= $temp . "\n"; | 
| 350 |  |  |  |  |  |  | } | 
| 351 | 0 |  |  |  |  |  | return $out; | 
| 352 |  |  |  |  |  |  | } | 
| 353 |  |  |  |  |  |  |  | 
| 354 |  |  |  |  |  |  | sub UnMake { | 
| 355 | 0 | 0 |  | 0 | 0 |  | shift if UNIVERSAL::isa( $_[ 0 ], __PACKAGE__ ); | 
| 356 | 0 |  |  |  |  |  | my $string = shift; | 
| 357 | 0 |  |  |  |  |  | my $out    = ""; | 
| 358 | 0 |  |  |  |  |  | my @lines  = split ( /\n/, $string ); | 
| 359 | 0 |  |  |  |  |  | foreach my $line ( @lines ) { | 
| 360 | 0 |  |  |  |  |  | ( $name, $val ) = split ( /: /, $line ); | 
| 361 | 0 | 0 | 0 |  |  |  | if ( $name =~ /^\[/ && ! $val ) { | 
| 362 | 0 |  |  |  |  |  | $out .= "\n"; | 
| 363 | 0 |  |  |  |  |  | next; | 
| 364 |  |  |  |  |  |  | } | 
| 365 | 0 | 0 |  |  |  |  | if ( defined $Names{ $name } ) { | 
| 366 | 0 |  |  |  |  |  | $out .= $Names{ $name }; | 
| 367 |  |  |  |  |  |  | } | 
| 368 | 0 | 0 |  |  |  |  | if ( defined $Phrases{ $val } ) { | 
| 369 | 0 |  |  |  |  |  | $out .= $Phrases{ $val }; | 
| 370 |  |  |  |  |  |  | } | 
| 371 |  |  |  |  |  |  | } | 
| 372 | 0 |  |  |  |  |  | return $out; | 
| 373 |  |  |  |  |  |  | } | 
| 374 |  |  |  |  |  |  |  | 
| 375 |  |  |  |  |  |  | 1; | 
| 376 |  |  |  |  |  |  | __END__ |