Thread Problem mit Klassen
(6 answers)
Opened by Gast at 2008-07-29 01:43
Mmh.. also ich kann dein Problem bei mir leider nicht rekonstruieren:
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 #!/usr/bin/perl package classes::module_proto; use strict; use warnings; our %ActionsHash = ( "list" => { 'postaction' => sub { $_[0]->list_all() } }, "edit" => { 'postaction' => sub { $_[0]->edit_one() } }, ); sub new { my ($pkg, $name ) = @_; #------------------ my $Self = {}; #------------------ bless( $Self, (ref $pkg || $pkg) ); $Self->{'ActionHash'} = \%ActionsHash; # ... return $Self; } sub _handle_event { my $Self = shift; my $action = shift; # ... my $func = $ActionsHash{ $action }{'postaction'} ; # ... my ($result, $error) = $func->( $Self, $action ) ; # ... return ($result, $error); } sub edit_one { my $Self = shift; # ... return ( 1, undef); } sub list_all { my $Self = shift; # ... return ( 1, undef); } #------- package classes::module_sources; use strict; use warnings; our @ISA = qw( classes::module_proto ); my %SourcesActionsHash = ( "list" => { 'postaction' => sub { $_[0]->list_all() } }, "edit" => { 'postaction' => sub { $_[0]->edit_one() } }, ); sub new { my ($pkg, $name ) = @_; #------------------ my $Self = $pkg->SUPER::new( $name ); bless( $Self, (ref $pkg || $pkg) ); $Self->{'ActionHash'} = \%SourcesActionsHash; return $Self; } sub list_all { my $Self = shift; # ... tu etwas spezielles mit sources return ( 1, undef); } #------- package main; use strict; use warnings; use Data::Dumper; my $sources = classes::module_sources->new(); print Dumper $sources->_handle_event( 'edit' ); <STDIN>; __END__ Läuft bei mir ohne Probleme. Zeig mal etwas mehr Code. MfG perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
|