Thread Perl 5.42 (30 answers)
Opened by lichtkind at 2025-07-05 23:10

rosti
 2025-07-09 19:25
#197126 #197126
User since
2011-03-19
3691 Artikel
BenutzerIn
[Homepage]
user image
Zum ebenda gezeigten Beispiel:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
class LexicalMethod {
    my method abc ($x, $y) {
        say "Internal method abc invoked with x=$x y=$y";
    }

    method xyz {
        $self->&abc("x", "y");
    }
}


Wäre es doch immer noch möglich, die methode xyz von draußen aufzurufen. Und zwar so:

Code (perl): (dl )
my $lex = LexicalMethod->new()->xyz(3,4);


Und damit auch die private Methode. Das konnte man mit legacy Perl5 auch schon machen:


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
package Usus;

use strict;
use warnings;

sub new{
    my $class = shift;
    bless{}, $class;
}

my $pm = sub{
    my $self = shift;
    die "Aha, eine private Methode\n";
};

sub hack{
    my $self = shift;
    $self->$pm(@_);
}

package main;

use strict;
use warnings;

my $u = Usus->new()->hack;

Last edited: 2025-07-09 19:28:29 +0200 (CEST)
http://blog.rolfrost.de/

The art of steam.

View full thread Perl 5.42