HP-User: Ausgabereihenfolge / Laut gedacht...

Beitrag lesen

Hi CPAN

Ich poste es mal trotzdem hierher, hab die privaten Stellen unkenntlich gemacht:

  
#!/usr/bin/perl -w  
  
###############################################################################  
# guest-reader.pl:                 Version 1.00                               #  
# Developed started in:            02.08.2012                                 #  
# Finished in:                     03.08.2012                                 #  
# Programmed by:                   XXXXXXXXXXXXXXX                            #  
###############################################################################  
  
use strict;  
use warnings;  
use Fcntl ':flock';  
use CGI -no_xhtml;  
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);  
use Encode;  
  
######################################  
# Extra-Skalar-Group (ESG) / Skalare #  
######################################  
  
my $DB_nick;  
my $DB_nachricht;  
my $DB_zaehler;  
my $DB_gbrgelesen;  
my $DB_IPAdresse;  
my $DB_Monatstag;  
my $DB_Monat;  
my $DB_Jahr;  
my $DB_Stunden;  
my $DB_Minuten;  
my $DB_Sekunden;  
  
##################  
# Html-Protokoll #  
##################  
  
print CGI->header('text/html');  
  
##################################  
# Read-Out-Engine / Buchausleser #  
##################################  
  
open(LESER, "<XXXXXXX/XXXXXXX.csv") or die "ERROR: Unable to open the Message-file during read-access!";  
flock(LESER, LOCK_SH);  
  
my @Collector;  
my $counter = 0;  
  
while(! eof(LESER)){  
my $zeile = <LESER>;  
my ($DB_nick, $DB_nachricht, $DB_zaehler, $DB_gbrgelesen, $DB_IPAdresse, $DB_Monatstag, $DB_Monat, $DB_Jahr, $DB_Stunden, $DB_Minuten, $DB_Sekunden) = split(/;/,$zeile);  
  
$counter = ($counter + 1);  
  
unshift (@Collector, $counter, $DB_nick, $DB_nachricht, $DB_zaehler, $DB_gbrgelesen, $DB_IPAdresse, $DB_Monatstag, $DB_Monat, $DB_Jahr, $DB_Stunden, $DB_Minuten, $DB_Sekunden);  
}  
  
close(LESER);  
  
foreach ( my $i=0; $i<@Collector; $i+=12) {  
  my ($counter, $DB_nick, $DB_nachricht, $DB_zaehler, $DB_gbrgelesen, $DB_IPAdresse, $DB_Monatstag, $DB_Monat, $DB_Jahr, $DB_Stunden, $DB_Minuten, $DB_Sekunden)=@Collector[ $i .. $i+11 ];  
  
  print <<"ENDE";  
<div class="buch_eintrag">  
<p class="textvariante_c">($counter) Name: $DB_nick [Datum: $DB_Monatstag.$DB_Monat.$DB_Jahr / $DB_Stunden:$DB_Minuten:$DB_Sekunden Uhr]  
</p>  
<p class="textvariante_d">$DB_nachricht.  
</p>  
</div>  
ENDE  
}  
  
print <<"ENDE";  
</div>  
  
<img id="absatz_bild" border="0" src="reading_book.png" width="500" height="262" alt="Buchleser">  
  
</div>  
  
</body>  
</html>  
ENDE  
exit;  

Und nun dein Urteil?

Hinweise: Die "komischen" Skalarnamen stammen aus dem guest-writer-Program. Falls du meinst es wäre nicht optimal strukturiert: Das liegt daran, dass das Script über SSI eine vorhandene Html-Seite ergänzt, und diese Ergänzung halt genau an dieser Stelle zu stehen hat. Sonst stimmt der Ausgabecode nicht. Ich seh auch gerade das ModulEncode im Kopf, dass für das Lesescript eigentlich überflüssig ist. Es steht da, weil das im guest-writer-Program benötigt wurde. Da ich das writer-Prog zuerst geschrieben habe, hab ich den Kopf halt übernommen.

An einer Stelle hatte ich externe Hilfe, und verstehe besonders die "[]"-Eckklammern am ende nicht:

  
foreach ( my $i=0; $i<@Collector; $i+=12) {  
  my ($counter, $DB_nick, $DB_nachricht, $DB_zaehler, $DB_gbrgelesen, $DB_IPAdresse, $DB_Monatstag, $DB_Monat, $DB_Jahr, $DB_Stunden, $DB_Minuten, $DB_Sekunden)=@Collector[ $i .. $i+11 ];  

Da wär ich um ne Erklärung froh. Den Rest versteh ich, da selbst entwickelt, soweit.

Gruss HP-User