我尝试了一个基本的Perl/CGI脚本来跟踪访问网页的访问者。Perl代码如下所示:
#!/usr/bin/perl
#KEEPING COUNT OF VISITORS IN A FILE
use CGI':standard';
print "content-type:text/html\n\n";
#opening file in read mode
open (FILE,"<count.dat");
$cnt= <FILE>;
close(FILE);
$cnt=$cnt+1;
#opening file to write
open(FILE,">count.dat");
print FILE $cnt;
close(FILE);
print "Visitor count: $cnt";
问题是网页不会在每次刷新时增加访问者的数量。访问者的数量保持在$cnt
的初始值,即'1''。你知道问题出在哪里吗?
5条答案
按热度按时间9nvpjoqh1#
你从来没有测试过打开文件句柄的尝试是否有效。假设一个我有读写权限的文件只包含一个数字,代码的行为和预期的一样。如果文件不存在,那么计数总是
1
,如果它是只读的,那么它将保持在文件开始的位置。更一般的建议:
use strict;
和use warnings;
(以及基于投诉的正确代码)open
的三个参数调用open
一个文件总是|| handle_the_error_in($!);
nfs0ujit2#
这里有一个替代的解决方案,它只使用一个open(),如果文件不存在就创建它。锁定消除了多个更新程序之间潜在的争用情况。
6g8kf2rb3#
几个潜在原因:
open
艾德。始终至少使用or die $!;
进行测试,以检查文件是否打开ghg1uchk4#
最明显的事情,你会忘记是改变文件
count.dat
的权限这样做:应该可以了
f8rj6qna5#
您需要关闭网页并重新打开。仅刷新页面不会增加计数。