perl basic file IO   

perl basic file IO

这个是perl基本的文件操作

05 Aug 2016

file System And Process Managerment

一般在linux中文件路径的格式是 /home/yourname/file;而在windos下是D:\home\yourname\file这样的格式;两者的文件系统有一定的差别。

File::Spec 模块可以跨系统处理文件。

下面是其一个简单的用法:

use File::Spec;
my $path=File::Spec->catfile(qw{home cindy docs resume.doc});
print $path;
## home\cindy\docs\resume.doc

我这是在window 下运行的输出结果,如果在linux下运行的话就是/这种分隔形式。

获取当前的路径和当前路径下的文件和文件夹

opendir FILE,'.' or die "unsucceed!";#以当前的文件为例
while(my $name=readdir FILE){
    next if $name=~/^\./;#如果想要所有的非点(non-dot)文件(不是由点开头的文件)
    print "$name\n";
}
closedir FILE;#同文件句柄一样,目录句柄会在程序结束时自动关闭;
## fileSystemAndProcessManagerment.Rmd
## get_gene_fpkm (2).pl
## get_gene_fpkm.pl

如果要将每个文件名字都记录下来可以建立@array然后存储一下

那么我们如何获得脚本运行的当前路径呢?

使用CWD模块,current working dir

use Cwd qw(cwd);

print cwd, "\n";
## D:/我的科研之路/毕业设计/P1clusterToShowTissueSpcific20160804/重新编写cuffl流水线/参考脚本

切换文件夹

use Cwd qw(cwd);
print cwd, "\n";
chdir("..");
print cwd, "\n";
## D:/我的科研之路/毕业设计/P1clusterToShowTissueSpcific20160804/重新编写cuffl流水线/参考脚本
## D:/我的科研之路/毕业设计/P1clusterToShowTissueSpcific20160804/重新编写cuffl流水线

linux RedHat6.5 也测试通过。

建立与删除文件夹

opendir FILE,'.' or die "unsucceed!";
while(my $name=readdir FILE){
    next if $name=~/^\./;
    print "$name\n";
}
closedir FILE;
mkdir "newFile" or die;

print "---------------------\n";

opendir FILE,'.' or die "unsucceed!";
while(my $name=readdir FILE){
    next if $name=~/^\./;
    print "$name\n";
}
closedir FILE;#

rmdir "newFile" or die;

print "---------------------\n";

opendir FILE,'.' or die "unsucceed!";
while(my $name=readdir FILE){
    next if $name=~/^\./;
    print "$name\n";
}
closedir FILE;
## fileSystemAndProcessManagerment.Rmd
## get_gene_fpkm (2).pl
## get_gene_fpkm.pl
## ---------------------
## fileSystemAndProcessManagerment.Rmd
## get_gene_fpkm (2).pl
## get_gene_fpkm.pl
## newFile
## ---------------------
## fileSystemAndProcessManagerment.Rmd
## get_gene_fpkm (2).pl
## get_gene_fpkm.pl

服务器上也测试通过。

Go back