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,可以创建更加丰富的数据结构。
网友评论