zoukankan      html  css  js  c++  java
  • Perl经常使用函数一览

    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);
  • 相关阅读:
    [BZOJ2809][Apio2012]dispatching
    [BZOJ4584][Apio2016]赛艇
    [BZOJ3206][Apio2013]道路费用
    [codeforces551E]GukiZ and GukiZiana
    [BZOJ3809]Gty的二逼妹子序列
    [BZOJ3289]Mato的文件管理
    [BZOJ3052][UOJ#58][WC2013]糖果公园
    [SPOJ10707]Count on a tree II
    [BZOJ1086][SCOI2005]王室联邦
    python小知识
  • 原文地址:https://www.cnblogs.com/tjxwg/p/3063087.html
Copyright © 2011-2022 走看看