Perl+习题答疑Word格式文档下载.docx
《Perl+习题答疑Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Perl+习题答疑Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
\@fredis@fred\n"
(Shouldbe678910)\n"
my@barney=&
above_average(100,1..10);
\@barneyis@barney\n"
(Shouldbejust100)\n"
#!
\usr\bin\perl-w
usestrict;
subabove_average{
my@in=@_;
my$average_value=&
average(@in);
my@out;
foreach(@in){
if($_>
$average_value){push@out,$_;
}
return@out;
subaverage{
my$sum=0;
foreach(@in)
{
$sum+=$_;
$sum=$sum/@in;
return$sum;
3写一个程序,要求用户在不同的行中输入一些字符串,将此字符串打印出来,规则是:
每一条占20个字符宽度,右对齐。
为了确保正确的输出,在开头打印出一串数字作为比较(帮助调试)。
注意,不要犯19个字符宽度的错误。
例如,如果输入,hello,good-bye,则输出为:
123456789012345678901234567890123456789012345678901234567890
hello
good-bye
(第5章习题)
/usr/bin/perl-w
unless(@ARGV){
lengthofline>
my$length=$ARGV[1];
)ordie;
$ARGV[2]"
my$cnt=1;
foreach(1..$length){
$cnt"
$cnt++;
if($cnt==10){$cnt=0;
printOUT"
while(<
){
chomp;
my$len=length($_);
if($len>
=$length){printOUT"
$_\n"
else{
foreach(1..$length-$len){
printOUT"
"
}
printOUT"
closeIN;
closeOUT;
修改上一个程序,允许用户选择宽度,如,用户输入30,hello,good-bye(在不同的行中),则每一行的宽度为30。
(提示:
参阅第二章相应部分)。
提示,如果选择的宽度太长,可以增加比较行的长度。
my($n,@a)=split/\s*,\s*/,<
STDIN>
’
chomp$a[-1];
4写一个程序,读入一串单词(一个单词一行)◆,输出每一个单词出现的次数。
如果某个作为数字使用值是undefined的,会自动将它转换为0。
)如果输入单词为fred,barney,dino,wilma,fred(在不同行中),则输出的fred将为3。
作为额外的练习,可以将输出的单词按照ASCII排序。
(第6章习题)
my%count;
){
$count{$_}++;
foreach(sort{$acmp$b}keys%count){
$_\t$count{$_}\n"
5使用模式测试程序,创造一个模式能匹配任何单词(\w意义下的单词),但这个单词必需以字母a结尾。
它匹配wilma而没匹配barney吗?
它匹配Mrs.WilmaFlintstone吗?
wilma&
fred呢?
使用前一章习题的文件进行练习(如果没有上述字符串,则加上它们)(第8章习题)
修改上述程序,使之将由a结尾的单词放到$1之中。
同时修改源代码,使此变量对应的值被放在单引号之中,如$1contains‘Wilma’。
unless(@ARGV)
{
)
if($_=~/(\w*a)\W?
/or$_=~/(\w+a)$/){printOUT"
$_contains\'
$1\'
}#also,/(\w*a)\b/
Whatabout“wssssilma&
fred,alsoMrs.WilmaFlintstone”?
6写一个程序,它可以得到当前文本文件的一个拷贝。
在拷贝的文件中,字符串Fred(大小写无关)将被Larry替换掉。
(因此,“ManfredMann”将变成“ManLarryMann”.)输入的文件名已经在命令行中指定(不需要询问用户),输出的文件名是对应的输入文件名后面加上.out。
(第9章习题)
修改上面程序,使之将Fred由Wilma替换,Wilma由Fred替换。
如果输入的为fred&
wilma,则输出为Wilma$Fred。
$ARGV[0].out"
){
s/fred/\n/ig;
s/wilma/Fred/ig;
s/\n/Wilma/ig;
7写一个程序,能重复要求用户猜测某个在1到100之间的数字,直到猜对为止。
你的程序应当能随机的产生一个数字,使用公式int(1+rand100)。
当用户猜测错误时,程序应该回应“Toohigh”或者“Toolow”。
如果用户输入quit或exit,或者回车时,程序应立即退出。
如果用户猜测正确,程序也退出。
(第10章习题)
if(defined$ARGV[0]and$ARGV[0]=~/help/i){
justrun\n"
Thisisagameofguessthenumberbetween1-100\nHaveFun^_^\n"
my$num=int(1+rand100);
my$in=<
while
(1){
if($in=~/(quit)|(exit)/i){print"
GameOver\n"
last;
elsif($in>
$num){print"
TooHigh\n"
$in=<
next;
elsif($in<
TooLower\n"
elsif($in==$num){print"
Great,youareright\n"
8写一个程序,找出命令行中存在时间最长的文件名,并报告其天数。
当参数为空时,其行为如何(例如,命令行中没有输入任何的文件)?
(第11章习题)
perl$0<
files>
my@in=@ARGV;
my$longest=0;
my$save_name;
foreach(@in){
my$age=-M;
if($age>
$longest){$longest=$age;
$save_name=$_;
Thelongestfileis$save_name\nIt$longestdaysaftermodified\n"
9如果你的操作系统支持,写一个程序来查找当前目录下的符号连接(symboliclinks),并将它们的值打印出来(如ls–l一样:
name->
value)。
(第12章习题)
dir>
my@file=glob"
$ARGV[0]/*"
foreach(@file){
chomp$_;
my$link=readlink"
if(defined$link){print"
$_->
$link\n"
@a=`ls-l|grep-e‘->
’`;
10写一个程序,从文件中读入字符串,一行一个字符串,然后让用户输入模式,这个模式可能匹配上某些字符串。
对于每一个模式,程序将指出文件中有多少个字符串(多少行)匹配上了,并指出是哪些。
对于新的模式不需要重新读文件,将这些字符串保留在内存中。
文件名可以直接写在程序之中。
如果模式无效(例如,圆括号不匹配),则程序报告这个错误,并让用户继续尝试新的模式。
当用户输入一个空行,则程序退出。
(第16章习题)
my@in=<
print"
Pleaseinputamodel\n"
my$model=<
chomp$model;
if($model=~/^\s+$/or!
defined$model){
print"
Next\n"
last;
my$cnt=0;
foreach(@in)
{
if($_=~/$model/){
print"
$cnt++;
}
Total$cntmatchthemodel\n"
next;
11将blast程序原始输出转换成列表格式,16列数据分别是
1Query_id
2Query_length
3Query_start
4Query_end
5Subject_id
6Subject_length
7Subject_start
8Subject_end
9Identity
10Positive
11Gap
12Align_length
13Score
14E_value
15Query_annotation
16Subject_annotation
BLASTN2.2.18[Mar-02-2008]
Reference:
Altschul,StephenF.,ThomasL.Madden,AlejandroA.Schaffer,
JinghuiZhang,ZhengZhang,WebbMiller,andDavidJ.Lipman(1997),
"
GappedBLASTandPSI-BLAST:
anewgenerationofproteindatabasesearch
programs"
NucleicAcidsRes.25:
3389-3402.
Query=X16077#rRNA_18S[Arabidopsisthaliana]18SrRNAgene
(1902letters)
Database:
/panfs/GAG/xiemin/FFF/rRNA/././ass.scafSeq.gapfill3.shorter.
cut/ass.scafSeq.gapfill3.shorter.18
131sequences;
13,055,928totalletters
Searching..................................................done
ScoreE
Sequencesproducingsignificantalignments:
(bits)Value
scaffold6343376e-92
scaffold634
Length=18181
Score=337bits(170),Expect=6e-92
Identities=230/250(92%)
Strand=Plus/Minus
Query:
1171gagaaatcaaagtttttgggttccggggggagtatggtcgcaaggctgaaacttaaagga1230
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct:
9158gagaaatcaaagtttttgtattccgggggaagtatggttgcaaagctgaaacttaaagaa9099
1231attgacggaagggcaccaccaggagtggagcctgcggcttaatttgactcaacacgggga1290
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9098attgacggaagggcaccaccaggagtggagcctgcggcttaatttgactcaacacgggaa9039
1291aacttaccaggtccagacatagtaaggattgacagactgagagctctttcttgattctat1350
|||||||||||||||||||||||||||||||||||||||||||||||||||
9038atcttaccaggcccagacactggaaggattgacagattgaaagctctttcttgattcagt8979
1351gggtggtggtgcatggccgttcttagttggtggagcgatttgtctggttaattccgttaa1410
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8978gggtggtggtgcatggccgttcttagttggtggagtgatttgtctgcttaattgcgataa8919
1411cgaacgagac1420
||||||||||
8918cgaacgagac8909
Score=317bits(160),Expect=6e-86
Identities=321/372(86%),Gaps=2/372(0%)
353gatcgcatggcctctgtgctggcgacgcatcattcaaatttctgccctatcaactttcga412
||||||||||||||||||||||||||||||||||||||||||||||||||||||
10036gatcgcatggcctc-gcgccagcgacgcatctttcaaatgtctgccctatcaactttcga9978
413tggtaggatagtggcctaccatggtggtaacgggtgacggagaattagggttcgattccg472
|||||||||||||||||||||||||||||||||||||||||||||||||
9977tggtaagttctatgcttaccatggttgtaacgggtaacggggaatcagggttcgattccg9918
473gagagggagcctgagaaacggctaccacatccaaggaaggcagcaggcgcgcaaattacc532
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9917gagaggcagcctgagacacggctaccacatccaaggaaggcagcaggcgcgcaaattacc9858
533caatcctgacacggggaggtagtgacaataaataacaataccgggctctttcga-gtctg591
|||||||||||||||||||||||||||||||||||||||||||||||
9857cactcccggcacggggaggtagtgacgaaagataacaatacgggactcatccgaggcctc9798
592gtaattggaatgagtacaatctaaatcccttaacgaggatccattggagggcaagtctgg651
|||||||||||||||||||||||||||||||||||||||||||||||
9797gtaattggaatggcaacactttaaatcctttatggagtatctaactgagggcaagtctgg9738
652tgccagcagccgcggtaattccagctccaatagcgtatatttaagttgttgcagttaaaa711
||||||||||||||||||||||||||||||||||||||||||||||||||||||
9737tgccagcagccgcggtaattccagctcagttagcgtatatcaaagttgttgcggttaaaa9678
712agctcgtagttg723
||||||||||||
9677agctcgtagttg9666
Score=129bits(65),Expect=3e-29
Identities=137/161(85%)
956gacagtcgggggcattcgtatttcatagtcagaggtgaaattcttggatttatgaaagac1015
|||||||||||||||||||||||||||||||||||||||||||||||||
9373gacaggcgggggcattcgtattgctacgttagaggtgaaattcttggatcgtagcaagac9314
1016gaacaactgcgaaagcatttgccaaggatgttttcattaatcaagaacgaaagttggggg1075
|||||||||||||||||||||||||||||||||||||||||||||||||||
9313ggactgaagcgaaagcatttgccaaggatgttctcgttgatcaagaacgaaagtttgggg9254
1076ctcgaagacgatcagataccgtcctagtctcaaccataaac1116
|||||||||||||||||||||||||||||||||||||
9253ctcgaaggcgatcagataccgccctagtccaaaccataaac9213
Score=123bits(62),Expect=2e-27
Identities=86/94(91%)
1658aacgaggaattcctagtaagcgcgagtcatcagctcgcgttgactacgtccctgcccttt1717
|||||||||||||||||||||||||||||||||||||||