Thread Platformunabhängigen code UNIX/Win32 (7 answers)
Opened by Schnullux at 2008-07-24 18:04

Schnullux
 2008-07-24 18:04
#112617 #112617
User since
2008-07-24
3 Artikel
BenutzerIn
[default_avatar]
Moin Wissende dieser Welt!
Ich "darf" nun auch code für Win32 basteln der aber in dem gleichen file ( modul ) wie der "richtige :-) " stehen soll. Kurz; das Modul soll für den Benutzer platformunabhängig nutzbar sein. Mein Wunsch wäre also etwas wie eine generische log Funktion:
Code (perl): (dl )
1
2
3
use magrathea::generic;
# use a generic log function like
xlog(LOG_DEBUG,"This is a debug log");


Nun stoße ich natürlich auf ein paar Hindernisse die Ihr sicher schon laaaange gelöst habt. Und weil Ihr ja nett seid, könnt Ihr einem armen unwissenden bitte aufschlauen:

1) Wird die interpreterZeile
Code: (dl )
#! /usr/bin/perl -w
bei Win tatsächlich ignoriert wenn ich die *.pl Endung registriert habe und mit dem entsprechenden perl binary verküpft habe?


2) Wie kann ich System unterschiedliche module einbinden UND im code verwenden ohne das diese auf dem jeweils "falschen" System zu Problemen führen ( sowas wie #ifdef )? Hierzu mal ein Beispiel das SO NICHT funktioniert aber in etwa zeigt was ich möchte:

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
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /usr/bin/perl

# load libs
use strict;
use warnings;
use POSIX 'uname';
use Unix::Syslog;
use Unix::Syslog qw(:macros);
require Win32::EventLog;

# global vars ( arrrghhh, like an undeath mattress ;-)
my $handle = undef;
my ($sys) = &uname;

# some lines later....
if($sys =~ /window/i)   {

        #init win32 event log
        $handle = Win32::EventLog->new("Zaphod");

} else {

        # init UNIX syslog
        &openlog("Trillian","pid, ndelay, nowait",LOG_LOCAL4);
}

# some functions/lines later part of generic xlog() function... :-)
if($sys =~ /window/i)   {

        my %win;

        $win{'Computer'} = "Eddy";
        $win{'Source'} = "Hard of Gold";
        $win{'Category'} = undef;
        $win{'EventID'} = 42;
        $win{'Data'} = undef;
        $win{'Strings'} = "Dont interrupt me, I computing real earth Tee!"

        $handle->Report(\%win);

} else {

        &syslog(LOG_DEBUG,"Where is Marvin??");
}

# And now close all...
if($sys =~ /window/i)   {

        $handle->Close;

} else {

        &closelog();
}


Wäre toll wenn Ihr mir anhand des Beispieles Tipps geben könntet :-)

Gruß
Karsten
--
//// Never forget your towel \\\\
***********************************************************

View full thread Platformunabhängigen code UNIX/Win32