我正在處理腳本以在文件中執行字符串替換,我將從配置文件中讀取變量和值以及文件並進行字符串替換。PERL:文件中的字符串替換
這是我的邏輯做一個字符串替換。
sub expansion($$$){
my $f = shift(@_) ; # file Name
my $vname = shift(@_) ; # variable name for pattern match
my $value = shift(@_) ; # value to replace
my $n = "$f".".new";
open (O, "<$f") or print("Can't open $f file: $!");
open (N ,">$n") or print("Can't open $n file: $!");
while (<O>)
{
$_ =~ s/$vname/$value/g; #check for pattern
print N "$_" ;
}
close (O);
close (N);
}
在我的邏輯中,從輸入文件($ f)逐行讀取模式並寫入新文件($ n)。
而不是寫入一個新文件有沒有辦法做一個字符串替換原始文件,當我嘗試做同樣的事情,它只有空文件沒有內容。
perl有一個'exp'內建函數;爲你的子選擇另一個名字。另外,不要使用原型;他們不是爲了做其他語言的原型而設計的,而且如果沒有它們,你就會變得更好。 – ysth
有沒有什麼能夠防止您將新文件複製到舊文件名? – TLP
我更新了函數名稱,即使在我原來的腳本中,我使用了不同的名稱..謝謝指出。 – Scg