Leser: 1
|< 1 2 >| | 15 Einträge, 2 Seiten |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
package Test; sub new { my $invocant = shift; my $class = ref($invocant) || $invocant; my $self = {}; bless($self, $class); return ($self); } sub test1() { my $self = shift; return ('Ich will privat sein'); } sub test2() { my $self = shift; return ('Ich will oeffnetlich sein'); }
1 2 3
my $coderef=sub {}; # defintion $coderef->(); # aufruf1 &$coderef(); # aufruf2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package foo; sub new { # ... } sub public { my ( $self ) = @_; $self->_private(); } sub _private { my ( $self ) = @_; $self->_other_private_stuff(); } # ...
LanX-+2008-12-13 15:59:58--@Linuxer: Wie wärs mit der "Absprache" keine illegalen Webseiten zu verlinken? ; )
LanX-+2008-12-13 15:59:58--BTW: die dort beschriebene Methode ist identisch zu meiner! Und &$sub() braucht gerade ein Zeichen mehr als _sub()
Linuxer+2008-12-13 16:10:39--BTW: Soll es schon mal vorkommen, dass zwei User gleichzeitig eine Antwort tippen und dass sogar beide sehr ähnlichen Inhalt haben!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# An intriguing aspect of this behavior is that it can be used to implement private method calls. # If you put your class in a module, you can make use of the file's lexical scope for privacy. # First, store an anonymous subroutine in a file-scoped lexical: # declare private method my $secret_door = sub { my $self = shift; ... }; # Later on in the file, you can use that variable as though it held a method name. The closure # will be called directly, without regard to inheritance. As with any other method, the invocant is # passed as an extra argument. sub knock { my $self = shift; if ($self->{knocked}++ > 5) { $self->$secret_door(); } }
|< 1 2 >| | 15 Einträge, 2 Seiten |