八、命令行参数
@ARGV:全局,$ARGV[0] 是第一个参数,不是程序名,<>是对$ARGV的引用。@ARGV一旦赋值,原值丢失。
1.第一次看到<>时,打开以$ARGV[0]中的文件,无参数则打开STDIN读,所以可以省略.
2.shift(@ARGV)元素数量减少一个.
3.<>读打开的文件中的所有行
4.再读第二个参数表示的文件
5.文件尾检测:eof和eof(),文件结束返回真。
@ARGV=(“file1″,”file2″)
while($line=<>){if(eof){print ‘eof’;}}
读取file到末尾时,下一循环打开下一文件,每次读完一个文件输入出eof
if(eof()){print ‘eof’;}所有文件都读完才输出eof
foreach(@ARGV) { print "==$_"; #循环打印出参数 }
九、写文件
print F (“str”)
F文件句柄,后面为空格,省略F为STDOUT
str输出内容,可用单引号’,不进行变量替换,不加引号,计算出变量的值再输出。
()可省略,这是函数的特点。
printf(“format str”,$a,$b….),格化化串包含%m.nf的格式指示,后面依次是相应的值列表。
write 用于格式化输出,不是read的相应操作。
syswrite(F,$data,length,$offset) 同sysread
十、文件权限和随机访问
chmod(mode,filelist)
mode=4位8进制数,unix中的文件owner,组,其它的设置。
chown(userid,groupid,filelist)改变文件的用户与组。
umask(maskval):返回原mask,unix中的umask值设置。
文件指针:
tell(F):当前位置。
seek(F,distance,pos):定位到指定位置。
F文件句柄,pos=0相对文件头,1相对当前位置,2相对文件尾。
distance相对pos表示的位置多少字节。