perl学习-第十章

来源:互联网 发布:c语言编译器win10下载 编辑:程序博客网 时间:2024/05/17 01:10

今天早上起来学习第十章

#第十章 文件与目录
#1如何获得目录列表 2如何创建和删除文件  3 如何创建和删除目录 4如何获取关于文件的信息
opendir(TEMPDIR,'C:/PERL/TEMP') || die "cannot open C:/PERL/TEMP/: $!";#打开c:/perl/bin目录,如果失败则停止打开并给出出错信息
@files=readdir(TEMPDIR);  #读取目录


@files=grep(!/^/./.?$/,readdir TEMPDIR);    #用正则表达式清除.和..文件
@files=grep(/^/.TXT$/I,readdir,TEMPDIR);    #用正则表达式获得带有.txt扩展名的全部文件,注意,readdir返回的文件名并不包含opendir使用的路径名
while($file=readdir TEMPDIR){
    open(FILEH,"C:/PERL/$file")|| die "cannot open $file:$!/n";#打开文件时要使用路径
}
closedir (TEMPDIR);       #关闭目录
exit 0;




#globbing 只能返回有限个数量的文件,目录下有太多文件时将会报告“文件太多”不返回任何文件;glob 能返回路径,这个比较有用,;glob速度比较慢,效率较低,因为其实现要使用外部程序即shell来实现。
#下面是一个使用glob的例子    glob的句法 glob pattern
my @hfiles=glob('/usr/include/*.h');     #返回/usr/include/下面所有的头文件即.h文件
my @curfile=glob('*1999*.{txt,doc}');    #返回当前目录下文件名中包含1999且后缀名为txt或者doc的文件;


#改变目录 用chdir语句   如 chdir newdir,一个较好的方式是这样子的
   use Cwd;#加载cwd 模块
   print "your current directory is :",cwd,"/n";     #打印旧目录
   chdir '/tmp' or warn "directory /tmp not accessible:$!"; #改变目录,如果出错,给出警告信息
   print “you are now in: ",cwd,"/n";               #打印新目录(如未成功切换,则仍是旧目录)

#创建目录 mkdir语句句法 mkdir newdir,permissions   其中permissions 固定为0755(深圳区号,呵呵),如果创建成功则返回真,否则返回假#,并且将$!设置为mkdir运行失败的原因,看下面一个例子:
print "please input a new directory :";
my $newdir=<STDIN>;
chomp $newdir;   #去掉用户输入的回车键
mkdir($newdir,0755)|| die "failed to creat $newdir:$!/n";#mkdir($newdir,0755)|返回为真时die语句并不会执行

#删除文件 unlink语句的语法为 unlink file_list,该语句能删除file_list中的所有文件,并返回已经删除的文件数量。如果未指定file_list,则#$_中指定的文件将被删除。看下面一个例子:
my @files=<.txt>;
my $erased=unlink @files;
if($erased!=@files)
{
    print"some files failed to delete/n";
}

#删除目录 rmdir 只能删除空白的目录,这意味着必须先删除该目录下的所有文件。语句句法 rmdir pathname   如果可以删除则返回真,否则返回假,并且将$!设置为rmdir运行失败的原因,看下面一个例子:
print "input the pathname you want to delete:";
my $del_name=<STDIN>;
chomp $del_name;
rm $del_name || die "cannot delete the path :$del_name:$! /n";


#给文件改名  rename oldname,newname 看例子:
rename "tmp.txt","perl.txt"||die "cannot change the file name :$!/n";

#读取关于文件的所有信息 stat语句
@stuff=stat "myfile";