Опробовал ваши предложения - 0 результата, давайте я выложу весь исходник(только пожалуйста без распространения), я уже неделю просто над этой пробемой бьюсь, а все никак
В общем надо чтобы сообщения в чате нормально добавлялись, но чтоб при этом новая мессага не перетерала последний элемент массива, как это получается у меня...
[CODE]
#!/usr/bin/perl
#################################
#Scripted by CheRt[aka_GoDleSS] #
#©2003 #
#################################
$filepath=\'/inetpub/wwwroot/cgi-bin/mch/\';
$filext=\'mes.html\';
$clearfile=\'clear.pl\';
#--------------localtime
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$time1=$hour;
$time2=$min;
$time3=$sec;
if ($time1<10) {
$time1="0$time1";
}
if ($time2<10) {
$time2="0$time2";
}
if ($time3<10) {
$time3="0$time3";
}
#-----------------------
print "Content-type: text/html\\nPragma: no-cache\\n\\n";
print "
";
print "
\\n";
&getform;
if (&getoldfile) {
&printform;
&wfile;
}
else
{
print "Скрипт работает нестабильно, сообщи администрации
\\n";
}
print "\\n";
exit(0);
sub getform {
$buffer = "";
read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
@pairs=split(/&/,$buffer);
foreach $pair (@pairs)
{
@a = split(/=/,$pair);
$name=$a[0];
$value=$a[1];
$value =~ s/\\+/ /g;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/~!/ ~!/g;
$value =~ s/\\\\<\\;/g;
$value =~ s/\\>/\\>\\;/g;
$value =~ s/[\\r\\n]//g;
push (@data,$name);
push (@data,$value);
}
%form=@data;
%form;
}
sub getoldfile {
$form{\'room\'} =~ s/\\W//g;
return 0 unless open(DATAFILE, "$filepath$form{\'room\'}$filext");
@filesource=
;
close(DATAFILE);
return 1;
}
sub printform {
if ($form{\'logoff\'} eq \'1\') {
print << "EOF";
EOF
} else {
print << "EOF";
EOF
}
}
sub wfile {
$color = "$form{\'color\'}";
$newmessage = "\\ \\;($time1:$time2:$time3)$form{\'uname\'}: $form{\'mes\'}
\\n";
open (DATAFILE, ">$filepath$form{\'room\'}$filext");
print DATAFILE "\\n";
for ($i = 1; $i < 50; $i++) {
print DATAFILE $filesource[$i];
}
print DATAFILE $newmessage;
close DATAFILE;
}