Problem mit Skalaren, Arrays, Schleifen, etc...
Chris Weber
- perl
0 Christoph Schnauß0 Cheatah
0 Timothy
Hallo,
Ich versuche gerade ein Script zu schreiben das folgendes tut:
1. Aus einer Textdatei werden eine Reihe von Datansaetzen gelesen,
die wie folgt geordnet sind:
100000001ein beliebiger text1999
100000002ein anderer text1998
usw.
2. Aus jedem der Datensaetze sollen die ""s entfernt werden und für
jeden Teil eines Datensatzes soll ein bestimmtes HTML-Element
geprintet werden.
3. Der vom Perl-Script erzeugte HTML-Code sollte in etwa so aussehen:
<html>
...
...
<table>
<tr><td>100000001<br>ein beliebiger text<br><br>1999</td></tr>
<tr><td>100000002<br>ein anderer text<br><br>1998</td></tr>
</table>
...
...
Kann mir vielleicht jemand von Euch helfen, ich hab' wirklich keinen Plan, wie ich das machen soll..
Danke im Vorraus
Chris
Hallo,
Ich versuche gerade ein Script zu schreiben das folgendes tut:
Kann mir vielleicht jemand von Euch helfen, ich hab' wirklich keinen Plan, wie ich das machen soll..
ja, da ist Hilfe möglich: SELFHTML lesen, die Kapitel zu perl, da ist genau das ziemlich ausreichend beschrieben.
Gruß
Christoph S.
Hi,
ja, da ist Hilfe möglich: SELFHTML lesen, die Kapitel zu perl, da ist genau das ziemlich ausreichend beschrieben.
man möge mir verzeihen: SelfHTML ist eine hervorragende Sache, aber gerade in Bezug auf Perl sollte man möglichst die Finger davon lassen. Da hat Stefan noch einiges in Richtung Perl 5 aufzuholen ;-)
Statt dessen sollte man sich _eingehend_ mit der bei Perl mitgelieferten Dokumentation beschäftigen. Startpunkte sind z.B.:
perldoc perldoc
perldoc perl
perldoc CGI
und bezogen auf den aktuellen Fall:
perldoc -f split
Regular Expressions (perldoc perlre), wie Timothy sie vorschlägt, gehen hier zwar auch, sind aber ziemlich overdone. Mit split(//, $zeile) erhält man sehr leicht ein Array, dessen Elemente man mit Hilfe von CGI.pm ausgeben kann:
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard *table);
my $line = '100000001ein beliebiger text1999';
print header, start_html('Testausgabe'), start_table;
print start_tr;
foreach (split(//, $line)) { print td($_); }
print end_tr;
print end_table, end_html;
Cheatah
man möge mir verzeihen: SelfHTML ist eine hervorragende Sache, aber gerade in Bezug auf Perl sollte man möglichst die Finger davon lassen. Da hat Stefan noch einiges in Richtung Perl 5 aufzuholen ;-)
Statt dessen sollte man sich _eingehend_ mit der bei Perl mitgelieferten Dokumentation beschäftigen. Startpunkte sind z.B.:
perldoc perldoc
perldoc perl
perldoc CGIund bezogen auf den aktuellen Fall:
perldoc -f split
völlig richtig ;-) Allerdings: was die perl-Kapitel in SELFHTML leisten, ist zumindest eines - man lernt zu fragen. Und man bekommt wenigstens den ersten Schritt mit, für den zweiten reichts schon nicht mehr. Mir schien es hier so, daß es eben auf diesen "ersten Schritt" noch ankam.
Christoph S.
Hi,
man möge mir verzeihen: SelfHTML ist eine hervorragende Sache, aber gerade in Bezug auf Perl sollte man möglichst die Finger davon lassen. Da hat Stefan noch einiges in Richtung Perl 5 aufzuholen ;-)
[...]
völlig richtig ;-) Allerdings: was die perl-Kapitel in SELFHTML leisten, ist zumindest eines - man lernt zu fragen. Und man bekommt wenigstens den ersten Schritt mit, für den zweiten reichts schon nicht mehr. Mir schien es hier so, daß es eben auf diesen "ersten Schritt" noch ankam.
tja, nur muß man den Leuten dann immer wieder die SelfHTML-Formularauswertung abgewöhnen und ihnen beibringen, daß use CGI qw(:standard); und param() deutlich besser sind :-)
Vielleicht sollte jemand mal einen SelfAktuell-Artikel über CGI.pm schreiben... Oops, war das jetzt 'ne Freiwilligenmeldung? :-)
Chea "Mist aber auch! *g*" tah, im Moment aber wenig Zeit dafür habend
- Aus einer Textdatei werden eine Reihe von Datansaetzen gelesen,
die wie folgt geordnet sind:100000001ein beliebiger text1999
100000002ein anderer text1998usw.
Aus jedem der Datensaetze sollen die ""s entfernt werden und für
jeden Teil eines Datensatzes soll ein bestimmtes HTML-Element
geprintet werden.Der vom Perl-Script erzeugte HTML-Code sollte in etwa so aussehen:
<html>
...
...
<table>
<tr><td>100000001
ein beliebiger text1999</td></tr>
<tr><td>100000002
ein anderer text1998</td></tr>
</table>
...
Hi,
mit nachfolgendem Code kannst Du die einzelnen Teile extrahieren (stehen in $1, $2, $3). Damit kannst Du dann mit print-Anweisungen Deine Seite generieren.
open DATEI ,"d:/temp/dat";
while ($inp=<DATEI>){
$inp=~ /(.*)(.*)(.*)/;
#in $1 $2 $3 steht dann z.B. 100000002 ein Text 1999
}
close DATEI;
Gruß
Timothy