webForumDet fria alternativet

RegExp

9 svar · 426 visningar · startad av RGB

RGBMedlem sedan dec. 1999419 inlägg
#1

Kort och gott:
1. Jag har en text fil som ska laddas upp på en unix-server.
2. Med hjälp av ett perlscript ska innehållet i filen läsas in och ändras för att slutligen sparas i en html-fil som ska visas för användaren som laddae upp textfilen i steg 1.

Innehållet i text ser ut så här med den skillnad att att antalet rader i filen inte nödvändigtvis är det samma:

;;1;;Namn (P) E_Namn / ;Gävle GK;70;;SCR
;;1;;Namn (P) E_Namn / ;Grönlund GK;70;;SCR
;;3;;Namn  (P) E_Namn / ;Orust GK;71;;SCR
;;3;;Namn  (P) E_Namn / ;Rättviks GK;71;;SCR
;;3;;Namn (P) E_Namn / ;Falsterbo GK;71;;SCR
;;3;;Namn  (P) E_Namn / ;Gävle GK;71;;SCR
;;3;;Namn / ;Härnösands GK;71;;SCR
;;3;;Namn  (P) E_Namn / ;Högbo GK;71;;SCR
;;9;;Namn / ;Falun-Borlänge GK;72;;SCR
;;9;;Namn  (P) E_Namn / ;Högbo GK;72;;SCR
;;11;;Namn  (P) E_Namn / ;Rättviks GK;73;;SCR
;;11;;Namn (P) E_Namn / ;Tortuna GK;73;;SCR

Outputen som ska sparas i HTML-filen ska seut så här:


<tr><td bgcolor=green>1</td><td bgcolor=green>Namn (P)E_Namn </td><td bgcolor=green>Gävle GK</td><td bgcolor=green>70</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>1</td><td bgcolor=green>Namn (P) E_Namn </td><td bgcolor=green>Grönlund GK</td><td bgcolor=green>70</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>3</td><td bgcolor=green>Namn  (P) E_Namn </td><td bgcolor=green>Orust GK</td><td bgcolor=green>71</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>3</td><td bgcolor=green>Namn  (P) E_Namn </td><td bgcolor=green>Rättviks GK</td><td bgcolor=green>71</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>3</td><td bgcolor=green>Namn (P) E_Namn </td><td bgcolor=green>Falsterbo GK</td><td bgcolor=green>71</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>3</td><td bgcolor=green>Namn  (P) E_Namn </td><td bgcolor=green>Gävle GK</td><td bgcolor=green>71</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>3</td><td bgcolor=green>Namn </td><td bgcolor=green>Härnösands GK</td><td bgcolor=green>71</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>3</td><td bgcolor=green>Namn  (P) E_Namn </td><td bgcolor=green>Högbo GK</td><td bgcolor=green>71</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>9</td><td bgcolor=green>Namn E_Namn </td><td bgcolor=green>Falun-Borlänge GK</td><td bgcolor=green>72</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>9</td><td bgcolor=green>Namn  (P) E_Namn </td><td bgcolor=green>Högbo GK</td><td bgcolor=green>72</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>11</td><td bgcolor=green>Namn  (P) E_Namn </td><td bgcolor=green>Rättviks GK</td><td bgcolor=green>73</td><td bgcolor=green>SCR</td></tr>
<tr><td bgcolor=green>11</td><td bgcolor=green>Namn (P) E_Namn </td><td bgcolor=green>Tortuna GK</td><td bgcolor=green>73</td><td bgcolor=green>SCR</td></tr>

Om jag kunde använt mig av ASP så hade det inte varit ngt större problem att lösa det hela men nu så måste jag använda mig av Perl som jag är minst sagt värdelös på kan inte ens grunderna i språket men som jag har förstått så ska det iaf vara överlägset det mesta när det gäller att bearbeta textfiler.
Så jag hoppas att det inte är ngt större problem för något som kan språket att hjälpa mig med mitt lilla problem ;)

Bör väl tilläggas att jag inte är världens höjdare på reguljära uttryck heller :(

//R.G.B

[Redigerat av RGB den 24 mar 2000]

RobbanMedlem sedan dec. 19992 555 inlägg
#2

Funktionen split() är ju ett utmärkt val i sådana här fall.

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Perl-kod:<pre>
# Läser in textfilen
open INFILE, "<data.txt" or die "Error: $!";
my @rows = <INFILE>;
close INFILE;

# Skriver ut resultatet
open OUTFILE, ">result.html" or die "Error: $!";
# Här skrivs inledande HTML in
map {
my @items = split /;/;
chop $items[4];
chop $items[4];
chomp $items[8];
print <<_EOF_;
<tr><td bgcolor=green>$items[2]</td><td bgcolor=green>$items[4]</td>
<td bgcolor=green>$items[5]</td><td bgcolor=green>$items[6]</td>
<td bgcolor=green>$items[8]</td></tr>
_EOF_
} @rows;
# Här skrivs avslutande HTML in
close OUTFILE;

------------------
Robban < robban@lipogram.com >

[Redigerat av Robban den 24 mar 2000]

[Redigerat av Robban den 24 mar 2000]

RGBMedlem sedan dec. 1999419 inlägg
#3

Tackar :)

//R.G.B

woodiMedlem sedan feb. 20001 270 inlägg
#4

Ovanstående kod fungerar inte för mig..
Får följande fel när jag kör koden i konsolen:

syntax error at ./golf.pl line 20, near "@rows
# Här skrivs avslutande HTML in
close"
Execution of ./golf.pl aborted due to compilation errors.

Hela koden:

#!/usr/bin/perl
# Läser in textfilen
open INFILE, "<data.txt" or die "Error: $!";
my @rows = <INFILE>;
close INFILE;
# Skriver ut resultatet
open OUTFILE, ">golf.htm" or die "Error: $!";
# Här skrivs inledande HTML in
map {
    my @items = split /;/;
    chop $items[4];
    chop $items[4];
    chomp $items[8];
    print <<_EOF_;
<tr bgcolor=green><td>$items[2]</td><td>$items[4]</td>
<td>$items[5]</td><td>$items[6]</td><td>$items[8]</td></tr>
_EOF_
} @rows
# Här skrivs avslutande HTML in
    close OUTFILE;

------------------
Svenska FF1
www.johan-skog.nu
/W*

RobbanMedlem sedan dec. 19992 555 inlägg
#5

Du saknar ett semikolon efter @rows.

------------------
Robban < robban@lipogram.com >

woodiMedlem sedan feb. 20001 270 inlägg
#6

Aha.. Så dumt..
Men det är något lurt iaf.. Filen golf.htm skapas men den är och förblir tom..
HTML koden skrivs ut i konsolen men lagras alltså inte i golf.htm..

Någon som vet vad som är fel!?

------------------
Svenska FF1
www.johan-skog.nu
/W*

RobbanMedlem sedan dec. 19992 555 inlägg
#7

Japp, en typo av mig. :r

print <<_EOF_;

... skall vara ...

print OUTFILE <<_EOF_;

------------------
Robban < robban@lipogram.com >

woodiMedlem sedan feb. 20001 270 inlägg
#8

Är inte riktigt haj på Perl ännu.. :)

Om jag vid ett senare tillfälle vill fylla på filen golf.htm med fler rader hur gör jag då!?
Med andra ord, om jag får en ny data.txt med nya data som ska läggas till och jag vill använda mig av samma script..

Robban
Tack, det funkar! ;)

------------------
Svenska FF1
www.johan-skog.nu
/W*

RobbanMedlem sedan dec. 19992 555 inlägg
#9

Det bestäms när du öppnar filen. Om du använder vad jag har skrivit:

open OUTFILE, ">result.html" or die "Error: $!";

... så kommer innehållet i filen att raderas i samband med öppnandet. Om du i stället skriver:

open OUTFILE, ">>result.html" or die "Error: $!";

... så kommer det du skriver till den läggas efter det som redan fanns där. Ingen radering sker alltså.

------------------
Robban < robban@lipogram.com >

[Redigerat av Robban den 31 mar 2000]

woodiMedlem sedan feb. 20001 270 inlägg
#10

Vad dum jag är! :r

------------------
Svenska FF1
www.johan-skog.nu
/W*

132 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)