Thread Warum sind Perl-Programmierer kaum noch gefragt?
(27 answers)
Opened by rosti at 2012-02-21 19:30
Zugegeben: Die in der OOP liegenden Stärken von Perl habe ich relativ spät erkannt. Ich poste mal einen Code, der seit über 10 Jahren möglich ist und frage mal im Vorab: Seit wann programmiert Ihr Perl-OOP? Und welche Erfolge habt Ihr damit erreicht?
Hier nun der Code nach MVC/MVP Design: 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 # einfache Klasse für die Ausgabe eines Scripts # welches Eingaben erwartet, die zu prüfen sind # Benutzereingaben werden über Exceptions gehandelt # Beachte \n am Ende eines die() zur Unterdrückung des Backtrace package OUT; use strict; use warnings; use Getopt::Long; # Construction sub new{ my $class = shift; # Datenversteck für Ein/Ausgabe my $self = bless{ STASH => { name => undef, vname => undef, }, }, $class; return $self; } # Darstellung auf der Konsole # nenne es presenter oder view sub presenter{ my $self = shift; # feststellen ob es Parameter gibt # den code der entsprechenden Methode laden # und auf Exception prüfen if(@ARGV){ my $code = $self->can('control'); my $result = ''; # mögliche Exception fangen eval{ $result = $self->$code }; if($@){ print "Eingabefehler: $@\n"; } else{ print $result; } } else{ print $self->default; } } ########################### controller methods ############################ # keine Eingabe-Parameter # stellt die Sicht ohne Eingaben dar sub default{ my $self = shift; return "Bitte --name=<Name> und --vname=<Vorname> eingeben\n"; } # Eingabe-Parameter liegen vor # Anwendung Exception-Model: Der Code wird später geprüft sub control{ local $SIG{__WARN__} = sub{die "@_\n"}; # Warnungen GetOptions my $self = shift; GetOptions( 'name=s' => \$self->{STASH}{name}, 'vname=s' => \$self->{STASH}{vname}, ); die "Name nicht eingegeben\n" unless defined $self->{STASH}{name}; die "Vorname nicht eingegeben\n" unless defined $self->{STASH}{vname}; return qq( Name: $self->{STASH}{name} Vorname: $self->{STASH}{vname} ); } 1;######################################################################### # Sehr einfache Application package main; my $out = OUT->new; $out->presenter; Last edited: 2012-02-22 10:25:08 +0100 (CET) |