Schrift
[thread]12766[/thread]

Von Klasse auf Routine des aufrufenden Scripts zugreifen

Leser: 1


<< >> 4 Einträge, 1 Seite
roooot
 2008-11-16 15:26
#116301 #116301
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe folgendes Problem:
Ich rufe eine Klasse mittels new blablabla auf. Nun will ich aus dieser Klasse auf eine Funktion zugreifen, die auf der Ebene liegt, die die Klasse aufgerufen hat. Ich hab erst gedacht caller hilft mir da, aber dem war nicht so. Also wie gehts?
Danke euch



Kurzer Fetzen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
var myfoo = new Foo();

sub _barfn {};


{
   package Foo
   
   # ...
}
Viele Grüße :)
MatthiasW
 2008-11-16 15:49
#116302 #116302
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Wenn ich dich richtig verstanden habe ist caller() genau das was du suchst.
caller() liefert dir das package von wo aus die jeweilige Methode aufgerufen wurde(und noch mehr Informationen die du hier aber nicht brauchst).
Beispiel:
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
#!/usr/bin/perl

use strict;
use warnings;

my $foo = Foo->new;

$foo->bar;

sub foobar { foo => -bar }

package Foo;

sub new { bless {} }

sub bar {
        my( $package ) = caller();

        no strict 'refs';

        print &{$package.'::foobar'}();
} # bar

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
Gast Gast
 2008-11-16 15:55
#116303 #116303
Wenn Sowas nötig war habe ich das ungefähr so gemacht:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
use strict;
use warnings;

package buh;

use vars '$sub';
$sub=sub{};

sub use_sub { $sub= shift; }

sub bar { $handle->(@_); }

package main;

sub foo { print "foo: @_\n"; }

buh::use_sub(\&foo);
buh::bar('bar');
roooot
 2008-11-16 16:42
#116305 #116305
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
Danke euch,
hab eure Versuche allerdings nicht getestet, da ich das Script so umgeschrieben (Variable fällt einfach weg) habe, dass es gar nicht mehr auf die andere zugreifen muss. Finde ich persönlich besser.
Viele Grüße :)
<< >> 4 Einträge, 1 Seite



View all threads created 2008-11-16 15:26.