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

Beitrag lesen

Also ich habe mein Problem jetzt folgendermaßen gelöst, aber das ist mir viiiiel zu unsauber. Ich mags einfach nicht...auch wenns funktioniert!

  
use feature qw/:5.10/;  
use strict;  
use warnings;  
use Tie::File;  
  
#Definiere globale Variablen  
my $buffer = '';  
my $data = $ARGV[0];  
my $replace = '';  
my $test = '';  
my $FIRST = '';  
my $SNAME = '';  
my $UID = '';  
my $PWD = '';  
my $LAST = '';  
my @data;  
my $new;  
  
#Öffne Datei aus Benutzereingabe im readmodus  
open(DB, "$data") || die "Can't open FTP-File!";  
@data = <DB>;  
close(DB);  
  
#Durchlaufe Array mit Dateiinhalt zeilenweise und suche zu ersetzende Teilstrings  
foreach $replace(@data)  
{  
    if(index($replace,"SC-FTP") != -1)  
       {  
        $replace =~ m/^(.*)SC-FTP( {1}[A-Za-z0-9]*)( {1}[A-Za-z0-9]*)( {1}[A-Za-z0-9]*)( {1}.*)$/;  
        $FIRST=$1;  
        $SNAME=$2;  
        $UID=$3;  
        $PWD=$4;  
        $LAST=$5;  
        $SNAME =~ tr/[a-zA-z0-9]/X/;  
        $UID =~ tr/[a-zA-z0-9]/X/;  
        $PWD =~ tr/[a-zA-z0-9]/X/;  
        $buffer=$FIRST;  
        $buffer.=$SNAME;  
        $buffer.=$UID;  
        $buffer.=$PWD;  
        $buffer.=$LAST;  
        $buffer.="\n";  
        $replace = $buffer;  
       }  
    }  
#Schreibe aktualisierte Daten in die Datei zurück  
open(OUT, ">$data") || die "Can't write FTP-File!";  
foreach $new(@data)  
{print OUT $new;}  
close(OUT);  

Das muss doch schaffbar sein....irgendwie.

Das Problem ist das ich nie wirklich weiß wie der String aussieht, ich weiß nur eines nach SC-FTP kommt servername (ein leerzeichen) username (ein leerzeichen) passwort (ein leerzeichen) und noch irgendwas.

Und ich muss diese 3 Wörter durch IRGENDWAS ersetzen X's oder Wörter.

Liebe Grüße