#!/usr/bin/perl use strict; use warnings; my $suffix_file="root.txt"; my $begriff_file="begriff.txt"; # Ich vermute mal die Liste mit den Suffixen ist kürzer als die liste mit den Begriffen # Da ist es günstiger diese im RAM zu halten nicht die Liste von Begriffen open(my $suffix_fh, '<', $suffix_file) or die "kann $suffix_file nicht öffnen: $!"; # man kann auch die gesamte Datei in ein Array lesen # und dann aus dem gesamten Array die "\n" am ende entfernen. my @suffixe=<$suffix_fh>; chomp(@suffixe); close($suffix_fh); # liste mit den Begriffen dessen Suffixe nicht identifiziert werden konnten my @unidentifiziert; # Bitte open mit drei Parametern nutzen # das macht hier zwar nicht viel anders, # ist aber weniger fehleranfällig. # Wenn man es sich gleich angewöhnt, # dann geht man einigen ärgerlichen Problemen aus dem Weg open(my $begriff_fh, '<', $begriff_file) or die "kann das $begriff_file nicht öffnen: $!"; # mann kann auch gleich in eine Variable lesen # man muss nicht in $_ zwischenspeichern while(my $begriff=<$begriff_fh>) { chomp($begriff); # Gehe die Liste mit den Suffixen durch # und beende Die Schleife # wenn ein Passendes Suffix gefunden wurde # $gefunden dient dazu einen Begriff in @unidentifiziert zu verschieben, # wenn kein passendes Suffix gefunden wurde. my $gefunden=0; for my $suffix (@suffixe) { if($begriff =~ /^(.*)\Q$suffix\E$/i) { $gefunden=1; print "$begriff\t$1\t$suffix\n"; last; } } if($gefunden==0) { push(@unidentifiziert,$begriff); } } print "REST : @unidentifiziert\n";