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

[经验分享] Perl文件及目录操作

[复制链接]

尚未签到

发表于 2018-8-31 10:33:28 | 显示全部楼层 |阅读模式
大多数程序都不是孤立的,它们与它们的环境相互作用。很多的程序也需要通过文件操作实现数据的存贮和交换。 文件句柄(file handle)是Perl程序中为程序和外部世界提供I/O连接的名称。建议全部使用大写字母以示与变量等的区别。特别地,也可以将STDIN/STDOUT/STDERR也认为 是Perl的文件句柄,分别代表标准输入/标准输出/标准错误输出。  打开及关闭文件
  Perl的文件操作与C语言极为相似。如:
  open(FILENAME,"abc.txt");
  该调用为读文件打开,若为写文件而打开,需在文件名前加上大于号:
  open(FILENAME,">abc.txt");
  若要追加至文件尾,可在文件名前加上两个大于号:
  open(FILENAME,">>abc.txt");
  以上三种open()格式在成功时返回真,失败时返回假。但程序中通常没有提示,出错时往往会被人们忽略。 通常当需要给出出错提示时,可加入die()函数。例:
  open(OUTFILE,">/tmp/outfile")||
  die "出错,不能建立/tmp/outfile\n";
  当只有open失败时,才会执行die给出出错提示。
  对文件句柄的操作完成后,可以用close操作符关闭文件。如:
  close(OUTFILE);
  -x 文件测试
  Perl的文件操作也可以先测试文件是否存在,是否可读写等。如:
  $x="abc.txt";
  if(-e $x) { #abc.txt是否存在?
  # 存在操作
  } else {
  printf "文件不存在。\n";
  }
  -e操作符测试文件或目录是否存在。
  以下为文件测试清单:
  文件测试 测试操作符提供的信息
  -r 文件或目录可读
  -w 文件或目录可写
  -x 文件或目录执行
  -o 文件或目录归用户所有
  -R 文件或目录对真正用户可读
  -W 文件或目录对真正用户可写
  -X 文件或目录对真正用户执行
  -O 文件或目录归真正用户所有
  -e 文件或目录存在
  -z 文件存在且大小为0
  -s 文件或目录存在且不为0(返回字节数)
  -f 文件为普通文件
  -d 文件为目录
  -l 文件为符号链接
  -p 文件为命名管道(FIFO)
  -S 文件为一个套口(socket)
  -b 文件为块特殊文件
  -c 文件为字符特殊文件
  -t 打开tty控制台的文件句柄
  -u 文件或目录是设置用户ID号
  -g 文件或目录是设置用户组ID号
  -k 文件或目录的sticky位置位
  -T 文件是文本文件
  -B 文件是二进制文件
  -M 以天为单位的存在时间
  -A 以天为单位访问时间
  -C 以天为单位同代码更改时间
  删除文件
  Perl的unlink()操作符可实现删除文件。如:
  unlink("abc.txt"); #删除abc.txt
  文件重命名
  Perl的rename()操作符可实现文件重命名。如:
  rename("abc","zmd")||die "出错,不能更名";
  此时将abc更名为zmd,成功返回真,否则给出出错提示。
  目录操作
  Perl中处理目录非常类似于处理文件。
  打开目录句柄:
  opendir(ETC,"/etc")||die "出错,不能打开目录";
  关闭目录句柄:
  closedir(ETC);
  创建目录:
  mkdir("zmd",0777)||die "不能创建zmd目录";
  0777为内部权限格式。
  删除目录:
  rmdir("zmd")||die "不能删除zmd目录"。


运维网声明 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-559271-1-1.html 上篇帖子: perl时间差计算 下篇帖子: perl远程执行多台服务器shell命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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