perl重点学习笔记之目录文件操作

一.打开文件:

语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号,filename为文件名,其路径可为相对路径,亦可为绝对路径。

    open(FILE1,"file1");
    open(FILE1,"/u/jqpublic/file1");
  打开文件时必须决定访问模式,在PERL中有三种访问模式: 读、写和添加。后两种模式的区别在于写模式将原文件覆盖,原有内容丢失,形式为: open(outfile,">outfile");而添加模式则在原文件的末尾处继续添加内容, 形式为:open(appendfile,">>appendfile")。要注意的是,不能对文件同时进行读和写/添加操作。
  open的返回值用来确定打开文件的操作是否成功,当其成功时返回非零值,失败时返回零,因此可以如下判断:
    if (open(MYFILE, "myfile")) {
    # here's what to do if the file openedsuccessfully
    }
  当文件打开失败时结束程序:
     unless (open (MYFILE, "file1")){
    die ("cannot open input filefile1\n");
    }

  亦可用逻辑或操作符表示如下:
    open (MYFILE, "file1") || die("Could not open file");

  当文件操作完毕后,用close(MYFILE);关闭文件。

二.写入文件
    open(OUTFILE, ">outfile");
    print OUTFILE ("Here is an outputline.\n");
  注:STDOUT、STDERR为标准输出和标准错误文件,通常为屏幕,且不需要打开。

三.文件是否存在

if (-e "/path/file1") {
    print STDERR ("File file1exists.\n");
    }

四.perl中命令行参数的使用

象C一样,PERL也有存储命令行参数的数组@ARGV,可以用来分别处理各个命令行参数;与C不同的是,$ARGV[0]是第一个参数,而不是程序名本身。
    $var = $ARGV[0]; # 第一个参数
    $numargs = @ARGV; # 参数的个数
  PERL中,<>操作符实际上是对数组@ARGV的隐含的引用,其工作原理为:
1、当PERL解释器第一次看到<>时,打开以$ARGV[0]为文件名的文件;
2、执行动作shift(@ARGV); 即把数组@ARGV的元素向前移动一个,其元素数量即减少了一个。
3、<>操作符读取在第一步打开的文件中的所有行。
4、读完后,解释器回到第一步重复。
  例:
    @ARGV = ("myfile1","myfile2"); #实际上由命令行参数赋值
    while ($line = <>) {
    print ($line);
    }
  将把文件myfile1和myfile2的内容打印出来。

操作符描述
-b是否为块设备
-c是否为字符设备
-d是否为目录
-e是否存在
-f是否为普通文件
-g是否设置了setgid位
-k是否设置了sticky位
-l是否为符号链接
-o是否拥有该文件
-p是否为管道
-r是否可读
-s是否非空
-t是否表示终端
-u是否设置了setuid位
-w是否可写
-x是否可执行
-z是否为空文件
-A距上次访问多长时间
-B是否为二进制文件
-C距上次访问文件的inode多长时间
-M距上次修改多长时间
-O是否只为“真正的用户”所拥有
-R是否只有“真正的用户”可读
-S是否为socket
-T是否为文本文件
-W是否只有"真正的用户"可写
-X是否只有"真正的用户"可执行

五.目录函数

1.mkdir

mkdir(dirname,permissions);

2.chdir

chdir(dirname);

3.opendir(dirvar,dirname)

dirvar:目录变量

dirname:目录名

4.closedir(dirname)

关闭目录

5.rename(oldname,newname)

重命名

6.unlink(filelist)

删除文件,这里其实是删除的文件链接

7.创建链接

link(newlink,file)

创建一个file的软链接,删除一个文件的链接后还可以删除另一个

8.chmod(permissions,filelists)

改变文件权限

9.stat(file)

获取文件状态。参数file可为文件名也可为文件变量。返回列表元素依次为:

  • 文件所在设备
  • 内部参考号(inode)
  • 访问权限
  • 硬链接数
  • 属主的(数字)ID
  • 所属组的(数字)ID
  • 设备类型(如果file是设备的话)
  • 文件大小(字节数)
  • 最后访问时间
  • 最后修改时间最后改变状态时间
  • I/O操作最佳块大小
  • 分配给该文件的块数

    10.chmop命令:

    如果字符串结尾有换行符,chomp 可以去掉它。这基本上就是它能完成的所有功能,如下例:
    $text = “a line of text/n”; #也可以由<STDIN>输入
    chomp($text); #去掉换行符(/n)。
    它非常有用,基本上你的每一个程序都会用到它。如你将知道,这是将字符串末尾换行符去掉的最好方法。基于Perl 中的一条基本原则:在需要使用变量的地方,可以使用赋值表达式来代替。我们有更简单的使用chomp 的方法。Perl 首先做赋值运算,再使用这个变量。因此使用chomp 的最常用方法是:
    chomp ($text = <STDIN>); #读入,但不含换行符

    $text = <STDIN>;
    chomp ($text); #同上,但用两步完成

    第一眼见到时,第一种组合的方法看起来复杂些。如果把上述其看成两步操作,读一行再chomp,那写成两个语句的方法
    看起来自然些。如果将其看作一个操作,读入一行但不包括换行符,那写成一个语句的方法更恰当。由于绝大多数Perl 程序员使用第一种写法,你也应该使用它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值