大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> CGI专区 -> Perl教学 第十一篇 文件系统之一

Perl教学 第十一篇 文件系统之一

时间: 2021-07-31 作者:daque

    本章所讲的因变量普遍运用了unix操纵体例的个性,在非unix体例中,少许因变量大概没有设置或有各别的处事办法,运用时请察看perl联机文书档案。一、文献输出/输入因变量本节报告从文献中读守信息和向文献写入消息的内置库因变量。1、基础i/o因变量少许i/o因变量在前方的章节中已有报告,如·open:承诺步调考察文献 ·close:中断文献考察 ·print:文献写入字符串 ·write:向文献写入方法化消息 ·printf:方法化字符串并输入到文献 这边大略回忆一下,再讲少许前方未提到的因变量。1)open因变量open因变量将文献变量与某文献接洽起来,供给考察文献的接口,比方:open(myvar, "/u/file"); 即使文献翻开胜利,则归来非零值,要不归来零。缺省级地区级,open翻开文献用以读取其实质,若想翻开文献以写入实质,则在文献名前加个大于号:open(myvar, ">/u/file"); 向已有的文献结束增添实质用两个大于号:open(myvar, ">>/u/file"); 若想翻开文献动作数据导向的吩咐,则在吩咐前加上弹道符(|):open(mail, "|mail dave");2)用open重定向输出不妨把翻开的文献句柄用作向步调输出数据的吩咐,本领是在吩咐后加弹道符(|),如:open(cat, "cat file*|");对open的挪用运转吩咐cat file* ,此吩咐创造一个偶尔文献,这个文献的实质是一切以file打头的文献的实质贯穿而成,此文献看作输出文献,可用文献变量cat考察,如:$input = ;底下的例子运用吩咐w的输入来列出暂时登录的一切用户名。1 : #!/usr/local/bin/perl2 :3 : open (wout, "w|");4 : $time = ;5 : $time =~ s/^ *//;6 : $time =~ s/ .*//;7 : ; # skip headings line8 : @users = ;9 : close (wout);10: foreach $user (@users) {11: $user =~ s/ .*//;12: }13: print ("current time: $time");14: print ("users logged on:\n");15: $prevuser = "";16: foreach $user (sort @users) {17: if ($user ne $prevuser) {18: print ("\t$user");19: $prevuser = $user;20: }21: } 截止输入如次:current time: 4:25pmusers logged on:davekilroyrootzarquon w吩咐列出暂时功夫、体例负载和登录的用户,以及每个用户的功课功夫和暂时运转的吩咐,如:4:25pm up 1 day, 6:37, 6 users, load average: 0.79, 0.36, 0.28user tty login@ idle jcpu pcpu whatdave ttyp0 2:26pm 27 3 wkilroy ttyp1 9:01am 2:27 1:04 11 -cshkilroy ttyp2 9:02am 43 1:46 27 rnroot ttyp3 4:22pm 2 -cshzarquon ttyp4 1:26pm 4 43 16 cc myprog.ckilroy ttyp5 9:03am 2:14 48 /usr/games/hack上例中从w吩咐的输入中掏出所需的消息:暂时功夫和登录的用户名。第3行运转w吩咐,此处对open的挪用指定w的输入用作步调的输出,用文献变量wout来考察该输出。第4行读取第一条龙消息,即:4:25pm up 1 day, 6:37, 6 users, load average: 0.79, 0.36, 0.28接下来的两行从这行中抽掏出功夫。开始,第5行简略开始的空格,而后第6行删去除功夫和结果换行符之间的一切字符,惠存变量$time。第7行从wout读取第二行,这行中无有效消息,故不作处置。第8行把剩下的行赋给数组@users,而后第9行封闭wout,中断运转w吩咐的过程。@users中的每个元素都是一条龙用户消息,由于本步调只须要每行的第一个单词,即用户名,故10~12行去掉除换行符外的其它字符,这一轮回中断后,@users中只剩下用户名的列表。第13行输入存贮在$time中的功夫,提防这时候print不须要加上换行符,由于$time中有。16~21行对@users中的用户名排序并输入。由于同一个用户不妨屡次登录,以是用$preuser存贮输入的结果一个用户名,下次输入数组元素$user时,即使其与$preser十分,则不输入。3)文献重定向很多unix shell不妨把规范输入文献(stdout)和规范缺点文献(stderr)都重定向到同一个文献,比方在bourne shell(sh)中,吩咐$ foo > file1 2>&1运转吩咐foo并把输入到规范输入文献和规范缺点文献的实质存贮到文献file第11中学。底下是用perl实行这一功效的例子:1: #!/usr/local/bin/perl2: 3: open (stdout, ">file1") || die ("open stdout failed");4: open (stderr, ">&stdout") || die ("open stderr failed");5: print stdout ("line 1\n");6: print stderr ("line 2\n");7: close (stdout);8: close (stderr); 运转后,文献file第11中学的实质为:line 2line 1

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.