美文网首页
为什么这么喜欢perl?

为什么这么喜欢perl?

作者: chensole | 来源:发表于2019-03-31 21:29 被阅读0次
    2019-03-31 14:25:03屏幕截图.png

    perl introduction

    在生物信息分析过程中,主要有两大主体,生物信息文本挖掘和数据分析。说到文本挖掘,不得不说perl这个program,这是一个很强大的语言,尤其是Larry Wall所赋予的正则表达式,让我不得重新开始perl的学习历程。今天主要记录下perl 中的主要变量类型。

    标量$

    my $scalar = "hello world\n";
    my $scalar = 1;
    #print
    print $scalar."\n";
    print "$scalar\n";
    #split利用分隔符切分字符串成为列表(常用)
    my @tmp = split (" ",$scalar);
    

    列表@

    my @array1 = (1,2,3,4);
    my @array2 = qw/fred bareney handsome/; #qw 对于字符串列表书写方便,不需要加引号和逗号
    #列表取子集
    my $b = $array[0] #索引默认从0开始
    #遍历列表
    #列表可以直接字符串内插打印,默认以空格为分隔符
    print "@array1\n";
    #可以指定分隔符
    $" =","
    print "@array2\n"
    #foreach print
    foreach $scalar(@array1) {
       print "$scalar\n";
    }  
    #内置操作符$# -->列表最后元素的索引
    foreach $scalar(0..$#array) {
      print "$scalar\n";
    }
    ##############列表的常用操作################
    #push列表尾部添加成员
    #切记,所要添加的成员可以是列表,可以是标量,甚至是哈希(哈希会以列表的形式插入数组)
    my $chr = "double";
    push @array1,$chr;
    push @array1,@array2;
    #pop删除列表尾部最后一个成员
    my $a = pop @array1;
    #shift删除列表头部第一个成员
    my $a = shift @array1;
    #unshift列表头部添加成员
    unshift @array1,$a;
    
    #sort and reverse排序
    sort @array1 #递增排序
    reverse @array2 #递减排序
    #join将数组成员连接成字符串
    join ("," ,@array1) #用","将数组连成字符串,推荐join后面加(),不然代码晦涩难懂
    

    #################重点来了##################

    hash%

    hash在perl语言中占有很重要的位置,同时也是最复杂的数据结构。
    perl只有两种组织数据的方法:
     1.作为有序列表存储在数组中,并按位置访问
     2.作为无序的键/值对存储在hash中

    #定义一个hash
    my %hash = ("kinda",24,"chensole",23,"changliang",22); #perl 默认逐对读取构成键/值对
    #还有一种明了的定义方法(胖箭头操作符=>)
    my %hash = ("kinda"=>24,
                "chensole"=>23,
                "changliang"=>22);
    #若hash中的key值出现重复,则不添加新成员操作(hash碰撞),而是进行重赋值,覆盖先前的value值
    ###############hash的常用操作################
    #访问hash成员
    #数组是利用数组名和索引访问成员
    #hash是利用hash名和key值访问成员
    my $age = $hash{"kinda"} #用{}将key值括起来,即表示hash变量的一个数据成员,也表示该成员的值
    #遍历hash
    #实现方式是将hash变量中所有key值都存放在一个数组中,然后利用数组遍历的方式对hash的key值进行遍历,从而实现hash的遍历
    #keys函数提取hash的key值存为数组
    foreach $key(keys %hash) {
      print "$key:$hash{$key}\n";
    }
    #defined查找hash中是否包含指定的key值(常结合if语句一起使用)
    if (defined $hash{"kinda"}) {
      $hash{"kinda"}++   #对这个表达式不要感到奇怪,$hash{"kinda"}在这里就是一个标量,等价于$scalar++
    } else {
      $hash{"kinda"} = 20;
    }
    #排序遍历
    foreach (sort keys %hash) {
      print "$_:$hash{$_}\n"; #使用perl内置变量$_
    }
    

    END

    这里只是简单记录了下在perl中一些常见的变量形式,下次重点介绍perl中的引用(相当于c语言中的指针)。在perl中利用引用、列表、hash,可以创建更加丰富的数据结构。

    相关文章

      网友评论

          本文标题:为什么这么喜欢perl?

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