《Perl編程24學時教程》試題

來源:互聯網
上載者:User

《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、Regex 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中的基礎資料型別 (Elementary Data Type)有:( )
(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;

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.