use constantの意味が分からない
以下の
use constant SMAX => 50;とuse constant CMAX => 10; を
$SMAX = 50;
$CMAX = 10;
に変更し、if ( SMAX < $max ) { $n = $max - SMAX; }も
if ( $SMAX < $max ) { $n = $max - $SMAX; }
と変更しましたが、機能してませんでした。
どこが間違っておりますでしょうか?
宜しくお願いします。
以下がCGIです。
#!/usr/bin/perl
# 保存するコメント数
use constant SMAX => 50;
# 表示するコメント数
use constant CMAX => 10;
#-----------------------------
if ($ENV{'REQUEST_METHOD'} eq "POST"){ read (STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); }
if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; }
@list = split (/&/,$buffer);
foreach (@list){
($key,$value) = split (/=/,$_);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/ pack ("C",hex($1))/eg;
$getdata{ $key } = $value;
}
$x = $getdata{ 'px' };
$y = $getdata{ 'py' };
$comment = $getdata{ 'com' };
$file = 'comment.dat';
open (IN,"$file");
@list = <IN>;
close (IN);
chomp(@list);
$max = @list;
if ( $x != '' ){
$writedata = $x.'<>'.$y.'<>'.$comment;
if ( SMAX < $max ) { $n = $max - SMAX; }
else { $n = 0; }
open (OUT,"> $file");
flock(OUT,2);
for ( ; $n < $max; $n++ ) {
print OUT $list[$n]."\n";
}
print OUT $writedata;
close (OUT);
}
if ( CMAX < $max ) { $n = $max - CMAX; }
else { $n = 0; }
print "Content-type: text/html\n\n";
for ( ; $n < $max; $n++ ) {
print $list[$n]."\n";
}
if ( $x != '' ){
print $writedata;
}
exit ;
補足
なるほど。ありがとうございました。