zoukankan      html  css  js  c++  java
  • Perl语言入门笔记 第十二章 文件测试

    =pod
    第十二章    文件测试
    
     文件测试操作符:
        -e:判断文件是否存在
        在创建新文件程序之前,应先检查指定的文件是否已经存在,以免意外覆盖重要的电子表格或是宝贵的生日档案。要达到此目的,我们可以用-e文件测试操作符来测试文件是否存在:
            die "Oops ! A file called '$filename' already exists.
    ";
                if -e $filename;
    
        -M:测试文件
            warn "Config file is looking pretty old
    ";
                if -M CONFIG > 28;
            CONFIG:为文件句柄,来检查CONFIG 28内是否改变过
    
        -s:查找硬盘中的文件的大小
            my @original_files = qw /fred barney betty wilma pebbles dino bamm-bamm /;
            my @big_old_files; #将要移到备份磁带上的既大且旧的文件列表
            foreach my $filename (@original_files)
            {
                push @big_old_files, $filename
                    if -s $filename > 100_000 and -A $filename > 90;
            }
    
     文件测试操作符    意义
     -r              文件或目录,对目前(有效的)用户或组来说是可读的
     -w              文件或目录,对目前(有效的)用户或组来说是可写的
     -x              文件或目录,对目前(有效的)用户或组来说是可执行的
     -o              文件或目录,由目前(有效的)用户拥有
     -R              文件或目录,对实际的用户或组来说是可读的
     -W              文件或目录,对实际的用户或组来说是可写的
     -X              文件或目录,对实际的用户或组来说是可执行的
     -O              文件或目录,由实际的用户拥有
     -e              文件或目录是存在的
     -z              文件存在且没有美容(对目录来说永远为假)
     -s              文件或目录存在而且有内容(返回值是以字节为单位的文件的大小)
     -f              是普通文件
     -d              是目录
     -l              是符号链接
     -S              是socket类型的文件
     -p              是命名管道,也就是先入先出队列
     -b              是块设备(比如默哥可挂载的磁盘)
     -c              是字符设备文件(比如某个IO设备)
     -u              文件或目录设置了setuid位
     -g              文件或目录设置了setgid位
     -k              文件或目录设置了sticky位
     -t              文件句柄是tty设备,(类似系统函数isatty()的测试,不能对文件名进行此测试)
     -T              看起来像文本文件
     -B              看起来像二进制文件
     -M              最后一次被修改后至今的天数
     -A              最后一次被访问后至今的天数
     -C              最后一次文件节点编号(inode)被变更后至今的天数
    
     上面的所谓的有效用户,指的是"负责"运行这个程序的人
    
    
    my $size_in_k = (-s) / 1024; #获取文件是kb大小
    
    
    测试同一文件的多项属性:
        可读又可写
        if(-r $file and -w $file)
        {   ... }
     虚拟文件句柄_(下划线)
        if(-r $file and -w _)
        {   ... }
    
        if(-r $file)
        {   print "The file is readable
    "; }
        if(-w _)
        {   print "The file is wirtable
    "; }
    
    
     栈式文件测试操作符:
        if(-w -r $file)
        {   print "The file is both readable and writeable!
    "; }
        use 5.010;
        if(-r -w -x -o -d $file)
        {   print "My directory is readable, writeable, and executable!
    "; }
    
        if(-d $file and -s _ < 512)
        {   print "The directory is less than 512 bytes!
    " }
    
     stat和lstat函数:
        my($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blockzies, $blocks) = stat($fileName);
    
    
     $dev, $ino
        即文件所在的设备与文件的inode编号,这个编号决定了这个文件的唯一性,会想发给文件的编号,即使他有多个不同的文件名(使用应链接!
    )
    
    
        $mode:
            文件的权限集合
    
        $nlink:
            文件或目录的硬链接数,也就是这个条目有多少个真实名称
    
        $uid和$gid
            以数值形式表示文件拥有者的用户ID及组ID
    
        $size:
            以字节为单位文件大小,和-s文件操作符的返回值相同
    
        $atime,$mtime,$ctime:
            三种时间戳,但在这里是以系统的时间格式来表示
    
        localtime函数:
            my $timestamp = 118060098;
            my $date = localtime $timestamp;
    
        在列表上下文中,localtime会返回一个数字元素组成的列表,但其中有些元素不是你想要的:
            my ($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $yday, $listdst)
                =   localtime $timestamp;
    
    使用字符串:
    
    
    =cut


    简单测试:

    #!/usr/bin/perl -w
    use strict;
    
    my $filename = "./file1";
    
    die "Oops ! A file called $filename already exists.
    "
        if -e $filename;


  • 相关阅读:
    php开发中处理emoji表情和颜文字的兼容问题
    red入门学习笔记
    面向对象的三个基本特征(讲解)
    详解Ajax请求(四)——多个异步请求的执行顺序
    ASP.NET MVC模型绑定的6个建议,徐汇区网站设计 狼人:
    2010年度报告:是谁在编写Linux内核? 狼人:
    Kataspace:用HTML5和WebGL创建基于浏览器的虚拟世界 狼人:
    .NET Micro Framework 4.2 RC2发布!,徐汇区网站设计 狼人:
    SilveOS:基于Silverlight的Web操作系统,徐汇区网站设计 狼人:
    年轻人,你着什么急? 狼人:
  • 原文地址:https://www.cnblogs.com/v-BigdoG-v/p/7398612.html
Copyright © 2011-2022 走看看