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

熱點內容
電信密碼無法登錄 瀏覽:820
cad的列印到文件怎麼設置 瀏覽:902
智行app鉑金會員怎麼還有期限 瀏覽:581
win10用子文件夾改名 瀏覽:234
ae鋼筆工具在哪裡 瀏覽:460
gn105數據線插哪裡 瀏覽:916
破鎖屏密碼方法 瀏覽:835
股票數據放哪裡 瀏覽:576
m格式庫文件 瀏覽:279
天際通數據服務怎麼開票 瀏覽:430
寫小說發哪個網站比較好 瀏覽:244
小米電視3藍牙文件路徑 瀏覽:111
shell讀取文件值 瀏覽:909
文件夾路徑欄消失 瀏覽:795
律師哪些業務不能代替大數據 瀏覽:952
lol哪些文件可以刪除 瀏覽:701
匯編程序中del是什麼意思 瀏覽:183
幼兒園免費網站模板下載 瀏覽:210
w619線刷教程 瀏覽:759
怎麼培養編程思想 瀏覽:697

友情鏈接