#!/usr/bin/perl use strict; use warnings; my $file_in = 'svc_test_sdl.txt'; my $file_out = 'svc_test_sdl.out.txt'; my $file_test = 'koroesi.txt'; my %koroesi; # Datei öffnen # (wenn es nicht geht enthält $! die Fehlermeldung) open(my $fh,'<',$file_test) or die "konnte $file_test nicht öffnen! ($!)\n"; # Datei zeilenweise einlesen while(my $verb=<$fh>) { # "\n" am ende entfernen, # wenn vorhanden chomp($verb); # Hash füllen $koroesi{$verb}=1; } close($fh); # Wenn man ein Array nimmt um alle Zeilen zu speichern, # dann verbraucht man auch eine menge Speicher. # Da ist es besser die datei Zeilenweise zu bearbeiten. # Eingabedatei öffnen open(my $fh_in,'<',$file_in) or die "konnte $file_in nicht öffnen! ($!)\n"; # Ausgebedatei öffnen open(my $fh_out,'>',$file_out) or die "konnte $file_out nicht öffnen! ($!)\n"; while(my $line=<$fh_in>) { chomp($line); # Zeile zerlegen my($noun, $verb, $number)=$line=~/^(.+?)\s+(.+?)\s+(.+?)$/; # so geht es natürlich auch: # my($noun, $verb, $number)=split(/\s+/,$zeile); # wenn das wort im Hash als Schlüssel existiert if(exists($koroesi{$verb})) { # dann neue Zeile erzeugen $line = "$noun [$verb] $number"; } # das ganze in die neue Datei schreiben print $fh_out $line."\n"; } # Ausgabedatei schließen close($fh_out); # Eingabedatei schließen close($fh_in);