#!/usr/bin/perl-w

#########################################################################

#FileName:test6.pl

#########################################################################

#index(str,substr,position),在大字符串中查找

#position可以设置起始位置,返回位置数

my$stuff="helloword";

my$where=index($stuff,"wor");

print"where:$where\n";

my$where1=index($stuff,"w");

print"where1:$where1\n";

my$where2=index($stuff,"w",6);

print"where2:$where2\n";

#substr($string,$init_position,$length)处理部分字符串

$substr1=substr("helloworld",6,5);#得到substr1:world

print"substr1:$substr1\n";

#可以作替换字符串使用

substr($substr1,0,0)="hello";

print"substr1:$substr1\n";#substr1:helloworld

#替换功能也可以使用第四个参数

$string="helloworld";

substr($string,0,5,"xxxxx");

print"string:$string\n";

#sprintf格式化数据

$year="2014";

$month=8;

$day=2.0;

$data_tag=sprintf("%s/%d/%.3f",$year,$month,$day);

print"data_tag:$data_tag\n";#data_tag:2014/8/2.000

#排序

#排序子函数,按数字排序

subby_num{

$a<=>$b

}

@nums=(1,4,22,5,33,10,12);

print"nums:@nums\n";

@result1=sort@nums;

print"result1:@result1\n";#只会把数字当作字符排序

@result2=sortby_num@nums;

print"result2:@result2\n";#会根据数值大小进行排序

#对hash排序

my%socre=(

"kevin"=>100,

"xiang"=>50,

"jie"=>150,

"xxx"=>1,

"yyy"=>50

);

@socre1=%socre;

print"socre1:@socre1\n";#socre1:xiang50jie150kevin100xxx1yyy50

#排序子函数,根据value从小到大

#如果是数字直接用<=>如果是字符串用cmp

subby_socre_value{

$socre{$a}<=>$socre{$b}

}

@socre2=sortby_socre_valuekeys%socre;

print"socre2:@socre2\n";#socre2:xxxxiangyyykevinjie

%socre=(

"kevin"=>100,

"xiang"=>50,

"jie"=>150,

"xxx"=>1,

"yyy"=>50

);

#根据value从小到大,如果value相同,则根据key字母反序

#如果还有很多个条件,可以加or再限制

subby_socre_value_and_key{

$socre{$a}<=>$socre{$b}

or

$bcmp$a;

}

@socre3=sortby_socre_value_and_keykeys%socre;

print"socre3:@socre3\n";#socre3:xxxyyyxiangkevinjie