dummy sub

dummy sub

am 10.04.2008 10:17:48 von Frank Kulow

Hallo NG,

es kann vorkommen, dass dblog nicht ausführbar ist, die dort enthaltenen
subs werden aber gebraucht (wenn auch ohne Wirkung). Für den Fall habe
ich jetzt dbdummy.pm angelegt. Geht das auch ohne Extradatei?


#xy.pl
..
..
..
eval("require dblog");
if($@)#wenn das schief ging
{
print("dbtest wegen Fehler übergangen\n");
require dbdummy;
}
..
..
..

------------
#dbdummy.pm

sub logdb_ergebnis {}
sub logdb_test {}
sub logdb_kopf {}
1;

----------

Danke Frank

Re: dummy sub

am 10.04.2008 10:20:55 von Frank Seitz

Frank Kulow wrote:
>
> Geht das auch ohne Extradatei?

*logdb_ergebnis = sub {};
....

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: dummy sub

am 12.04.2008 09:23:08 von Ferry Bolhar

Frank Seitz:

> *logdb_ergebnis = sub {};

Da wird die Funktion - so der Code nicht in einem
BEGIN-Block steht - erst zur Laufzeit definiert. Das
kann auf den Compiliervorgang Einfluß haben.

Was spricht gegen ein einfaches

sub logdb_ergebnis {};

LG, Ferry
--

Re: dummy sub

am 12.04.2008 09:26:32 von Frank Seitz

Ferry Bolhar wrote:
> Frank Seitz:
>>
>>*logdb_ergebnis = sub {};
>
> Da wird die Funktion - so der Code nicht in einem
> BEGIN-Block steht - erst zur Laufzeit definiert.

Genau das war die Absicht des OP.

> Das kann auf den Compiliervorgang Einfluß haben.

Welchen denn?

> Was spricht gegen ein einfaches
>
> sub logdb_ergebnis {};

Dagegen spricht, dass die Subroutine dann zweimal definiert ist.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: dummy sub

am 12.04.2008 19:21:17 von Ferry Bolhar

Frank Seitz:

>> Das kann auf den Compiliervorgang Einfluß haben.
>
> Welchen denn?

Naja, wenn man z.B.

$x = logdb_ergebnis;

schreibt, wird vom Parser unterschiedlicher Code generiert,
je nachdem, ob logdb_ergebnis bereits als Funktion deklariert
wurde oder noch nicht. OK, kommt hier, da alles erst zur Laufzeit
passiert, nicht wirklich zum Tragen, da hatte ich mich wohl etwas
verzettelt.

>> Was spricht gegen ein einfaches
>>
>> sub logdb_ergebnis {};
>
> Dagegen spricht, dass die Subroutine dann zweimal definiert ist.

Na gut, da habe ich mich unklar ausgedrückt. Ich meinte,
dass die Deklaration vor das "require" gehört. Geht das
"require" gut, wird die Dummy-Deklaration vom Code
in dblog.pm überschrieben. Ansonsten bleibt sie eben
bestehen.

Letztlich ist auch deine Typeglob-Zuweisung nichts anderes
als ein zur Laufzeit ausgeführtes "sub logdb_ergebnis", d.h.
eine zweite Definition.

Aber da tatsächlich alles erst zur Laufzeit passiert, ist die
Typeglob-Zuweisung wohl passender. Also wieder mal
1:0 für dich ;-).

LG, Ferry
--

Re: dummy sub

am 13.04.2008 10:12:01 von Frank Seitz

Ferry Bolhar wrote:
>
> Na gut, da habe ich mich unklar ausgedrückt. Ich meinte,
> dass die Deklaration vor das "require" gehört. Geht das
> "require" gut, wird die Dummy-Deklaration vom Code
> in dblog.pm überschrieben. Ansonsten bleibt sie eben
> bestehen.

Sowas gibt aber unschöne Warnungen ("Subroutine redefined").

> Aber da tatsächlich alles erst zur Laufzeit passiert, ist die
> Typeglob-Zuweisung wohl passender. Also wieder mal
> 1:0 für dich ;-).

Ich habe wohl schon zu viel in Perl gemacht...

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel