• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Perl经常使用函数一览

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  1. 数学函数
  2. 字符串函数
  3. 数组操作
  4. hash操作
  5. 文件操作
  6. 文件目录操作
  7. 时间操作
  8. 其他操作
  9. 函数文档的查看
  10. 经常使用的特殊变量
  11. 经常使用的标准模块

数学函数

abs 绝对值的获取

$ret = abs $num;
#abs(-3)的结果是3

sqrt 平方根获取函数

$ret = sqrt $num;
#sqrt(4) 的结果是2

int 整数值提取函数

$ret = int $num;
int(1.5)值是1,int(-1.5)值是-1

ceil(POSIX)返回不小于 x 的下一个整数,x 如果有小数部分则进一位。

use POSIX 'ceil';
$ret = ceil $num;

floor(POSIX) 输出最小的整数对于给定的实数

use POSIX 'floor';
my $num = 45.4;
my $floor = floor($num);
#结果是45

rand 随机数的产生  返回大于0小于给定的数。

int(rand(10));
# 0 到 9 之间的整数

looks_like_number(Scalar::Util)  如果表达式是number 返回true

use Scalar::Util 'looks_like_number'; 
$ret = looks_like_number $num;

字符串操作

join 把字符片段合成一个字符串

$ret = join(',', @array);

 

length 字符串的长度

$ret = length $str;

 

substr($string,$initial_position,$length);

三个参数:一个字符串,一个从零起点算的起始位置以及字符串的长度

如果想要一直取到字符结尾,可以忽略第三个参数(子串长度)就行了。

起始位置可以为负值,表示从字符串结尾开始倒数(-1代表最后一个字符)

$ret = substr($str, 2, 4);

替换的模式

substr($str, 0, 2, $replace);

 

index搜索字符串在主字符串中的相对位置

返回的字符位置从零开始算起的。如果无法找到返回-1.

可以加上可选的第三个参数,来指定开始搜索开始的地方。

$ret = index($str, $search, $pos);

 

rindex  搜索子串出现的最后的位置。

$ret = rindex($str, $search);

 

split 根据分隔符拆开一个字符串,第一个参数是正则表达式

@ret = split(/,/, $str);

 

reverse

在列表上下文,返回一个反序的列表,在标量上下文返回字符的逆序。

print join(", ", reverse "world", "Hello"); # Hello, world
print scalar reverse "dlrow ,", "olleH";    # Hello, world

 

uc 返回字符串的大写

$ret = uc $str;

 

ucfirst 返回首字母大写的字符串

$ret = ucfirst $str;

lc 返回字符串的小写

$ret = lc $str;

 

lcfirst 返回首字母小写的字符串

$ret = lcfirst $str;

 

sprintf 指定格式的输出

$ret = sprintf("%08d", $num);
#前面前导0补位
ret = sprintf("%.2f", $num);
#小数点后2位
%c 数値をASCIIコードに対応する文字に変換
%s 引数を文字列として解釈
%d 引数を符号付整数として解釈
%u 引数を符号なし整数として解釈
%o 正数を8進文字列に変換
%x 正数を16進文字列に変換(小文字表記)
%X 正数を16進文字列に変換(大文字表記)
%b 正数を2進文字列に変換 
%f 引数を浮動少数点として解釈
%e 引数を浮動小数点として解釈(指数表記(小文字)でフォーマット)
%E 引数を浮動小数点として解釈(指数表記(大文字)でフォーマット)
%g 引数を浮動小数点として解釈(指数表記(小文字)でフォーマット。末尾の0は削除される)
%G 引数を浮動少数点として解釈(指数表記(大文字)でフォーマット。末尾の0は削除される)
%p 引数に与えられた変数のメモリ上のアドレスに変換

 

chomp去除末尾换行符

chomp $str

 

q 单引号圈引

q/aaa'bbb/
# 相当于 'aaa\'bbb'

 

qq双引号圈引

qq/aaa"bbb/
#相当于 "aaa\"bbb"

 

quotemeta 正规表达式中使用特殊字符的反义

$ret = quotemeta $str

 

chr 返回asicii码对应的字符

$ret = chr $num;

 

数组操作

数组长度的获取

$ret = @array;

 

数组最后索引号的获取

$ret = $#array;

 

shift 移除数组的第一个元素并返回

$ret = shift @array;

 

unshift 放入一个或多个元素到数组的开始

unshift(@array, @items);

 

pop 数组中移除最后一个元素,并返回

$ret = pop @array;

 

push 添加一个或多个元素到数组的尾端

push(@array, @items);

 

splice 对数组元素的操作

A.数组元素的取出

@ret = splice(@array, $pos, $size)

B.数组元素的替换

splice(@array, $pos, $size, @items);

 

数组的切片

@ret= @array[0, 1, 3]; # 数组的0,1,3位置的元素列表

 

grep 符合条件元素的获取

@ret = grep { 条件 } @array; 

条件大于3的列表

@ret = grep { $_ > 3 } @array;

 

map 所有数组元素的处理

@ret = map { 要素の操作 } @array;

所有元素乘以2的集合

@ret = map { $_ * 2 } @array;

 

max(List::Util) 数组中最大值的获取

use List::Util 'max';
$ret = max @array;

 

min(List::Util)数组中最小值的获取

use List::Util 'min';
$ret = min @array;

 

sum(List::Util)数组中元素的求和

use List::Util 'sum';
$ret = sum @array;

 

sort 数组元素的排序

[A]数值的顺序比较

@ret = sort { $a <=> $b } @array;

[B]数值降序的比较

@ret = sort { $b <=> $a } @array;

[C]asci码顺序的比较

@ret = sort { $a cmp $b } @array;

[D]ascii码的降序排列

@ret = sort { $b cmp $a } @array;

 

shuffle(List::Util)数组的随机排序

use List::Util 'shuffle';
@ret = shuffle @array;

 

reverse 数组元素的倒序

ret = reverse @array;

 

qw文字列的圈引(加上“和逗号)

@array = qw/cat dob mouse/;

 

Hash 的操作

 

keys 键值的获取操作

@ret = keys %hash;

 

values值得获取操作

@ret = values %hash;

 

each 键-值对应的一一获取

($key, $value) = each %hash;

通过循环进行获取

while (my ($key, $value) = each %hash) {
  ...
}

 

exists 确定键值是否存在

$ret = exists($hash{$key});

 

delete键值的删除

delete $hash{$key};

 

reverse 键值对的翻转

%ret = reverse %hash;

 

文件的操作

open 文件的打开函数

open(my $fh, "<", $file)
  or die "Cannot open $file: $!";

文件打开失败注意错误的处理

 

[A]经常的操作

读取 <
写入>
追加 >>

 

close 文件句柄的关闭

close $fh;

 

<> 钻石操作符

文件一行的读入

$line = <$fh>;

通常与循环一起使用

while (my $line = <$fh>) {
  ...
}

 

[A]所有行的读入

列表上下文一次性所有读取所有文件内容

@lines = <$fh>;

 

opendir  目录的打开函数

opendir(my $dh, $dir)
  or die "Cannot open $dir: $!";

注意失败进行相应的处理

 

closedir 目录句柄的关闭

closedir $dh;

 

readdir 目录文件名

目录名的一一读取

while (my $file = readdir $dh) {
  ...
}

 

文件目录的操作

unlink 文件删除

unlink $file
  or die "Cannot remove $file: $!";

 

copy(File::Copy) 文件的拷贝

use File::Copy 'copy';
copy($file_from, $file_to)
  or die "Cannot copy $file_from to $file_to: $!";

 

move(File::Copy) 文件的移动

use File::Copy 'copy';
move($file_from, $file_to)
  or die "Cannot move $file_from to $file_to: $!";

 

chdir 当前目录的变更

chdir $dir
  or die "Cannot change directory $dir: $!";

 

mkdir 目录的创建

mkdir $dir
  or die "Cannot create directory $dir: $!";

 

rmdir 目录的删除

rmdir $dir
  or die "Cannot remove directory $dir: $!";

 

mkpath(File::Path) 多层目录的创建

use File::Path 'mkpath';
eval {
  mkpath $dir
};

if ($@) {
  die "Cannot create $dir: $@";
}

 

rmtree(File::Path) 包含文件目录的删除

use File::Path 'rmtree';

rmtree($dir, {error => \my $errors});
for my $diag (@$errors) {
  my ($file, $message) = each %$diag;
  warn "problem unlinking $file: $message\n";
}

 

getcwd(Cwd) 当前目录的获得

use Cwd 'getcwd';
$ret = getcwd;

 

chmod 文件权限的变更

chmod($permission, $file)
  or die "Cannot change permission $file: $!";

 

basename(File::Basename) 文件名的获取

use File::Basename 'basename';
$ret = basename $file;
# /a/b/c.txt  结果是 c.txt

 

dirname(File::Basename) 文件包中目录名的获取

use File::Basename 'dirname';
$ret = dirname $file;

# /a/b/c.txt  的结果是 /a/b

 

文件运算符

确认文件和目录是否存在

#文件确认是否存在

$ ret = - f $file;

#目录的存在确认

$ ret = - d $dir;

 

通常和条件语句一起使用

if (-f $file) {
  ...
}

 

[A]常用的文件运算符一览

-f  文件是否存在
-d 目录是否存在
-r  是否可读
-w 是否可写
-x 是否可执行
-M 最后更新的天数
-A 最后访问天数
-s 文件尺寸的获取

 

时间

time 1970年1月1日到现在的秒数

$ret = time;

 

localtime 日期和时间的获取

($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime;
$year += 1900;
$mon += 1;

 

sleep 休眠的秒数

sleep $sec;

 

usleep(Time::HiRes) 休眠微秒

usleep $microsec;

 

其他函数

defined 确定值是否定义

$ret = defined($val);

 

kill函数的使用

kill($signal_number, $child_process_id);

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
perl截取fastq文件发布时间:2022-07-22
下一篇:
perl多线程理解发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap