• Perl新接触的小命令


    0,glob()函数

    my @infile = glob("$indir/*.txt.gz");  #获得指定路径下的文件名,并形成列表,如果$indir为空,则自动匹配当前目录下的指定文件名

    1,sprintf()函数

    my $rate_CG = sprintf("%.2f",$methy_CG*100/($methy_CG+$unmethy_CG));         #http://www.360doc.com/content/14/1229/14/12090552_436620848.shtml

    2,判断文件或目录的各种属性(转载:http://blog.sina.com.cn/s/blog_5e425dd601019317.html)

    示例:

    if(-e "File-Name")
    {
      print "TRUE ";
    }
    else
    {
      print "FALSE ";
    }

     检测选项                 含义

    -r              文件或目录对此(有效的)用户(effective user)或组是可读的
    -w             文件或目录对此(有效的)用户或组是可写的
    -x             文件或目录对此(有效的)用户或组是可执行的
    -o             文件或目录由本(有效的)用户所有
    -R             文件或目录对此用户(real user)或组是可读的
    -W            文件或目录对此用户或组是可写的
    -X             文件或目录对此用户或组是可执行的
    -O             文件或目录由本用户所有
    -e              文件或目录名存在
    -z              文件存在,大小为0(目录恒为false)
    -s              文件或目录存在,大小大于0(值为文件的大小,单位:字节)
    -f               为普通文本
    -d              为目录
    -l               为符号链接
    -S              为socket
    -p              为管道(Entry is a named pipe(a“fifo”))
    -b              为block-special 文件(如挂载磁盘)
    -c              为character-special 文件(如I/O 设备)
    -u              setuid 的文件或目录
    -g              setgid 的文件或目录
    -k              File or directory has the sticky bit set
    -t              文件句柄为TTY(系统函数isatty()的返回结果;不能对文件名使用这个测试)
    -T             文件有些像“文本”文件
    -B             文件有些像“二进制”文件
    -M             修改的时间(单位:天)
    -A             访问的时间(单位:天)
    -C             索引节点修改时间(单位:天)

    3,操作Perl数组: shift, unshift, push, pop(转载:https://cn.perlmaven.com/manipulating-perl-arrays)

    和可以直接访问单独的数组元素一样,Perl也提供了很多其它有趣的方式来操作数组。特别是,有些函数可以很方便有效的将Perl的数组作为栈或者队列来使用。

    pop

    pop函数会删除并返回数组的最后一个元素。

    在第一个例子(3元素数组)中可以看到,pop函数删除最后一个元素(下标最大)并返回它。

    my @names = ('Foo', 'Bar', 'Baz');
    my $last_one = pop @names;
    
    print "$last_one
    ";  # Baz
    print "@names
    ";     # Foo Bar
    

     如果原数组为空,pop函数会返回undef

    push

    push 函数可以在数组的后面添加一个或多个值。(当然,也可以添加0个值,但是没有用,不是么?)

    my @names = ('Foo', 'Bar');
    push @names, 'Moo';
    print "@names
    ";     # Foo Bar Moo
    
    my @others = ('Darth', 'Vader');
    push @names, @others;
    print "@names
    ";     # Foo Bar Moo Darth Vader
    

    在这个例子中我们最初有个两元素数组。之后我们向数组尾部push了一个标量,数组扩展成了3元素数组。

    第二次调用push,我们push了@others数组的内容到@names尾部,把它扩充成5元素数组。

    shift

    shift函数会让整个数组左移。设想一下,数组从左边开始。数组的第一个元素会从数组“掉下来”,并成为函数的返回值(如果数组为空,shift 会返回 undef。)

    这样操作之后,数组会减少一个元素。

    my @names = ('Foo', 'Bar', 'Moo');
    my $first = shift @names;
    print "$first
    ";     # Foo
    print "@names
    ";     # Bar Moo
    

    这和pop很像,但是它作用于数组索引的小端。

    unshift

    这是shift的反函数。unshift 会传入一个或多个值(或者0个) 并把它放在数组的开头,将其他元素右移动。

    你可以向它传单个的标量,那么这个值会成为数组的第一个元素。或者像第二个例子那样,你可以传递第二个数组,那么第二个数组的所有元素(我们例中的@others)会复制到主数组的开头(例中@names),并将其他元素向高索引方向移动。

    my @names = ('Foo', 'Bar');
    unshift @names, 'Moo';
    print "@names
    ";     # Moo Foo Bar
    
    my @others = ('Darth', 'Vader');
    unshift @names, @others;
    print "@names
    ";     # Darth Vader Moo Foo Bar
  • 相关阅读:
    Reflector 插件
    Tips for ILMerge
    WaitAll for multiple handles on a STA thread is not supported 解决方案
    MSI: UAC return 0x800704C7
    SET与SETX的区别
    年在Copyright中的含义
    gacutil : 添加.NET 4.0 assembly 到GAC失败
    LicenseContext.GetSavedLicenseKey 需要 FileIOPermission
    Linq学习之linq基础知识
    SQL Server 2008如何导出带数据的脚本文件
  • 原文地址:https://www.cnblogs.com/Formulate0303/p/7239558.html
Copyright © 2020-2023  润新知