设为首页 收藏本站
查看: 595|回复: 0

[经验分享] Perl 文件操作

[复制链接]

尚未签到

发表于 2017-5-17 10:38:24 | 显示全部楼层 |阅读模式
  一:打开文件

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;
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378432-1-1.html 上篇帖子: perl创建文件 下篇帖子: perl常用操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表