Perl 习题(11)
1 写一个程序,将一些字符串(不同的行)读入一个列表中,逆向输出它。如果是从键盘输入的,那在Unix 系统中应当使用CTRL+D 表明end-of-file,在Windows 系统中使用CTRL+Z.(第3章习题)
2 写一个子程序,名为&above_average,将一列数字作为其参数,返回所有大于平均值的数字(提示:另外写一个子程序来计算平均值,总和除以数字的个数)。利用下面的程序进行测试:(第4章习题) my @fred = &above_average(1..10); print \print \my @barney = &above_average(100, 1..10); print \print \
3 写一个程序,要求用户在不同的行中输入一些字符串,将此字符串打印出来,规则是:每一条占20 个字符宽度,右对齐。为了确保正确的输出,在开头打印出一串数字作为比较(帮助调试)。注意,不要犯19 个字符宽度的错误。例如,如果输入,hello, good-bye,则输出为:
123456789012345678901234567890123456789012345678901234567890 hello good-bye (第5章习题)
修改上一个程序,允许用户选择宽度,如,用户输入30,hello, good-bye(在不同的行中),则每一行的宽度为30。(提示:参阅第二章相应部分)。提示,如果选择的宽度太长,可以增加比较行的长度。
4 写一个程序,读入一串单词(一个单词一行)◆,输出每一个单词出现的次数。(提示:如果某个作为数字使用值是undefined 的,会自动将它转换为0。)如果输入单词为fred, barney, dino, wilma, fred(在不同行中),则输出的fred 将为2。作为额外的练习,可以将输出的单词按照ASCII 排序。(第6章习题)
5 使用模式测试程序,创造一个模式能匹配任何单词(\\w 意义下的单词),但这个单词必需以字母a 结尾。它匹配wilma而没匹配barney 吗?它匹配Mrs. Wilma Flintstone 吗? wilma&fred 呢?使用前一章习题的文件进行练习(如果没有上述字符串,则加上它们)(第8章习题)
修改上述程序,使之将由a 结尾的单词放到$1 之中。同时修改源代码,使此变量对应的值被放在单引号之中,如$1 contains ?Wilma?。
6 写一个程序,它可以得到当前文本文件的一个拷贝。在拷贝的文件中,字符串Fred(大小写无关)将被Larry 替换掉。
(因此,“Manfred Mann”将变成“ManLarry Mann”.)输入的文件名已经在命令行中指定(不需要询问用户),输出的文件名是对应的输入文件名后面加上.out。(第9章 习题)
修改上面程序,使之将Fred 由Wilma 替换,Wilma 由Fred 替换。如果输入的为fred&wilma,则输出为Wilma$Fred。
7 写一个程序,能重复要求用户猜测某个在1 到100 之间的数字,直到猜对为止。你的程序应当能随机的产生一个数字,使用公式int(1 + rand 100)。当用户猜测错误时,程序应该回应“Too high”或者“Too low”。如果用户输入quit或exit,或者回车时,程序应立即退出。如果用户猜测正确,程序也退出。(第10章 习题)
8 写一个程序,找出命令行中存在时间最长的文件名,并报告其天数。当参数为空时,其行为如何(例如,命令行中没有输入任何的文件)?(第11 章 习题)
9 如果你的操作系统支持,写一个程序来查找当前目录下的符号连接(symbolic links),并将它们的值打印出来(如ls–l 一样:name -> value)。(第12章 习题)
10 写一个程序,从文件中读入字符串,一行一个字符串,然后让用户输入模式,这个模式可能匹配上某些字符串。对于每一个模式,程序将指出文件中有多少个字符串(多少行)匹配上了,并指出是哪些。对于新的模式不需要重新读文件,将这些字符串保留在内存中。文件名可以直接写在程序之中。如果模式无效(例如,圆括号不匹配),则程序报告这个错误,并让用户继续尝试新的模式。当用户输入一个空行,则程序退出。(第16 章 习题)
11 将blast程序原始输出转换成列表格式,16列数据分别是
先将下面两个序列集进行blast比对,选取的参数: -p blastn -i -d -o -F F -e 1e-10
然后将-o输出的blast结果按照题目要求转化为列表格式;
/panfs/GAG/caiql/panda/Solexa_assembly_estimate/Zhuhm/Final/BAC.fa
/panfs/GAG/caiql/panda/Solexa_assembly_estimate/Zhuhm/Final/OldVersion.fasta
1 Query_id 2 Query_length 3 Query_start 4 Query_end 5 Subject_id 6 Subject_length 7 Subject_start 8 Subject_end 9 Identity 10 Positive 11 Gap 12 Align_length 13 Score 14 E_value 15 Query_annotation 16 Subject_annotation