03. august 2000 - 09:40
Der er
6 kommentarer og
1 løsning
Syntaks-problemer igen-igen
*suk* Jeg må jo nok sande, at det her er mere, end jeg kan greje.
Scriptet ser således ud:
#!/usr/bin/perl
print \"Content-type: text/html\\n\\n\";
&pic;
exit;
sub pic
{
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
$dennedag = (\'Søndag\',\'Mandag\',\'Tirsdag\',\'Onsdag\',\'Torsdag\',\'Fredag\',\'Lørdag\')[$wday];
############
# HVERDAGE #
############
###### - ONSDAG - ######
if ($dennedag eq \'Onsdag\' && ($hour > 5 && $hour < 10)) {
print \"Morgenradio fra 6 - 9\";
}
if ($dennedag eq \'Onsdag\' && ($hour > 8 && $hour < 13 && $min < 03)) {
print \"Formiddagsradio fra 10 - 11.45\";
}
###### - TORSDAG - ######
if ($dennedag eq \'Torsdag\' && ($hour > 6 && $hour < 9)) {
print \"Morgenradio fra 6 - 9\";
}
if ($dennedag eq \'Torsdag\' && ($hour > 8 && $hour < 13 && $min < 03)) {
print \"Formiddagsradio fra 9 - 11.45\";
}
else
{
print \"Billedarkivet er lukket.\";
}
}
Jeg ville jo mene, at den burde her 9.35 skrive \"Formiddagsradio fra 9 - 11.45\", da:
if ($dennedag eq \'Torsdag\' && ($hour > 8 && $hour < 12 && $min < 45)) {
print \"Formiddagsradio fra 9 - 11.45\";
...Det er torsdag. Klokken er mere end 8 og mindre end 12 (d.v.s. 11) og mindre end 45...
Jeg jeg FULDKOMMEN misforstået, hvordan jeg skal bygge sådan en tidsbegrænsning op eller...?
03. august 2000 - 12:55
#1
Du kan gøre det ca. 3 trilliarder gange nemmere ved at gøre således:
Hvis du skal markere tidspunktet mellem 0837 og 1151 (for nu at gøre
det svært), så skriver du
if ( 837<=($hour*100+$min) && ($hour*100+$min)<=1151 ) { ... }
Evt. beregner du en gang for alle $hour*100+$min og smider i en variabel.
(Hehe, hvorfor sender du ikke bare din spørgsmål direkte til mig... *gg* )
03. august 2000 - 13:05
#2
Ups, en advarsel, Skriv aldrig foranstillede 0.er. 0837 giver en syntaksfejl
og 0444 er ikke lig med 444 men ca. 292. Det er fordi et foranstillet 0 gør
tallet oktalt overfor Perl. Så aldrig begynder med et 0 - med mindre du
skriver 0...
04. august 2000 - 09:56
#3
Ja, jeg burde sende spørgsmålene direkte til dig.
Og som sædvanligt er dit svar perfekt. Vidste jeg ikke bedre, skulle jeg tro, at du underviste datalogistuderende i Århus! :)
04. august 2000 - 10:12
#4
Du har ret i 2 ud af 3: Jeg underviser datamatikerstuderende i Århus ;-)
04. august 2000 - 10:15
#5
;)
Pinligt! Jeg kunne ikke engang huske, hvad det var for et studie, min kammerat er i gang med! :)
04. august 2000 - 10:29
#6
BTW der er nu noget mærkeligt ved den kode.
I dette herrens øjeblik viser den p.g.a. følgende kode:
if ($dennedag eq \'Fredag\' && 1003<=($hour*100+$min) && ($hour*100+$min)<=1059)
{
print \"Formiddagsradio 10\";
}
\"Formiddagsradio 10\"
Men putter jeg endnu en if ind bag efter den forrige:
if ($dennedag eq \'Fredag\' && 1103<=($hour*100+$min) && ($hour*100+$min)<=1144)
{
print \"Formiddagsradio 11\";
}
Bliver den vild i varmen og fortæller FORUDEN den korrekte tekst samtidig at \"Billedarkivet er lukket\". Mærkeligt...
04. august 2000 - 11:31
#7
Det er på grund af din \"else\"... Den \"else\" er kun på den allersidste \"if\", og når der er falsk, kommer
det der står i \"else\"-n.
Du kan f.eks. gøre det således:
if (...) {
...
} elsif (...) {
...
} elsif (...) {
...
} else {
print \"Det kan jeg ikke finde ud af\";
}
Kurser inden for grundlæggende programmering