Thread OOP Parameterübergabe direkt oder indirekt ?
(21 answers)
Opened by der_thomas at 2014-04-26 00:16
Ich danke euch für das Feedback.
Habe das nun mal schnell zum Testen umgesetzt, also noch ohne Parameterübergabe per Hash und vor allem fast ohne Tests in der Klasse. Hier das Klassenmodul: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/usr/bin/perl use v5.12; use warnings; package Trk_dict; sub new { (my $classname, my $file) = @_; my @inhalt; my %dict; open( my $FH, '<:unix:encoding(UTF-8)', $file) or die "Datei konnte nicht geöffnet werden\n"; while (<$FH>){ push (@inhalt, $_); } close $FH; chomp @inhalt; %dict = @inhalt; # @inhalt = (); # Sollte automatisch beim Verlasen von 'new' gelöscht werden ? my $self = \%dict; return bless($self, $classname); } sub translate { (my $self, $_) = @_; while ((my $key, my $value) = each %$self){ s/\b$key\b/$value/i; } s/\b[a-z]\b//gi; #verbleibende einzelne Zeichen löschen s/ +/ /g; #doppelte und mehr Leerzeichen entfernen s/\A //; #Leerzeichen am Anfang entfernen s/ \z//; #Leerzeichen am Ende entfernen return $_; } 1; Das Script zum Testen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/usr/bin/perl use v5.12; use warnings; use Trk_dict; my $genre_objekt = Trk_dict->new('genre_dict'); my $namen_objekt = Trk_dict->new('namen_dict'); my $eingabe = " h H fo h a b c g noch was "; my $ausgabe = $genre_objekt->translate($eingabe); print ">$ausgabe<\n"; $eingabe = " h Christine "; $ausgabe = $namen_objekt->translate($eingabe); print ">$ausgabe<\n"; Ergibt dann in dem Fall: Quote Irgendwelche Tipps was man noch verbessern sollte ? - Außer den 'Regexen', die will ich auch in 2 Wochen noch verstehen können und die sind daher ganz bewusst vorerst so Schritt für Schritt aufgebaut ;) Einen Kritikpunkt habe ich gleich selber: Ich verwende oft englische und deutsche Namen gemischt - das wird noch geändert. |