美文网首页Perl语言学习
BGI-College生信入门——6、Perl小骆驼学习笔记(一

BGI-College生信入门——6、Perl小骆驼学习笔记(一

作者: 华大基因学院 | 来源:发表于2022-07-19 16:26 被阅读0次

    「环境」

    -w显示程序中出现的一些警告,方便debug

    #!/usr/bin/perl -w

    「基础语法」

    perl -e'print "hello world!\n"'

    hello world!

    「创建perl脚本」

    vi hello_world.pl

    # 进入输入模式键入以下内容,并保存退出

    #!/usr/bin/perl -w

    print"hello world!\n";

    print'hello world!\n';

    # 保存退出

    :wq

    「运行hello_world.pl」

    perl hello_world.pl

    「运行结果」

    hello world!

    hello world!\n

    双引号和单引号的区别:双引号可以正常解析转义符(\),单引号无法解析则会原样输出

    「标识符」

    程序中使用的变量名、常量名、函数名和语句块名等统称为标识符

    英文字母(a~z,A~Z),数字(0~9)和下划线(_)

    区分大小写

    「数据类型」

    「标量:数字和字符串(使用时在变量前加$表示标量)」

    1.单引号内的字符串直接量(单引号内表示单引号或反斜杠需要用反斜杠转义)

    my$s1= cool;

    my$s2="today is$s1";

    my$s3='today is $s1';

    print$s2$3;

    #运行结果:today is cool today is $s1

    2.字符串操作符:“.”表示连接,“x”表示重复

    my$a= bio;

    my$b= informatics;

    my$c=$a.$b

    my$d=$ax 3;

    print$c$d;

    #运行结果:bioinformatics biobiobio

    3.双目赋值操作符:“+=”、“*=”和“.=”

    my$j+= 1;

    #等效于my $j = $j + 1;

    my$k*= 2;

    #等效于my $k = $k * 2

    my$l.= 3;

    #等效于my $l = $l . 3

    「数组:用于存储一个有序的标量值的变量」

    1.数组 @ 开始,使用美元符号($)+变量名来访问数组的变量(指定下标)

    @number = (1,2,3,4,5);

    print$number[0];

    #运行结果:1

    #也可以用qw简写来定义数组

    @data = qw/1 2 3 4 5/;

    @data = qw!1 2 3 4 5!;

    @data = qw#1 2 3 4 5#;

    @data = qw[1 2 3 4 5];

    @data = qw{1 2 3 4 5};

    2.按序列输出的数组形式:起始值..结束值

    @data = (1..10);

    print"@data\n";

    #运行结果:

    1 2 3 4 5 6 7 8 9 10

    「添加或删除数组元素」

    1.pop

    #删除数组最后一个元素

    pop @array;

    2.shift

    #弹出数组第一个值,并返回它。数组的索引值也依次减一。

    shift@array;

    3.push

    #将List(列表)中的值添加到数组末尾

    push @array, List;

    4.unshift

    #将List(列表)中的值添加到数组开头,并返回新数组的元素个数

    unshift @array, List;

    「访问数组元素」

    1.任何求值得到数字的表达式都可用作下标,如果得到非整数会自动舍去小数,无论正负

    2.下标超过数组尾端则返回undef

    「切割数组:」

    @data = (1..10);

    @copy = @data[3,4,5];

    print@copy;

    「列表的赋值:」

    左侧列表的三个变量被依次赋予右侧列表对应的值,等效于三次独立的赋值操作

    ($a,$b,$c) = ("earth","moon", undef);

    左右两侧数量不对等时:

    左侧(变量)>右侧(标量),多余的变量会被设成undef

    右侧(标量)>左侧(变量),自动忽略多余的标量

    「数组只能包含标量,不能包含其他数组,即数组无法成为列表中的元素」

    「splice操作符:」

    用于删除或替换

    向列表指定位置追加元素,可以将length设为0即可

    #offset:起始位置;length:替换的元素个数;list:替换元素列表

    splice @array, offset [, length[, list]];

    「split函数将字符串转为数组」

    pattern,分隔符

    expr,指定字符串数

    limit,返回该数组元素个数

    split [pattern, [expr, [limit]]] string;

    「join函数将数组转换为字符串」

    expr,连接符

    list,列表或数组

    join expr list;

    「sort函数对数组排序」

    1.大写字符排在小写字符前面

    2.数字排在字母前面

    3.标点散落在各处

    「each操作符」

    遍历数组元素,返回元素的索引值和元素的值

    use 5.012;

    my @rocks = qw/earth moon spark star/;

    while(my($index,$value) = each @rocks){

    say"$index:$value";

    }

    # 等效于:

    @rocks = qw/earth moon spark star/;

    foreach$index(0..$#rocks){

    print"$index:$rocks[$index]\n";

    }

    「reverse操作符」

    读取列表(数组)的值,并按相反的次序返回该列表

    不会修改列表的值

    「哈希变量:一个key/value对的集合」

    键值对之间的逗号可以使用“=>”表示

    %data = ('earth',100,'moon',80,'spark',50);

    「访问哈希值:」

    $data{earth};

    「返回哈希所有的keys」

    keys %data;

    「展开哈希」

    @array = %hash;

    「哈希赋值」

    反序哈希(需要键值对均唯一)

    my %inverse_hash = reverse %hash;

    「exists函数判断是否存在某个键」

    if(exists${"keys"});

    「delete函数删除指定的键值对」

    delete$hash{"keys"};

    「变量上下文」

    @data = ('earth','moon','spark');

    @copy = @data;#复制数组

    $num= @data;#数组赋值给标量,返回数组元素个数

    「比较操作符(数字/字符串)」

    ==(or eq) #相等

    !=(or ne) #不等

    <(lt) #小于

    >(gt) #大于

    <=(or le) #小于或等于

    >=(or ge) #大于或等于

    获取用户输入

    $l= ;

    「布尔值」

    1.如果是数字,0为假,其他所有数字都为真

    2.如果是字符串,空字符为假,其他所有字符为真

    3.如果既不是字符串也不是数字,先转换为数字或字符串再判断真假

    4.字符串“0”跟数字“0”是同一个标量,字符串“0”是唯一当成假的非空字符串

    5.布尔值取反:!

    「chomp操作符」

    去除行末的换行符

    $text="a line of text\n";

    chomp($text);

    chomp($text= );

    「while控制结构」

    只要条件为真,就会不断执行代码块

    $count= 0;

    while($count< 10){

    print"count is now$count\n";

    $count+= 1;

    }

    「foreach控制结构」

    逐项遍历列表中的值,依次迭代

    ### 在循环中若修改了控制变量的值,则会同时修改列表中的元素

    my$word;

    foreach$word(qw/earth moon spark star/){

    print"The planet is$word\n";

    }

    「undef值」

    用于构造数字累加器 累加一些奇数

    my$n= 1;

    my$sum;

    while($n< 10){

    $sum+=$n;

    $n+= 2;

    }

    print"The total was$sum\n";

    「defined函数」

    判断某个字符串是undef而不是空字符

    #如果是undef返回假,否则返回真

    $string= ;

    defined($string);

    「Perl的默认变量:$_」

    #例如在foreach循环开头省略控制变量

    foreach(1..10){

    print"I can count to$_.\n";

    }

    「标量上下文与列表上下文」

    大家中学时代做语文阅读的时候总会有一道题——“请你根据上下文分析xxx词在行文中的具体作用”,Perl里面的“上下文”与之类似,同一个表达式在不同的代码上下文,可能会产生不同的含义

    my @people = qw/abc cde bcd/;

    #列表上下文

    my @sorted_people = sort @people;

    #标量上下文

    my$num= 100 + @people;

    print@sorted_people$num;

    #运行结果:abc bcd cde 103

    强制指定标量上下文

    my @rocks=qw/abc bcd cde/;

    print"I have", scalar @rocks,"rocks!\n";

    相关文章

      网友评论

        本文标题:BGI-College生信入门——6、Perl小骆驼学习笔记(一

        本文链接:https://www.haomeiwen.com/subject/eefsirtx.html