《Perl编程24学时教程》试题

2023-10-29 22:08
文章标签 教程 编程 24 试题 perl 学时

本文主要是介绍《Perl编程24学时教程》试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Perl编程24学时教程》试题
一、单选题
1、以下哪一个字符串直接量的定义方式是错误的( )
(1)'thank you'
(2)" "
(3)"a "friend" of yours"
(4)"a /"friend/" of yours"
2、以下哪一条语句是错误的( )
(1)$_= 'hello world';
(2)$a='hello world';
(3)my $b,$a='hello world';
(4)my ($a,$b)=(0,'hello world');
3、要使下面的程序正常运行,while后的表达式应选( )。
$a=0;$b=55;
while (表达式)
{
  $a+=2;
}
print "$a/n";
(1)$a = $b
(2)$a*$a <= $b
(3)$a != $b
(4)$b == 0
4、在Perl及其它程序设计语言中,数据是由( )。
(1)变量来表示的。
(2)运算符来表示的。
(3)变量的值来表示的。
(4)运算符的值来表示的。
5、@array是一个数组变量,语句print @array;输出的是:( )
(1)数组的各个元素。
(2)数组的大小。
(3)数组的第一个元素。
(4)什么都不输出。
6、语句$a = @array;执行后,变量$a的值是( )。
(1)数组@array的第一个元素的值。
(2)数组@array的大小。
(3)此语句语法是错的。
(4)未定义。
7、以下是用递归子程序求45的3次方,if后的表达式应该是( )
sub power
{
  ($m , $n)=@_;
  $n>=1 || die 'error!';
  return($m) if(表达式);
  return($m*power($m , $n-1));
}
print power(45,3);
(1)$n == 1
(2)$n < 0
(3)$n> = 1
(4)$n != 0
8、如要在子程序中接受两个作为参数的数组,则( )
(1)子程序用一个二维数组作形参。
(2)子程序用两个数组作形参。
(3)子程序用两个引用作形参。
(4)子程序不能被实现。
9、以下程序表达式1处将创建一个对包含命令行参数的数组@ARGV的引用$point,表达式1处应为( )
#!/usr/contrib/bin/perl -w
1: 表达式1
2: print "ARGV = ", join(",", 表达式2), "/n";
(1)my $point=@ARGV;
(2)my $point={@ARGV};
(3)my $point=ARGV;
(4)my $point=/@ARGV;
10、上题的程序表达式2处应为( )
(1)@$point
(2)$point
(3)@point
(4)/@point
11、模式/[^/d^-]/能匹配下面哪个字符串?( )
(1)-10
(2)200
(3)abc123
(4)#%@
12、以下哪个程序段能够显示哈希结构%abcd中所有的元素?( )
(1)foreach $Var (keys %abcd)
   {
     print “$Var /n”;
   }
(2)for ($I=0;$I<%abcd;$I++)
   {
     print “$%abcd{$I} /n”;
   }
(3)while ($Var (keys %abcd))
   {
     print “$Var /n”;
   }
(4)print join(‘/n’,%abcd);
13、以下程序执行后,变量$count的值是( )
  $Str=’hello world!’;
$count=0;
while ($Str=~m/(/w+)/g)
  {
    $count++;
  }
(1)1
(2)2
(3)3
(4)12
14、以下程序的作用是( )
  open(MYFILE,"temp.txt");
  while (<MYFILE>) {
    while ( /(/w)/g ) {
      $seen{$1}++;
    }
  }
  foreach $word(keys %seen)
  {
    print "$seen{$word} $word/n";
  }
  close(MYFILE);
(1)删除文件temp.txt中所有单词字符。
(2)统计temp.txt中各单词字符的出现频率。
(3)错误的程序。
(4)统计temp.txt中单词字符的总数。
15、如果在用POST方式提交给TEMP.CGI的URL中编码了一个名为MY的值,如
<FORM ACTION="lindi.com/temp.cgi?MY=20" METHOD="POST">这样的URL,而窗体中也有同名的一个域,如<INPUT TYPE="TEXT" NAME="MY" VALUE="1">。在TEMP.CGI中语句$Var=param('MY');执行后,变量$Var中值将为( )
(1)2
(2)undef
(3)20
(4)1
(答案)
二、判断题
1、语句print 'no!' if($a!='hello');执行后,当$a中值不等于'hello'时就会显示no!( )
2、运算符(+)能将两个字符串联结起来。( )
3、my操作符与local操作符作用是一样的。( )
4、语句print 'hello "World"';是正确的。( )
5、逻辑运算符(||)与(or)的优先级是一样的。( )
6、用语句my MYFILE;能够定义一个文件句柄类型的变量。( )
7、正则表达式 m'/u/jqpublic/perl/lindi' 等价于///u//jqpublic//perl//lindi/( )
8、管道的作用是将一个进程的标准输出作为另一个进程的标准输入。( )
9、模式匹配默认匹配的变量是$&( )
10、Perl的内置函数stat的参数可以是文件句柄或者文件名。( )
11、用Perl编的程序的可移植性很强,所以它不需修改即能在任何计算机系统上正确的运( )
12、语句$point={1=>'hello',2=>'world'};创建了一个对哈希结构的引用。( )
13、Perl的内置函数都是放在模块中的。( )
14、服务器与浏览器之间的通信只能通过一问一答的方式进行。( )
15、用CGI模块中的redirect函数能实现HTTP重定向。( )
(答案)
三、多选题
1、以下哪些表达式在字符串变量$Str中有子字符串’10mm’时为真?( )
(1)$Str=~/10mm/
(2)$Str=~//dmm/
(3)$Str=~//d?m*/
(4)index($Str,'10mm')!=-1
2、模式/(/d{4})-(/d{1,2})-(/d{1,3})/能够匹配下列哪些字符串?( )
(1)happy 2001-02-27
(2)today is 2001-2-7
(3)99-2-7
(4)02-27
3、Perl中的基本数据类型有:( )
(1)标量。
(2)数组。
(3)哈希结构。
(4)文件句柄。
4、尖括号运算符(<>)可用来( )
(1)读取文件。
(2)作模式匹配运算符
(3)搜索指定的文件。
(4)作程序的注释。
5、如要创建一个对列表(1..6)的引用,可以使用以下哪段代码?( )
(1)$point=(1..6);
(2)@array=(1..6);
   $point=/@array;
(3)my $point
   {
    my @array=(1..6)
$point=@array;
   }
(4)$point=[1..6];

6、当你的CGI程序不能运行时,可能是下述哪些情况?( )
(1)在浏览器地址栏中输错了CGI程序的URL地址。
(2)CGI程序中有错误。
(3)服务器不支持CGI程序。
(4)浏览器有问题。
7、用GET和POST方法提交窗体的区别在于( )
(1)GET方法是将窗体的值解码后放入URL提交而POST方法是直接传递给服务器。
(2)GET方法是将窗体的值直接传递给服务器而POST方法是解码后放入URL中提交。
(3)GET方法只能提交有限的值而POST能提交任意多的值给服务器。
(4)GET能通过将窗体的值设为CGI程序的地址来调用另一个CGI程序而POST方法不能。
8、为了使CGI程序尽量安全,我们应注意哪几点?( )
(1)不能用普通CGI窗体发送需要保密的信息。
(2)将CGI程序编译成执行文件。
(3)要在#!行上加-T开关。
(4)重要数据要在服务器端进行校验。
9、以下对隐藏域的说法那些是正确的?( )
(1)含有隐藏域的窗体只能用POST方法提交给服务器。
(2)如有一段HTML代码<INPUT TYPE=HIDDEN NAME=MYNAME VALUE=1>则是定义了一个隐藏域。
(3)用户不能改变隐藏域的值。
(4)CGI程序要记录用户的在其站点进行过的操作只有用隐藏域来实现。
10、cookie的作用是( )
(1)暂时保存与用户相关的信息。
(2)代替文件和数据库。
(3)没作用。
(4)直接对浏览器进行控制。
11、cook的局限性在于( )
(1)不能被用户删除,编辑和查看。
(2)生存期有限。
(3)只能被发出cookie的服务器接收。
(4)不是所有的浏览器都支持cookie。
12、以下对在CGI程序中发送电子邮件的说法,那些是对的?( )
(1)只有UNIX系统才能运行MTA方式发送邮件的CGI程序。
(2)用Net:SMTP模块写的发送邮件程序可运行于任何网络操作系统上。
(3)用MTA方式发送电子邮件是指CGI程序调用外部的MTA程序来发送电子邮件。
(4)Net:SMTP模块中是用send_mail函数来发送电子邮件的。
13、如要调用一个外部程序EDIT,可使用以下哪些方法?( )
(1)system("edit");
(2)$Var=qx{edit};
(3)"edit";
(4)open (MYFILE, "edit |");   
14、中断一个Perl程序可以使用那些方法?( )
(1)用exit函数。
(2)用die函数。
(3)用last函数。
(4)没有办法。
15、 以下对尖扩号运算符的使用那些是错误的?( )
(1)$Var=<STDOUT>;
(2)$Var=<STDIN>;
(3)$Var=<STDERR>;
(4)$Var=<>;
(答案)
四、实作题
1、我们在程序时会觉得加行号是件烦事,但源程序有行号在调试和阅读时又能带来不少方便,现请编写一个程序,能给文本文件加上行号。采用命令行方式将原文本文件名和加了行号后的生成的文本文件名传送给此程序。
2、Perl本身是不带文本编辑器的,但是我们在编写程序时不停敲入操作系统命令在文本编辑器和Perl解释程序中切换会很影响速度和思路的,但我们可以用Perl将文本编辑器和Perl解释程序粘合在一起。请编一个程序,能在你用文本编辑器编写后的源程序自动调用Perl解释程序来解释运行,在你看完结果后又返回文本编辑器继续对源程序进行修改。你需要编写的源程序名用命令行方式传送给此程序。
3、编写一个网上点歌的CGI程序,用户能通过HTML页中的下拉列表框进行点歌,CGI程序根据用户的选择播放不同的歌曲。
4、用CGI程序编写一个自动友情链接系统,能将用户提交的网站地址、网站名、网站图片等信息保存在文件中,并在用户访问时显示出来。

《Perl编程24学时教程》试题参考答案
一、单选题答案
1、(3)2、(3)3、(2)4、(3)5、(1)6、(2)7、(1)8、(3)9、(4)10、(1)11、(3)12、(1)13、(2)14、(2)15、(1),因为在标量上下文中包含两个元素的数组将返回数组的大小2

(返回)
二、判断题答案
1、错,比较字符串时不能用关系运算符(!=),而该用(ne),正确的语句是print 'no!' if($a ne 'hello');
2、错,(+)是数字运算符,联结字符串应用运算符(.)
3、错。
4、对。
5、错,(||)的优先级高于(and)。
6、错,文件句柄不能用my 操作符来定义。
7、对。
8、对。
9、错。应该是$_
10、对。
11、错,当其中有依赖于具体操作系统的代码时,移植时就需要进行修改。
12、对。
13、错。
14、错,则CGI程序还可以使用服务器推送的工作方式。
15、对。

(返回)
三、多选题答案
1、(1)(2)(3)(4)2 、(1)(2)3、(1)(2)(3)4、(1)(3)5、(2)(4)6、(1)(2)(3)(4)7、(1)(3)(4)8、(1)(3)(4)9、(2)(3)(4)
10、(1)11、(2)(4)11、(2)(3)(4)12、(2)(3)(4)13、(1)(2)(4)
14、(1)(2)(3)15、(1)(3)

(返回)
四、实作题答案

1、源程序如下:
#AddNum.pl
#!/usr/bin/perl
my $Text,SOURCE,DEST,$i=1;
@ARGV==2 or die "the number of parameter can but is 2!/n"; #参数数量须等于2。
open(SOURCE,$ARGV[0])||die $!; #打开源文件。
open(DEST,">$ARGV[1]")||die $!; #创建目标文件。
while(defined($Text=<SOURCE>)) #将原文件读一行到$Text中。
{
 print DEST "$i: $Text"; #写入目标文件。
 $i++; #行号加一。
}
print "file modify done!";
close(SOURCE); #关闭源文件。
close(DEST); #关闭目标文件。


2、源程序如下:
#!/usr/contrib/bin/perl -w
my $got;
@ARGV==1 or die "the number of parameter can but is 1!/n"; #参数数量须等于1。
while($got ne 'Q' and $got ne 'q')#按Q键退出。
{
 system("edit $ARGV[0]");
 system("perl $ARGV[0]");
 print 'enter Q to quit,enter other to continue:';
 $got =<STDIN>;
 chomp $got;
}
exit;


3、源程序如下:
# play.cgi
#!/usr/contrib/bin/perl -w
use strict;
use CGI qw(:all);
my(@Song,$i,$index);
@Song=('xieyuxin.mid','TianXianZi.mpg');
$index=0;
print header;
print start_html("点播歌曲");
$index=param('D1') if(param);
print "<BGSOUND src=$Song[$index] autostart=true loop=infinite>";
for($i=0;$i<@Song;$i++)
{
  $Song[$i]='';
  $Song[$i]='selected' if($i=$index);
}
print <<END_PAGE_PLAY;
<form method=POST action=play.cgi>
 <p><center><select size=1 name=D1 OnChange=this.form.submit();>
 <option value=0 $Song[0]>歌曲1</option>
 <option value=1 $Song[1]>歌曲2</option>
 </select></center></p>
</form>
END_PAGE_PLAY
print end_html;

4、源程序如下:
文件1( HTML页LOGO.HTM )
<html>
<head>
<title>登记链结</title>
</head>
<body text="#000000" bgcolor="#FFFFCC">
<form method="POST" action="friend.cgi">
 <p><center>网站名称<input type="text" name="Name" size="20"></center></p>
 <p><center>网站地址<input type="text" name="Adderss" size="20"></center></p>
 <p><center>网站图片<input type="text" name="Pic" size="20"></center></p>
 <p><center><input type="submit" value="提交" name="B1"><input type="reset" value="全部重写" name="B2"></center></p>
</form>
</body>
</html>

文件2(friend.cgi)
# friend.cgi
#!/usr/contrib/bin/perl -w
# 程序设计(林杕)
use strict;
use CGI qw(:all);
use Fcntl qw(:flock);
my($Name,$Adderss,$Pic,$Line,$i);
print header;
print start_html("友情链结");
open(FRIEND,"+>>friend.txt");

if(param)
{
  $Name=param('Name');
  $Adderss=param('Adderss');
  $Pic=param('Pic');
  print FRIEND "$Name/n";
  print FRIEND "$Adderss/n";
  print FRIEND "$Pic/n";
  seek(FRIEND,0,0);
}

print '<table border="1" width="100%">';
while($End)
{
  last if(!defined($Name=<FRIEND>));
  last if(!defined($Adderss=<FRIEND>));
  last if(!defined($Pic=<FRIEND>));
  print <<END_PAGE_FRIEND;
   <tr>
    <td><a href=$Adderss><center><img border=0 src=$Pic></center>
     <p><center>$Name</center></p></a>
    </td>
   </tr>
  END_PAGE_FRIEND
}
print '</table>';
close(FRIEND);
print end_html;


 

这篇关于《Perl编程24学时教程》试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/303653

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [