Perl 文件操作

一:打开文件

open(MyFile, "文件") or die("Can't open file. $!");
open(MyFile, "<文件") || die("Can't open file.");              // 同上,以读的模式打开文件
open(MyFile, ">文件") || die("Can't write file.");             // 以写的模式打开文件
open(MyFile, ">>文件") || die("Can't append file.");           // 以追加模式打开文件

 

二:关闭文件

close(MyFile);

 

三:读文件

    1.逐行读

while(my $line = <MyFile>) {
    # 对$line进行操作
}

 

   2.全部读

@allLine = <MyFile>;
#对@allLine进行操作

 

   3.读其它格式的文件

.gz格式文件
open(FIN,"gzip -dc $infilename|") or die ("can not open $infilename\n");

.tgz(.tar.gz)格式文件
open(FIN,"tar -xf $infilename -o|") or die ("can not open $infilename\n");

7zip格式文件
open(FIN,"7za e -so $infilename|") or die ("can not open $infilename\n");
 

四:写文件

  首先以写模式或追加模式打开文件

print MyFile "输出内容";

 

五:对文件进行操作

   1.对文件属性进行判断

-r                    # 文件或目录,对目前(有效的)用户或组可读
-w                    # 基本同上,可写
-x                    # 可执行
-o                    # 拥有

-R                    # 文件或目录,对实际的用户或组可读
-W                    # 可写
-X                    # 可执行
-O                    # 拥有

-e                    # 是存在的
-z                    # 存在但为空(对目录而言,永远为假)
-s                    # 存在不为空,返回以字节为单位的大小数值

-f                    # 普通文件
-d                    # 目录 
-l                    # 符号链接
-S                    # socket类型文件
-p                    # 管道
-b                    # 块设备文件(磁盘)
-c                    # 字符设备文件(I/O设备)

-u                    # 设置了setuid位
-g                    # 设置了setgid位
-k                    # 设置了sticky位
-t                    # 文件句柄是TTY设置

-T                    # 看起来像是文本文件
-B                    # 看起来像是二进制文件

-M                    # 最后一次修改后至今天的天数
-A                    # 最后一次访问到今天的天数
-C                    # 最后一次文件节点修改后至今天的天数
 

   2.删除文件

 

六:对目录进行操作

实例代码

递归遍历目录,并对文件进行处理

 
#用户递归遍历$FilePath下所有文件和目录
sub myOpen {
   my($path) = @_;
   if( -d $path ) {
      # 打开目录 
      opendir(DIR,$path) or die "Can't open $path. $!";
      # 读取目录下所有文件
      while( my @Files = readdir(DIR) ) {
         foreach $file (@Files) {
            # 过滤掉隐藏文件
            next if $file =~ /^\./;
            $eachFile = $path . $file . "/";

            if( -d $eachFile ) {
               #如果当前文件是目录,则递归遍历
               &myOpen($eachFile);
            } else {
               #如果当前文件是普通文件,则解析之
               &prase($path,$file);
            }
         }
      }
   } else {
      print "error \n";
      return 0;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值