• 目录相关操作


    在目录中移动

    chdir '/etc' or die  "cannot chdir to /etc: $!";

    如果调用chdir时不加参数,Perl将尝试将工作目录设置成主目录。

    文件名通配

    my @all_files = glob '*';
    my @pm_files  = glob '*.pm';

    如果一次匹配多种模式,可以在参数中用空格隔开各个模式

    my @all_files_including_dot = glob '.* *' ;

    在glob操作符之前,程序都是通过使用尖括号语法来调用此功能,看起来和读取文件句柄差不多:

    my @all_files = <*> ; # 效果和这样的写法完全一致: my @all_files = glob '*';

    Perl 会把尖括号出现的变量替换成它的值,类似于双引号变量的内插。

    目录句柄

    要特别注意.和..也在其中,因此,如果我们只想处理名称以pm结尾的文件,则可以在循环使用跳过这个函数:

    while ( $name = readdir $dh) {
        next unless $name =~ /^./ ;
       .... 
    }

    文件和目录的操作

    删除文件

    在Perl里面,我们可以使用unlink操作符,并指定要删除的文件列表:

    unlink 'slate','bedrock','lava';
    unlink  qw(slate bedrock lava);

    unlink 参数是一个列表, glob 函数提供的正好是一个列表,因此可以一次性删除多个文件

    unlink glob '*.o";

    unlink的返回值代表成功删除的文件数目。

    重命名文件

    rename ‘old’,’new’;

    链接与文件

    建硬链接

    link "chicken","egg" or warn "cann't link chicken to egg: $!";

    创建一个软链接

    sysmlink "dodgson" , "carroll" or warn "cann't symlink dodgson to carroll: $!";

    要取得符号链接指向的位置,请使用readlink 函数,参数不是符号链接时返回undef

    my $where = readlink "carroll";
    my $perl  = readlink "/usr/local/bin/perl";

    两种链接都可以使用unlink 移除

    创建和删除目录

    创建目录通过调用mkdir函数即可:

    mkdir 'fred',0755 or warn "cannot make fred directory: $!":

    0755 八进制的数表示初始权限。

    rmdir 移除空目录

    my $temp_dir = "/temp/scratch_$$";  # $$ 由进程操作符决定
    print "name:$temp_dir
    ";
    
    mkdir $temp_dir,0700 or die "cannot create $temp_dir: $!";
    
    unlink glob "$temp_dir/* $temp_dir/.*";
    rmdir $temp_dir;

    如果临时目录里创建子目录,那么unlink操作会失败,rmdir也会跟着失败。
    请参考Perl自带的File::Path 模块,里面的rmtree函数提供了完整的解决方案。

    修改权限

    chmod 755,'fred','barney'


    chmod会返回成功更改的条目数量

    修改隶属关系

    chown函数修改一系列文件的拥有者以及所属组

    my $user = 1004;
    my $group = 100;
    chown $use,$group,glob '*.o';

    可以使用getpwnam函数将用户名转换成用户编号,再用相应的getgrnam 函数把用户组转换成编号:

    defined(my $user = getpwnam 'merlyn' ) or die 'bad user';
    defined(my $group = getgrnam 'users') or die 'bad group';
    chown $suer,$group,glob '/home/merlyn/*';

    修改时间戳


    修改文件最近更改或访问时间,我们可以使用utime函数来更改。

    my $now = time ;
    my $ago = $now - 24*60*60 ; # 一天的秒数
    utime $now,$ago,glob '*';
  • 相关阅读:
    [Apache commons系列]DBUtils 示例代码
    关于syslog
    Phoenix Tips (1)
    Phoenix 常用函数
    Phoenix 的数据类型
    最简单的Phoenix 访问 HBase例子
    SVNKIT 主要方法
    Linux 集群时钟同步
    Linux 集群时钟同步
    Linux 下定时提交SVN
  • 原文地址:https://www.cnblogs.com/tjxwg/p/3342117.html
Copyright © 2020-2023  润新知