Thread OOP Parameterübergabe direkt oder indirekt ? (21 answers)
Opened by der_thomas at 2014-04-26 00:16

der_thomas
 2014-04-27 00:57
#175075 #175075
User since
2013-09-07
158 Artikel
BenutzerIn
[default_avatar]
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
>H�rspiel Fotografie Computer Geschichte noch was<
>Hans Christine<


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.

View full thread OOP Parameterübergabe direkt oder indirekt ?