Thread Perl - Sub Routinen Parameter. (33 answers)
Opened by Gast at 2004-04-13 21:22

Knuddlbaer
 2004-04-18 18:59
#81547 #81547
User since
2004-04-13
32 Artikel
BenutzerIn
[default_avatar]
Quote
sub _test2

Diese private Methode ist von außen nicht zugänglich (die Verwendung führt zu dem von Dir beschriebenen Fehler) und so soll das dann ja auch sein.


Code: (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
package test;
##########################
sub new {
##########################
my $class = shift;
my $self = {};

bless $self, $class;
return $self;
}

##########################
sub test {
##########################
my ($self) = shift;
my @arg = @_;

_test2(@arg);
}

##########################
sub _test2 {
##########################
my @messages = @_;
print "\n";
print "Alle Mitteilungen:\n";
print "$_\n" foreach @messages;
}
##########################
1; #Wichtig!!!
##########################


Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl


use test;

my $t = test->new;

$t->_test2("GZGZ");


Wird ohne Probleme ausgeführt ?!
Ich verstehe jetzt nicht wie mich der '_' davor schützen soll das diese sub von aussen aufgerufen wird :confused:


Code: (dl )
beginnen, wie anders sollte die Hash-Referenz sonst rüberkommen?


Naja, ich bin von C++ gewohnt das diese Referenz (this) immer vom Compiler übergeben wird und *immer* vorhanden ist. Egal ob der Aufruf von aussen kommt oder von innen.

Bei Perl muss man this-> immer angeben (ohne gibts knatsch) und in Perl kann man das mischen was mich in Probleme bringt.

Das erste ist durch den Post von rene , self immer zu verwenden (wie this bei PHP) gelöst, aber es schützt mich nicht davor das ein Anwender des Objektes >versehentlich< eine Routine verwendet die nur intern aufgerufen werden sollte und falsch angwendet hohen schaden erzeugen kann....

Aber ich glaube fast, davor gibts in Perl kein Schutz.

View full thread Perl - Sub Routinen Parameter.