---
title: "Perl typ gästbok"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/18981-perl-typ-gästbok"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "Rödalacket"
published: "2000-03-14T12:13:00.000Z"
updated: "2000-03-15T12:54:00.000Z"
replies: 4
views: 526
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/18981-perl-typ-gästbok"
---

# Perl typ gästbok

## #1 — Rödalacket, 2000-03-14T12:13Z

Hejsan...
Jag har ett litet problem...
Jag vill att en inmatning som görs på en sida
skall skrivas till en html sida så att det ser ut ungefär som en gästbok.
Jag har tittat i en gästbok hur det ser ut men har inte fått det att funka.
Det är bara två variabler som skall skrivas dit och dom heter $FORM{'betyg'} och $FORM{'namn'}.
Finns det hjälp att få kanske :o)

Permalänk: https://www.webforum.nu/p/18981

## #2 — FlashX, 2000-03-14T14:06Z

Kan du dela med dig av inläsningdelen av koden för gästboken som du tittat på (eller länk till skriptet) så blir det enklare att se var felet ligger.

Permalänk: https://www.webforum.nu/p/340439

## #3 — Rödalacket, 2000-03-14T17:13Z

Japp det kan jag.#!/usr/bin/perl
print "Content-type:text/html\\n\\n";

$gb_file = "../guestbook.htm";
$gb_url = "../guestbook.htm";

&read_form;
&add_entry;
print "Location: $gb_url\\n\\n";

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
    ($name, $value) = split(/=/, $pair);
    $value =\~ tr/+/ /;
    $value =\~ s/%(\[a-fA-F0-9\]\[a-fA-F0-9\])/pack("C",hex($1))/eg;
    $FORM{$name} = $value;
}

%namn = ( 0 =\> "",
                1 =\> "Peter",
                2 =\> "Petter",
                3 =\> "Agda",
                4 =\> "Kalle",
                5 =\> "Kålle",
                6 =\> "Åsa" );

print \<\<EndHTML;
\<html\>\<head\>\<title\>Resultat\</title\>\</head\>
\<body\>

Lagkamrat $namn{$FORM{'namn'}} kommer $FORM{'status'} p&aring; S&ouml;ndag\<p\>

sub add_entry {
	open(MAIN,"$gb_file") &#0124; &#0124; &fatal("Kan inte öppna filen $gb_file för läsning.\<br\>Se readme.txt.");
	@main = \<MAIN\>;
	close(MAIN);
	open(MAIN,"\>$gb_file") &#0124; &#0124; &fatal("Kan inte skriva till filen $gb_file.\<br\>Se readme.txt.");
	foreach $main_line (@main) {
		if ($main_line =\~ /\<!--begin--\>/) {
			print MAIN "\<!--begin--\>\\n";
			print MAIN "\<table border=0 width='400'\>\\n";
			print MAIN "\<tr\>\<td width='20%'\>\<b\>Namn:\</b\>\</td\>\<td\>\<i\>\<a href=\\"mailto:$FORM{'namn'}\\"\>$FORM{'status'}\</a\>\</i\>\</td\>\</tr\>\\n";
			print MAIN "\</table\>\\n";
			print MAIN "\<hr width='400'\>\<br\>\\n";
		} else {
			print MAIN "$main_line";
		}
	}
	close(MAIN);
}

EndHTML

Här vill jag alltså att det som skrivs skall fyllas på efter \<--begin--\> i guestbook.htm

Permalänk: https://www.webforum.nu/p/340440

## #4 — FlashX, 2000-03-15T11:50Z

Är lite osäker på hur du menar men skulle det [här](http://www.lammhult.com/cgi/index.html) fungera? 

I så fall kan du använda koden: 

```
#!/usr/bin/perl

$ResultURL = "http://din_doman.se/resultat.html";
$ResultHomeDir = "/home/din_katalog/public_html/resultat.html";

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$value =~ s/<!--(.|\n)*-->//g;
	$value =~ s/</\<\;/g;
	$value =~ s/>/\<\;/g;

   $FORM{$name} = $value;
}

open (FILE,"$ResultHomeDir") | | die "Kan inte öppna $ResultHomeDir: $!\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;

open (RESULT,">$ResultHomeDir") | | die "Kan inte öppna $ResultHomeDir: $!\n";

for ($i=0;$i<=$SIZE;$i++) {
	$_=$LINES[$i];
	if (/<!--begin-->/) { 

	print RESULT "<!--begin-->\n";
	print RESULT "<table border=\"0\" cellspacing=\"0\" cellpadding=\"4\" align=\"center\" width=\"400\"><tr><td align=\"right\" width=\"200\">$FORM{'namn'}</td>\n";
	print RESULT "<td width=\"200\">$FORM{'betyg'}</td></tr></table>\n";
	}
	else {
	      print RESULT $_;
	   }
}

close (RESULT);

print "Location: $ResultURL\n\n";

exit;
```

och koden till formuläret ser du ju på sidan.
Tabellen som skrivs ut av skriptet klarar du säkert att modifiera själv. 

**Observera** att \| \| i skriptet får ett mellanslag när det publiceras på forumet, så glöm inte att ta bort det.

Permalänk: https://www.webforum.nu/p/340441

## #5 — Rödalacket, 2000-03-15T12:54Z

Ja det där funkar med lite modifieringar :)
Jag fick mitt script att funka men jag fick inte med rullnings listen....varför vet jag inte...
Tack

Permalänk: https://www.webforum.nu/p/340442

---

Tråden på webben: https://www.webforum.nu/amne/programmering/18981-perl-typ-gästbok
