Lynx venlig chat.
Jeg er en Perl n00b der lige er startet på en Lynx (text browser) venlig chat klient. Jeg er nået ret langt (syntes jeg selv) men jeg har nogle problemer.I får lige koden:
+------------------------------------------------------------------+
#!/usr/bin/perl
# PUBLIC DOMAIN
read(STDIN, $input,$ENV{'CONTENT_LENGTH'});
@ap = split(/&/, $input);
foreach $p (@ap) {
($msg, $value) = split(/=/, $p);
$msg =~ tr/+/ /;
$msg =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$IND{$msg} = $value;
}
open (OUT, ">>msgs.txt");
print OUT '<b>',$ENV{REMOTE_ADDR},'</b> - ',$IND{$msg},'<br>';
close(OUT);
open(IN, "msgs.txt");
@msgs = <IN>;
close(IN);
print "Content-type: text/html\n\n";
print '<html>
<head>
<title>Chat</title>
</head>
<body>
<form action="chat.pl" align="center" method="post">
<input name="name" type="text">
<input type="submit" value="Submit/Reload">
</form>
<hr />';
print '',@msgs,'';
print '
</body>
</html>';
+------------------------------------------------------------------+
1. Når man har skrevet en besked og refresher gentager skriptet selvfølgelig sig selv og skriver beskeden igen. Kan man stoppe det på nogen måde?
2. Det ville være smartere hvis scriptet skrev den nye besked i starten af msgs.txt i stedet for slutningen. Kan det lade sig gøre?
På forhånd tak,
Metaph :)
PS: Jeg undskylder mange gange den smagløse spaghetti kode... Tilgiv mig.
