Leser: 30
2011-03-28T14:42:42 GwenDragonMuss bianca mal testen. ;)
2011-03-28T15:14:32 pqSorrymehr info, wie immer.
2011-03-28T15:14:32 pqan welcher stelle steht das eval und was steht in $@, wenn das "or" ausgeführt wird, also $zeitkorrektur_modul 0 ist?
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 -w use strict; use warnings; use Date::Calc qw ( System_Clock ); use Data::Dumper; my $zeitkorrektur_modul = 1; eval "use Win32::UTCFileTime qw (:globally); 1;" or $zeitkorrektur_modul = 0; #use Win32::UTCFileTime qw (:globally); print "\$zeitkorrektur_modul = $zeitkorrektur_modul\n"; print "\$@ = $@\n"; my @test = System_Clock (0); print Dumper (\@test); print "Doofe Sommerzeit aktiv: " . ($test[8] == 1 ? 'ja' : ($test[8] == -1 ? 'unbekannt' : 'nein')) . "\n"; print "time: " . time() . "\n"; print "localtime: " . localtime() . "\n"; print "gmtime: " . gmtime() . "\n"; my $datei = '../pfad/datei.bak'; print "stat Testdatei (25.03.2009 18:11:30 MEZ): " . (stat($datei))[9] . ' / ' . gmtime((stat($datei))[9]) . "\n";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$zeitkorrektur_modul = 1
$@ =
$VAR1 = [
2011,
3,
28,
17,
25,
0,
87,
1,
1
];
Doofe Sommerzeit aktiv: ja
time: 1301325900
localtime: Mon Mar 28 17:25:00 2011
gmtime: Mon Mar 28 15:25:00 2011
stat Testdatei (25.03.2009 18:11:30 MEZ): 1301076690 / Fri Mar 25 18:11:30 2011
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$zeitkorrektur_modul = 1
$@ =
$VAR1 = [
2011,
3,
28,
17,
25,
32,
87,
1,
1
];
Doofe Sommerzeit aktiv: ja
time: 1301325932
localtime: Mon Mar 28 17:25:32 2011
gmtime: Mon Mar 28 15:25:32 2011
stat Testdatei (25.03.2009 18:11:30 MEZ): 1301073090 / Fri Mar 25 17:11:30 2011
2011-03-28T15:27:28 pqpack es in einen BEGIN-block.
2011-03-28T15:30:50 bianca
1 2 3 4
BEGIN { eval "use Win32::UTCFileTime qw (:globally); 1;" or $zeitkorrektur_modul = 0; }
2011-03-28T15:37:48 pqamnesie?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl -w use strict; use warnings; use Date::Calc qw ( System_Clock ); use Data::Dumper; my $zeitkorrektur_modul = 1; BEGIN { eval "use Win32::UTCFileTime_SIMULATION_NICHT_VORHANDEN qw (:globally); 1;" or $zeitkorrektur_modul = 0; } print "\$zeitkorrektur_modul = $zeitkorrektur_modul\n"; print "\$@ = $@\n"; my @test = System_Clock (0); print Dumper (\@test); print "Doofe Sommerzeit aktiv: " . ($test[8] == 1 ? 'ja' : ($test[8] == -1 ? 'unbekannt' : 'nein')) . "\n"; print "time: " . time() . "\n"; print "localtime: " . localtime() . "\n"; print "gmtime: " . gmtime() . "\n"; my $datei = 'datei.bak'; print "stat Testdatei (25.03.2009 18:11:30 MEZ): " . (stat($datei))[9] . ' / ' . gmtime((stat($datei))[9]) . "\n";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$zeitkorrektur_modul = 1
$@ =
$VAR1 = [
2011,
3,
28,
17,
53,
28,
87,
1,
1
];
Doofe Sommerzeit aktiv: ja
time: 1301327608
localtime: Mon Mar 28 17:53:28 2011
gmtime: Mon Mar 28 15:53:28 2011
stat Testdatei (25.03.2009 18:11:30 MEZ): 1301076690 / Fri Mar 25 18:11:30 2011
1 2 3 4 5
my $zeitkorrektur_modul; BEGIN { eval "use Win32::UTCFileTime_Foo qw (:globally); 1;" and $zeitkorrektur_modul = 1; }
2011-03-28T16:02:27 pqumgekehrte logik.
2011-03-28T16:29:25 pqder code hat nicht mitten im script zu stehen.
das einbinden muss beim kompilieren geschehen, da es core-funktionen überschreibt.
2011-03-28T16:38:36 pqdann benutz halt nicht :globally. steht doch dabei, wofür es ist.
2011-03-28T16:47:07 biancaMein Problem ist, dass das Script und auch das Modul auch auf einem Linux laufen muss. Das heißt, ein use bei fehlendem Modul darf nicht zum Tod des Scripts führen.
2011-03-29T05:20:18 biancaDer komplette BEGIN Block funktioniert auch mittem im Script tadellos wie gewünscht.
QuoteABER: [...]
QuoteWas mache ich da noch falsch?
2011-03-29T08:57:20 biancaIst es unter diesen Gesichtspunkten trotzdem sinnvoll und funktionell, das Modul ganz an den Anfang des Mainscripts zu setzen oder wie macht man das am besten?
2011-03-29T09:08:28 GwenDragonUm gleich einen Überblick über mögliche eingebundene Module zu haben
Quotees ist ein BEGIN-block. es ist total sinnlos, den irgendwo mitten ins skript zu setzen, weil er eh in der kompilierungsphase ausgeführt wird.
2011-03-29T09:12:23 pqder BEGIN-block gehört trotzdem nicht mitten ins skript und ich bitte dich, den unsinn jetzt zu lassen, mein posting zu verstehen und ggfs. konkrete fragen zu stellen.
2011-03-29T10:07:53 pqaber dein code ist ja wie immer geheim.
2011-03-29T10:07:53 pqwenn du die funktion NICHT global ersetzen willst, dann NIMM NICHT :globally.
1
2
3
4
5
6
7
8
9
10
perl -wE'
sub foo {
my $bar;
BEGIN {
$bar = 23;
}
}'
Variable "$bar" will not stay shared at -e line 7.
2011-03-29T10:23:05 pqnein. es macht wirklich keinen unterschied.
du kannst den block in die letzte zeile schreiben, in zeile 4 oder in zeile 42. es wird immer in der kompilierungsphase ausgeführt.
2011-03-29T11:05:47 biancaUnd das ist der entscheidende Punkt. Mein Mainscript wird immer aufgerufen. Mein eigenes Adminmodul nur dann, wenn eine der Adminfunktionen aufgerufen wird.
Von daher mächte ich gern alles was mit externen Modulen zusammenhängt nicht im Mainscript abfackeln sondern in meinem Adminmodul damit Perl garnicht erst an der Stelle vorbei kommt.
2011-03-29T10:23:05 pqich warte also auf konkrete antworten.
2011-03-29T15:39:32 GwenDragonund Fragen stellen ist manchmal auch schwieriger als welche beantworten.