您的位置:首页 > 其它

Perl 字符串操作 以及 自定义排序学习笔记

2018-01-20 13:45 435 查看
#!/usr/bin/perl -w

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

# File Name: test6.pl

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

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

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

my $stuff = "hello word";

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("hello world", 6, 5); #得到substr1: world

print "substr1: $substr1\n";

#可以作替换字符串使用

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

print "substr1: $substr1\n"; #substr1: hello world

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

$string = "hello world";

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

#排序

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

sub by_num{

$a <=> $b

}

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

print "nums: @nums\n";

@result1 = sort @nums;

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

@result2 = sort by_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: xiang 50 happy 150 xue 100 xxx 1 yyy 50

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

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

sub by_socre_value{

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

}

@socre2 = sort by_socre_value keys %socre;

print "socre2: @socre2\n"; #socre2: xxx xiang yyy xeuhuikuailie

%socre = (

"kevin" => 100,

"xiang" => 50,

"jie" => 150,

"xxx" => 1,

"yyy" => 50

);

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

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

sub by_socre_value_and_key{

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

or

$b cmp $a;

}

@socre3 = sort by_socre_value_and_key keys %socre;

print "socre3: @socre3\n"; #socre3: xxx yyy xuehuikuaile
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Perl学习