perl写的一个随机编故事的程序(rand随机函数)

代码如下:

#!/bin/perl
use strict;  
use warnings;  

#定义变量  
my $count;  
my $input;  
my $number;  
my $sentence;  
my $story;  

#定义四个数组  
#定义了人物数组  
my @nouns=  
(  
   'Dad',  
   'TV',  
   'Mom',  
   'Groucho',  
   'Rebecca',  
   'Harpo',  
   'Robin Hood',  
   'Joe and Moe',  
);  

#定义了动作数组  
my @verbs=  
(  
   'ran to',  
   'giggled with',  
   'put hot sauce into the orange juice of',  
   'exploded',  
   'dissolved',  
   'dissolved',  
   'sang stupid songs with',  
   'jumped with',  
 );  

 #定义了地点数组  
 my @prepositions=  
 (  
     'at the store',  
     'over the rainbow',  
     'at the beach',  
     'before dinner',  
     'in New York City',  
     'in a dream',  
     'around the world',  
 );  

 do   
 {  
    #每次运行以前,清空$story的内容  
    $story='';  
    #以下是随机组合生成故事  
    for ($count =0;$count<6;$count++)  
    {  
       #我们划分一下结构,scalar @nouns 是获取@nouns数组元素的个数,然后用rand总这几个数中随机生成几个,最后int是将得到的数取整  
       $sentence =$nouns[int(rand(scalar @nouns))]  
       ." "  
       .$verbs[int(rand(scalar @verbs))]  
       ." "  
       .$nouns[int(rand(scalar @nouns))]  
       ." "  
       .$prepositions[int(rand(scalar @prepositions))]  
       .'.';  
       $story .=$sentence;  
   }  
   print "\n",$story,"\n";  
   print "\nType \"quit\"to quit, or press Enter to continue:";  
   $input=<STDIN>;  
}  
#这里是利用正则表达式来匹配首字符是q的字符串,如果有,那么就退出,/^是匹配起始位置,/i是不区分大小写  
until ($input=~/^\s*q/i);  
exit;

相关推荐