Thread Zugriff auf Membervariable aus Instanzmethode? (16 answers)
Opened by JackBauer at 2008-05-06 12:13

JackBauer
 2008-05-06 12:13
#109234 #109234
User since
2008-04-30
16 Artikel
BenutzerIn
[default_avatar]
Hi zusammen!

Meine Klasse ist wie folgt definiert:

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
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
sub new 
{
my $class = shift;
my $self = {};
$self->{filename} = undef;
$self->{path} = undef;
$self->{logRespository} = undef;
$self->{mcg} = undef;
$self->{reader} = undef;
$self->{timeStamp} = undef;

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

...

sub reader
{
my $self=shift;
if (@_) { $self->{reader} = shift }
return $self->{reader};
}

...

sub run
{
my $self=shift;

my $count = getIMSIcount();

#sleep(1000);

#workaround: disable BTS AXC and BTS WAM network interface
logprint("Disabling BTS AXC & WAM interface ...\n");
system("C:\\BFAT\\bfat_tools\\DevCon\\devcon disable PCI\\VEN_11AB");
system("C:\\BFAT\\bfat_tools\\DevCon\\devcon disable PCI\\VEN_13F0");
sleep(8);

StartMcgTestcase('mcg' => $self->{mcg}, 'reader' => $self->{reader}, 'tcName' => $self->{filename}, 'timestamp' => $self->{timeStamp});

# wait 30 seconds for each IMSI of the testcase

for(my $i = 0; $i <= $count; $i++)
{
sleep(30);
}

#workaround: enable BTS AXC and BTS WAM network interface again
logprint("Enabling BTS AXC & WAM interface ...\n");
system("C:\\BFAT\\bfat_tools\\DevCon\\devcon enable PCI\\VEN_11AB");
system("C:\\BFAT\\bfat_tools\\DevCon\\devcon enable PCI\\VEN_13F0");

StopMcgTestcaseAndTransferMcgLogs('mcg' => $self->{mcg}, 'reader' => $self->{reader}, 'repository' => $self->{logRespository});
}

...

sub getIMSIcount
{
$self=shift;

my $mcg_tc_log_base_dir = $self->{reader}->getTestCaseParam("mcg_tc_log_dir");
print $mcg_tc_log_base_dir."\n";

sleep(1000);
}



Von dieser Klasse bilde ich in einer anderen Datei eine Instanz und rufe schließlich die Methode run() auf. Da dies auf Instanzebene läuft, bin ich dazu in der Lage mittels der Variable $self auf meine Membervariable $reader zuzugreifen.

Innerhalb der run-Methode möchte ich nun die getIMSIcount-Methode aufrufen, die ebenfalls Zugriff auf reader hat.

In Java würde ich dieses Problem recht leicht mit this lösen. Wie stelle ich es am besten in Perl an ohne an die 2. Methode $self mitzuübergeben?

Gruß JackBauer

View full thread Zugriff auf Membervariable aus Instanzmethode?