Thread Linux und Windows: Betriebssystemabhängig Module laden (7 answers)
Opened by Lebowski at 2011-07-05 21:35

Linuxer
 2011-07-10 01:22
#150259 #150259
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
Welches Problem hast Du denn? Wie sieht die Meldung aus?
Wie sieht der relevante Code aus?
Kannst Du mal ein Beispiel liefern, mit dem sich das Problem nachstellen lässt?

So richtig eindeutig und klar finde ich Deine Beschreibung nicht.
Was meinst Du mit "nicht bei ersten Durchlauf die subroutinen auswertet."?

Ein Versuch, es zu erraten:

Du könntest in Deinen Subroutinen an den relevanten Stellen auf die OS-Version testen.
Wenn es das richtige OS ist (und damit die Module geladen werden konnten), dann kannst Du die Funktionen der Module einsetzen...

more (5.0kb):

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#! /usr/bin/perl
# vim:ts=4 sw=4 sts=4 et nu fdc=3:
use strict;
use warnings;

BEGIN {
    if ( $^O ne "linux" ) {
        require Win32API::Registry;
        require Win32::TieRegistry;
    }
}



sub foo {
    # keine Ahnung, geraten; eh nur Beispiel
    Win32API::Registry->whatever();
}


sub bar {
    Win32API::Registry->whatever()  if $^O ne 'linux';
}


sub fuu {
    # angenommen, dies waere von einem geladenen Modul exportiert worden... 
    # (nicht mit alleinigem require())
    however();
}


sub baz {
    however()   if $^O ne 'linux';
}

#foo();
bar();

#fuu();
baz();



Alternativ könnte man auch im BEGIN-Block bei erfolgreichen Modul-Laden eine entsprechende Variable setzen,
und dann diese Variable prüfen. Das hätte den Vorteil, dass man nicht im gesamten Skript die Bedingung $^O ne 'linux' fest kodiert, sondern nur im BEGIN-Block und dementsprechend die Variable setzt.
Last edited: 2011-07-10 01:26:45 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Linux und Windows: Betriebssystemabhängig Module laden