Annotation of db/prgsrc/counter7.pl, revision 1.3

1.1       roma7       1: #!/usr/bin/perl
                      2: $wait=3;
                      3: $cfile = 'counts/count7.txt';
                      4: open STDERR, ">errors";
1.2       roma7       5: $lockdir="counts/";
1.1       roma7       6: $l = lc $ENV{'DOCUMENT_NAME'};
                      7: $header="Content-Type: text/html\n\n";
1.3     ! roma7       8: print $header;
        !             9: &lockfile && (print '?? раз', exit);
1.1       roma7      10: 
                     11: open(F, $cfile);
                     12: @DATA = <F>;
                     13: close(F);
                     14: foreach (@DATA) {
                     15:   ($c, $bl) = split / - /;
                     16:   chomp $bl;
                     17:   if ($bl eq $l)
                     18:   {
                     19:     $c++;
                     20:     $_ = "$c - $bl\n";
                     21:     $tmp = "cfile$$.tmp";
                     22:     open(F, ">$tmp");
                     23:     print F @DATA;
                     24:     close(F);
                     25:     rename("$tmp", $cfile);
1.3     ! roma7      26:     print "$c раз".&Suffix($c);
1.1       roma7      27:     &unlockfile ;
                     28:     exit
                     29:   }
                     30: }
                     31: 
                     32: open(F, ">>$cfile");
                     33: print F "1 - $l\n"; 
                     34: close(F);
                     35: 
1.3     ! roma7      36: print "первый раз";
1.1       roma7      37: &unlockfile;
                     38: 
                     39: sub lockfile
                     40: {  
                     41:    $tmp="$lockdir$cfile$$.tmp";
                     42:    $lock="$lockdir$cfile.loc";
                     43:    open F,">$tmp" or return 1;
                     44:    print F $$;
                     45:    close F;
                     46:    if (-e $lock) {
                     47:     for (1..$wait){
                     48:        sleep(1); 
                     49:        last unless -e $lock
                     50:     }
                     51:    }
                     52:    if ((-e $lock) && (-M $lock<0)){unlink $tmp;
                     53: return 2}
                     54:    elsif (!rename($tmp,$lock)) {return 3}
                     55:    open(LOCK,"<$lock") or return 3;
                     56:    $lock_pid=<LOCK>;
                     57:    close(LOCK);
                     58:    return 2 unless $lock_pid == $$;
                     59:    return 0; 
                     60: }
                     61: 
                     62: sub unlockfile
                     63: {
                     64:   open (LOCK, "<$lock") or return 1;
                     65:   $lock_pid=<LOCK>;
                     66:   close(LOCK);
                     67:   return 2 unless $lock_pid==$$;
                     68:   unlink($lock) or return 3;
                     69:   return 0;
                     70: }
                     71: 
                     72: 
                     73: sub Suffix {
                     74:        my ($qnum) = @_;
                     75:    my ($suffix) = 'а' if $qnum =~ /[234]$/;
                     76:    $suffix = '' if $qnum =~ /156789$/ || $qnum =~ /1.$/;
                     77:    return $suffix;
                     78: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>