文章目录
8.3 Perl 语言基础入门
- 详见视频:Perl 语言基础入门-01 P137
● Perl:Practical Extraction and Report Language 官网免费下载 (网不好可能打不开),支持多操作系统
- 直译语言:Interpreted Language
- 序列处理:特别适合字符串(序列)处理
- 文件处理:方便简洁的文件写入与写出
- 模式匹配:全面支持正则表达式
8.3.1 第一个 Perl
- 创建一个文本文件,命名为 test.pl
- 第一行写 Perl 执行环境(安装路径)
linux 写:#!/usr/bin/perl
Windows 写:#!C:/Strawberry/perl/bin/perl.exe
- 第二行写一个简单的语句,比如:
print "He1lo world!";
- 保存 test.pl,打开 cmd 命令窗口。
- 切换到 test.pl 所在目录。
cd Desktop
- 执行
perl test.pl
命令,运行你的第一个程序。
8.3.2 Perl 的基本规则
- 每条语句后面必须有"
;
"。 - 注释前面加"
#
",只对单行有效。 - 变量的定义极其简单随便:
◆ 不用提前声明变量,随用随定义;
◆ 不用定义变量类型,赋值后程序会自动判断;
◆ 变量名区分大小写,以字母开头,不能有特殊字符;
◆ 变量名前面加"$
“,用”=
"赋值。$scalar = expression
● 各种引号的使用:
- 单引号
''
完全直白的翻译引号里的全部内容。
- 双引号
""
可以识别引号里的变量和反义字符。
- 反引号
``
将引号里的内容当成命令来执行。
● 各种操作符的使用:
-
比较操作符 Comparison Operators:
针对字符串的比较操作符和针对数字的比较操作符是不一样的!
◆ 数字比字母小!
◆ 大写字母比小写字母小!
◆ 由小到大:数字 [0-9]、大写字母 [A-Z]、小写字母 [a-z]
-
逻辑操作符 Logical Operators:
可以直接写:or
,and
,not
也可以用符号代替:||
,&&
,!
特殊逻辑操作符:xor
异或
△a xor b = (a' and b) or (a and b')
(a’ = not a)
如果 a、b 两个值不相同,则异或结果为1
。如果 a、b 两个值相同,异或结果为0
。 -
字符串操作符 String Operators:
.
字符串拼接相连
x
字符串重复复制
.=
字符串拼接相连后赋值$string1 = "potato"; $string2 = "head"; $string3 = $string1 . $string2; #patatohead $string4 = $string1 x 2; #patato $string1 .= $string2; #string1 = patatohead
8.3.3 字符串常用函数
-
Perl 有许多提前定义好的函数:
函数名 ( 参数 1, 参数 2,... 参数 n)
注意:
参数间的逗号是必不可少的
括起参数的括号则是可有可无的 -
length
函数:
语法:length($string);
说明:求出字符串$string 的字节值(长度)。$string="Per15"; $size=length($string); #这时 $size=5 #计算一条氨基酸序列的长度 $seq="GHMGSSVLEELVQLVKDKNIDISIKYDPRKDSEVEANRVITDDIELLKKILAYFLPEDAILKGGHYDNQLQNGIKRVKEFLESSPNTQWELRAFMAVMHFSLTADRIDDDILKVIVDSMNHHGDARSKLREELAELTAE"; $len=length($seq); print "The protein contains $len amino acids.";
-
substr
函数:
语法:substr($string, offset, 1ength);
说明:截取字符串$string 的子字符串。
★ 注意:第一位是 0,不是 1。
offset
代表起始字符的位置,而 offset 如果是负值的话,就会从字符串右边开始指定字符。
length
代表引用的字符串长度,如果省略 length 则代表从起始值到字符串的最后一个字符长度。
$s1=substr("perl5",2,2); #$s="rl" 从第二个字符串后开始截取 2 个字符串 $s2=substr("perl5",1); #$s="erl5" 从第一个字符串后开始截取剩余字符串 $s3=substr("perl5",-5,3); #$s="per" 从倒数第五个字符串开始截取 3 个字符串 #提取出蛋白质序列的功能区,功能区位于第 12 个氨基酸到第 23 个氨基酸。 $seq="GHMGSSVLEELVQLVKDKNIDISIKYDPRKDSEVEANRVITDDIELLKKILAYFLPEDALKGGHYDNQLQNGIKRVKEFLESSPNTQWELRAFMAVMHFSLTADRIDDDILKVIVDSMNHHGDARSKLREELAELTAE"; $begin=11; $end=22; $length=$end-$begin+1; $region=substr($seq, $begin, $length)