Struppi: Split

Beitrag lesen

Hallo zusammen

As Voraussetzung liegt eine Datei (dynip.txt) die so aussieht:

------------------------copy----------------------------
217.162.201.57|36|45|12|26|1|2003

------------------------paste---------------------------

im gleichen Verzeichis wie mein CGI-Script. Das Script soll die einzelnen Zellen zwischen den | auslesen und in Variablen speichern damit ichs später weiterbenutzen kann. Das Script sieht so aus:

------------------------copy----------------------------

#!/usr/bin/perl -w

use strict;
use CGI qw/:standard/;

open(FILE,"<dynip.txt");

open(FILE,"<dynip.txt") || die "Kann dynip.txt nicht öffnen. Weil: $!";

@raw_data = <FILE>;

chomp(my  @raw_data = <FILE>);

close(FILE);
  chop($raw_data);

weg damit!

($ip,$newsec,$newmin,$hr,$mday,$newmon,$newyear) = split( |/,$raw_data);

my ($ip,$newsec,$newmin,$hr,$mday,$newmon,$newyear) = split( /|/,$raw_data);

Damit ist aber nicht sicher, das Daten da sind.

print "Content-Type: text/html\n\n";

print header(), start_html();

print "<font face="arial" size="3">\n";

font face ist veraltet und dank CSS ziemlich überflüssig.

print "<table border="0">\n";
  print "<tr><td width="75" align="left"><b>IP:</b></td><td width="125" align="right">$ip</td></tr>\n";
  print "<tr><td width="75" align="left"><b>Time:</b></td><td width="125" align="right">$hr:$newmin:$newsec</td></tr>\n";
  print "<tr><td width="75" align="left"><b>Date:</b></td><td width="125" align="right">$mday.$newmon.$newyear</td></tr>\n";
  print "</table>\n";
  print "</font>";

Du kannst sowas wesentlich übersichtlicher mit dem CGI Modul berwerkstelligen, oder mit einem HERE Dokument.

print <<TEXT;
<table border="0">
<tr><td width="75" align="left"><b>IP:</b></td>
<td width="125" align="right">$ip</td></tr>
<tr><td width="75" align="left"><b>Time:</b></td>
<td width="125" align="right">$hr:$newmin:$newsec</td></tr>
<tr><td width="75" align="left"><b>Date:</b></td>
<td width="125" align="right">$mday.$newmon.$newyear</td></tr>
</table>
TEXT

Aber wie gesagt, du kannst bei einer CGI Awendung nie sicher sein, das irgendwelche Variabeln gefüllt sind (auch bei anderen nicht) und von daher jede Variabel überprüfen oder zumindest mit einem Standardwert vorbelegen.

Struppi