1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<html> <?INCLUDE HEAD1.html ?> <body> <h1><?= TITLE ?></h1> <p>Hier sind die aktuellen Wetterdaten von <?= NOW ?></p> <table> <caption>Wetterdaten für <?= MONTH ?>/<?= YEAR ?></caption> <?LOOP TABELLE1 ALIAS=ROW?> <tr> <?LOOP ROW ALIAS=DATA?> <td><?= DATA ?></td> <?/LOOP?> </tr> <?/LOOP?> </table> </body> </html>
1 2 3 4
<head> <title>Wetteranzeige</title> <link rel="stylesheet" type="text/css" src="wd.css"> </head>
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
#!/usr/bin/perl use strict; use warnings; use CGI; use LWP::UserAgent; use HTML::Template::Compiled; my $DOCUMENT_ROOT = $ENV{DOCUMENT_ROOT} || '.'; # für Fehlermeldumngen my $ERROR = ''; my $cgi = CGI->new; my @data; #### Wetterstation auslesen # my $lwp = LWP::UserAgent->new(); # hole aktuelle Tempertaturdaten von einer Wetterstation ab # Daten werden als Zeilen gesendet, in der Tab-sesparierte Daten vorliegen # Beispiel: # 1200 29.7 # 1300 31.2 # etc. # Über das HTTP-Protokoll abfragen my $result = $lwp->get('http://192.168.1.111/weather?date=today'); # falls die Abfrage fehlschlägt if ( not $result->is_success ) { $ERROR = 'Wetterstation nicht in Betrieb!' } # Abfrage war OK, Wetterstation hat was gesendet (hoffentlich die Daten ;) ) else { # Datenstrom einlesen my $rawstream = $result->decoded_content; # Datenstrom in einzelne Zeilen auftrennen und in Array speichern my @rawdata = split "\n", $rawstream; # Daten nun in eigene Arraystruktur (für Template später) speichern @data = map { [ ( split "\t" ) # Tabeseparierte Zeile aufsplitten und die Liste ] # in anonymes Array speichern } @rawdata; } ### Variablen für Datumsinhalte # my @MONATE = qw(- Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Nov Dez); my @localtime = localtime(); my $YEAR = $localtime[5] + 1900; my $MONTH = $MONATE[ $localtime[4] + 1 ]; my $NOW = "$localtime[3].$MONTH.$YEAR $localtime[2]:$localtime[1].$localtime[0]"; ### Erzeuge ein HHTML::Template::Compiled-Objekt # my $htc = HTML::Template::Compiled->new( filename => "$DOCUMENT_ROOT/index.html", tagstyle => [qw(-asp -comment +php -tt)], ); $htc->param( TITLE => 'Wetterstation 2', TABELLE1 => \@data, NOW => $NOW, MONTH => $MONTH, YEAR => $YEAR, ); print $cgi->header( -type => 'text/html' ), $htc->output; 1;
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Content-Type: text/html; charset=ISO-8859-1
<html>
<head>
<title>Wetteranzeige</title>
<link rel="stylesheet" type="text/css" src="wd.css">
</head>
<body>
<h1>Wetterstation 2</h1>
<p>Hier sind die aktuellen Wetterdaten von 4.Sep.2013 11:1.4</p>
<table>
<caption>Wetterdaten f├╝r Sep/2013</caption>
<tr>
<td>1700</td>
<td>26</td>
</tr>
<tr>
<td>1200</td>
<td>29.3</td>
</tr>
<tr>
<td>1800</td>
<td>24.2</td>
</tr>
<tr>
<td>1600</td>
<td>27.3</td>
</tr>
<tr>
<td>1500</td>
<td>28.8</td>
</tr>
<tr>
<td>1400</td>
<td>31.2</td>
</tr>
<tr>
<td>1300</td>
<td>33.6</td>
</tr>
</table>
</body>
</html>
2013-09-04T09:00:03 GwenDragon
Ich arbeite mit HTML::Template::Compiled und benutze ein Perl-Programm als CGI-Handler beim Apache für die HTML-Dateien.
1
2
3
4
Action MyWetter /cgi-bin/wetterhandler.pl
<FilesMatch "index.html$">
SetHandler MyWetter
</FilesMatch>
2013-09-04T10:31:55 GwenDragonCGI-Handler in Apache in .htaccess:
Code: (dl )1
2
3
4Action MyWetter /cgi-bin/wetterhandler.pl
<FilesMatch "index.html$">
SetHandler MyWetter
</FilesMatch>