Suche-Ersetze: Ersetzen von mehreren Wörtern in einer Zeile einer Datei

Beitrag lesen

Hallo,

ich habe ein kleines Problem, ich versuche mittels PERL aus einer Datei in einer bestimmten Zeile, bestimmte Wörter zu finden und diese zu ersetzen, das ganze tue ich mittels den RegEx:

Die Datei sieht z.B. so aus:

__________________________
Ich bin der Inhalt
Ich auch
Und ich erst
Irgendwas SC-FTP SQLSERVER ADMIN ROOT C:\Data\datax D:\OutData\datay Datei.dat
Noch eine Zeile
Noch eine...
usw.
__________________________

Ich möchte nun aus der Zeile in der SC-FTP steht die nächsten 3 Wörter (SQLSERVER, ADMIN & ROOT) durch folgende Wörter ersetzen SERVERNAME, USER, PASSWORD. So ansich ist das kein Problem, nun ist es aber leider so das die Wörter SQLSERVER, ADMIN & ROOT variieren, sprich sie können jedesmal anders heißen, müssen aber trotzdem ersetzt werden...

Ich bin das ganze mal so angegangen:

  
#!C:\Perl\bin -w  
  
use feature qw/:5.10/;  
use strict;  
use warnings;  
  
my $buffer = '';  
my $data = $ARGV[0];  
my @data;  
my $replace = '';  
my $test = '';  
  
#Öffne Datei aus Benutzereingabe im readmodus  
open(DB, "$data") || die "Kann Datei nicht öffnen";  
@data = <DB>;  
close(DB);  
  
#Durchlaufe Array mit Dateiinhalt zeilenweise und suche zu ersetzende Teilstrings  
foreach $replace(@data)  
{  
 if(index($replace,"SC-FTP") != -1)  
  {  
   $test = $replace;  
   $test =~ m/^(.*)SC-FTP {1}([A-Za-z0-9]*) {1}([A-Za-z0-9]*) {1}([A-Za-z0-9]*) {1}(.*)$/;  
   $2 =~ s/[a-zA-z0-9]/Servername/;  
   $3 =~ s/[a-zA-z0-9]/User ID/;  
   $4 =~ s/[a-zA-z0-9]/Password/;  
   print $test;  
  }  
}  
  
#Schreibe aktualisierte Daten in die Datei zurück  
open(OUT, ">$data") || die "Can't write FTP-File!";  
print OUT "$replace\n";  
close(OUT);  

Mein Problem ist, das ich nur eine Warnmeldung bekomme á la:

Modification of a read-only value attempted!

Wo ist denn der Fehler bzw. wie kann ich das machen was ich vorhabe??

Liebe Grüße