Andy: Textteile ersetzen

Beitrag lesen

Erstmal danke für die schnelle Antwort, ich habe den Code von dir nun so eingebaut, allerdings hängt sich damit das Skript auf.

Habe ich da was falsch verstanden?

my @file1;
{
    open my $fh, '<', 'file1' or die "could not open file1 for reading: $!";
    my @file1 = (<>);  # <>-Operator im Listenkontext -> slurp die ganze Datei
    close $fh;
};

while (<>) {
        push @file1, $_;      # aktuelle Zeile anhängen
        last if /^#REPLACE/;  # wenn aktuelle Zeile damit beginnt, Schleife beenden
    };

print @file1;

Hey,

Ich lese zuerst ein Text File ein:
my @FILE = cat file;
mit einem Systemaufruf? Das ist schlechter Stil, weil vermeidbar. Zur Portabilität liest du die Datei besser mit Bordmitteln ein, und du bist auch gleich flexibler bei dem nächsten Teilproblem.

my @file1;
{
    open my $fh, '<', 'file1' or die "could not open file1 for reading: $!";
    my @file1 = (<>);  # <>-Operator im Listenkontext -> slurp die ganze Datei
    close $fh;
};


>   
> > In dem File befindet sich ein TAG "#REPLACE"  
> > Alles was hinter dem FLAG steht soll gelöscht werden  
> Das kann man auch anders auffassen: wenn wir diese Zeile erreichen, hören wir auf, die Datei zu lesen. Ersetze also das unbedingte Einlesen durch eine bedingte Schleife.  
>   
> ~~~perl
  

>     while (<>) {  
>         push @file1, $_;      # aktuelle Zeile anhängen  
>         last if /^#REPLACE/;  # wenn aktuelle Zeile damit beginnt, Schleife beenden  
>     };  
> 

und gegen den Inhalt eines weiteren Files (file2)ersetzt werden.
Lies die zweite Datei in ein Array, dann hänge es an das zuerst zubereitete an. Wie die beiden Teilschritte auszusehen haben, weißt du jetzt schon.

Hinweis 1: Der ganze Code ist ungetestet.

Hinweis 2: Mit noch weniger Code geht das ganze Problem mit Tie::File zu lösen, wo du Dateien mit Arrayfunktionen behandeln kannst. http://perldoc.perl.org/Tie/File.html