perl 如何打开指定路径下的文件?

perl 如何打开指定路径下的文件?,第1张

open(FILE, "D:/ferl.txt") #打开一个文件句柄

while(<FILE>){#逐行读取该文件然后凯桐猜显示出来

print "$_\n"

}

close(FILE) #关闭轮塌文件句柄

在WHILE循环中也可以加入一些正则匹配等代码盯型等等。

#Perl程序变量用前不用声明,根据使用位置的上下文,Perl能自动分析变量类型

for ($inputFileListIndex=0$inputFileListIndex<=$#inputFileArray$inputFileListIndex++) {

#这就是一循环,当inputFileListIndex小于等于数组 inputFileArray的索引值时,执行循环。

#“$”这个符号引导的是变量,“@”这个符号引导的是数组,$#inputFileArray这个的意思是取inputFileArray这个数组的最后一个变量的索引值(就是这个数组元素个数-1)。

$tmp = $inputFileArray[$inputFileListIndex]

#建立一个临时变量tmp,然后把数组对应inputFileListIndex这个索引的值赋给tmp。

if ($tmp =~ /^(.*[\\\/])([^\\\/]+)$/){

#这块做了个正则表达式判断, =~是个表示用来做正则表达式匹配的符号,把后面的一串正则表达式与tmp中的字符串匹配,若果匹配成功,则为真。

#/^(.*[\\\/])([^\\\/]+)$/,这个两个“/” “/”符号限制出正则表达式的范围,里面的^(.*[\\\/])([^\\\/]+)$是正则表达式,^表示字符串的开头,$表示字符串的结尾,

#(.*[\\\/])这个括号框出了一老羡个组,它是神槐第一个组,组号是1,在后面有用。里面“.”表示 任何字符除了回车,“*"表示0到多个重复前面的那个字符,所以.*表示任意字符无限多次,就是什么都行的意思。之游含友后的[]这个符号表示它里面指明的所有东西匹配上一个就行,它里面是\\\/,第一个\用来转义第二个\,第三个\用来转义第四个/,所以它实际上说的就是“\”和“/”匹配上一个就行。

#([^\\\/]+)接着又是一个组,组号2。[]这里面的^和外面不同,表示非的意思,所以就是说匹配任何字符, 只要不是“\”和“/”就行。接着一个“+”表示前面匹配到的字符至少有一个。

#所以总的来看,这段正则表达式的意思是,有一个字符串,从开始起在任意字符后,有一个“\”或“/”出现,之后有一个以上重复的非“\”和“/”的字符出现直到结尾。

push(@},$tmp)

#判断成功后,以匹配到的第一组“(.*[\\\/])”的内容为键,取出folderpath这个哈希里对应的值,并将tmp里的内容push到,以该取出的值为名的数组的末尾。

}

else{

push(@},$tmp)

#不然就把,取出folderpath这个哈希里对应“nofolder”这个键的值,并将tmp里的内容push到,以该取出的值为名的数组的末尾。

}

}

不知道你这里读取具体指什么,我就把文件名打印出来,把文件内容打印出来吧。(程序指定两个参数,第一个参数是指定的文件夹名橘汪,每二慎指个参数是指定的扩展名。)

#!/usr/bin/perl

use strict

use warnings

die "Usage: $0 <dir><extion>\n" unless @ARGV == 2

my $Dir = $ARGV[0]

my $Ext = $ARGV[1]

opendir(DH, "$Dir") or die "Can't open: $!\n"

#读取指定文件夹下面的指定扩展名的文件名,保存到数组圆孝仔里。

my @list = grep {/$Ext$/ &&-f "$Dir/$_" } readdir(DH)

closedir(DH)

chdir($Dir) or die "Can't cd dir: $!\n"

foreach my $file (@list){

open(FH, "$file") or die "Can't open: $!\n"

print "$file:\n"

while(<FH>){

print

}

print "\n"

close(FH)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12207717.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存