導航:首頁 > 文件教程 > 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多個文件相關的資料

熱點內容
templatewebjs下載 瀏覽:774
note3應用程序未安裝 瀏覽:714
dos看圖工具 瀏覽:15
微信直接加為好友 瀏覽:467
可以用微信傳送的文件app 瀏覽:294
pdf文件解析亂碼 瀏覽:479
光照無關圖代碼 瀏覽:688
Linux讀寫文件前八位 瀏覽:597
word如何繪制餅狀圖 瀏覽:172
w7系統搜索文件夾 瀏覽:618
java線程變數 瀏覽:854
蘋果電腦word是只讀文件 瀏覽:691
ps5國行備份文件大小 瀏覽:754
linux恢復刪除文件命令 瀏覽:805
win10家庭版打不開qq文件 瀏覽:794
女生來例假有哪個app比較好 瀏覽:66
調用後台介面為什麼不顯示數據 瀏覽:363
js判斷重復 瀏覽:422
聯通如何切換到網路電視 瀏覽:191
學編程的優勢哪裡靠譜 瀏覽:939

友情鏈接