导航:首页 > 文件教程 > perl多个文件

perl多个文件

发布时间:2022-12-27 06:48:49

① Perl处理文件夹里面多个文件以及子文件夹里面多个文件的问题

这个其实挺简单的,给你写几句比较通俗的希望对你有所帮助啊;

my @pathlist='find /home/a/ -name "*.sp"';
#这是执行linux命令行中的命令,把/home/a/ 路径下所有的.sp文件都检索出来,放到@pathlist数组里。
foreach my $fsp (@pathlist) {
#想要的文件出理。
open(OUT,“〈",$fsp);
}

② 如何用perl循环读取多个文本文件,并进行数据处理

formy$f(@files){
open(my$H,$f);
process($H);
close$H;
}
subprocess{
my$H=shift;
while(<$H>){.......}
}

③ perl 读入多个文件进行操作

下面是我自己一直用的框架:
第一句和第二句是加一些限制,让它在语法可能有问题的时候报warning。

第三句是把要读的文件的全文件名(包括后缀)存到@ARGV里面。
第四句是@ARGV作品为main这个subroutine的输入变量。
while的那个循环是把@ARGV里面所有文件的每一行从<>里面读到默认的$_里面(每次读一行),其中<>自动和@ARGV里面的文件的内容发生关系。然后print就是把每次读到的存在$_的那一行打印出来。

use strict;

use warnings;
@ARGV = qw# input_file1.txt input_file2.txt #;

main(@ARGV);
sub main
{
while(<>)

{
print;
}
}

④ 如何用perl语言循环语句实现依次打开多个文件

#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到,以该取出的值为名的数组的末尾。
}
}

⑤ perl处理多个文件并进行uniq处理,可以给个思路么

HASH就是用来解决这个问题的,例如代码
my %dat;
my($line,$num);
#读文件、统计
for $f (['1.txt','2.txt','3.txt'])
{
open(FD,$f);
while ($line=<FD>){chomp($line);$dat{$line}++;}
close(FD);
}
#写文件
open(FD,'>out.txt');
$num=0;
foreach $line (keys %dat){
$num++;
print FD, "miRNA-$num\t".$dat{$line}."\t$line\n";
}
close(FD);

⑥ 请教,perl 如何处理多个文件

请教,perl 如何处理多个文件

小骆驼书9.5.3讲解了一个更新大量文件的例子,实际操作发现一个问题,即如何用while(<>)读取多个文件,具体如下:
上百个形如file03.dat的文件需要处理,用while(<>)读入,在命令行输入perl program file*.dat,报错:cannot open file*.dat,invalid argument

请问各位大侠,这种情况如何操作多个文件,总不能挨个输入吧,本人菜鸟,希望各位大侠不吝赐教,多谢!

对,在windows上


搜索到的,应该行不通
[Copy to clipboard] [ - ]CODE:
apile> cat tt10.pl
#!/usr/bin/perl
while(<>){
print ;
}
apile> cat a1.txt
a
b
c
d
apile> cat a2.txt
1
2
3
4
5
apile> perl tt10.pl a?.txt
a
b
c
d
1
2
3
4
5
apile>

churchmice


在linux上
file*.dat
是由shell帮你替换完成的
所以perl得到的参数是替换以后的参数
windows上可能替换机制不一样,cmd没有帮你处理file*.dat,而是直接传递给了perl
你在perl里面glob一下好了


@ARGV = glob("file*.dat");

while(<>){

}




可以用了,也理解了,多谢指点!
我要认真学习Perl

⑦ perl中,关于多个文本内容替换

读取和写入不能用同一个handler, 可以先读取内容,替换完后再把结果写入原文件。
my @data;
open LOG, "< $file" ;
while(<LOG>){
s/hehe/haha/g;
push @data, $_;
}
close LOG;
open LOG1 ,">$file";
foreach(@data) {
print LOG1;
}
close LOG1;

⑧ 我用perl打开一个文件处理存在另一个新文件里,现在我要打开该文件夹里的多个文件怎么弄

问题在哪里?
可以写一个循环,遍历所有需要处理的文件

需要考虑一个输入文件一个输出文件,还是所有输入文件一个输出文件

⑨ 如何用perl语言打开多个(比如150个)文件,对这些文件同时进行处理后输出到一个输出文件中

for $i (1..150) {
open ${"fh".$i}, "file.$i.".txt";

}

阅读全文

与perl多个文件相关的资料

热点内容
女生来例假有哪个app比较好 浏览:66
调用后台接口为什么不显示数据 浏览:363
js判断重复 浏览:422
联通如何切换到网络电视 浏览:191
学编程的优势哪里靠谱 浏览:939
沟通文件 浏览:267
水准测量平差程序 浏览:78
cf如何解决网络误封 浏览:952
折叠式文件夹是什么意思 浏览:796
js弹窗登录注册 浏览:563
怎么把游戏数据备份到另一个手机 浏览:361
微信封杀抢红包神器破解教程 浏览:536
带货数据什么时候更新 浏览:500
微信通讯录复制到手机 浏览:498
编程猫怎么连接音响 浏览:589
有没有什么app在家点餐 浏览:501
win10视频文件看不到缩略图注册表 浏览:238
请上传文件和视频英语 浏览:413
win10拷贝文件失败拒绝访问 浏览:189
什么叫app推广报备 浏览:414

友情链接