⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 etag.pm

📁 网页留言本,比一般的留言簿管用
💻 PM
字号:
package HTTP::Headers::ETag;use strict;use vars qw($VERSION);$VERSION = sprintf("%d.%02d", q$Revision: 1.3 $ =~ /(\d+)\.(\d+)/);require HTTP::Date;require HTTP::Headers;package HTTP::Headers;sub _etags{    my $self = shift;    my $header = shift;    my @old = _split_etag_list($self->_header($header));    if (@_) {	$self->_header($header => join(", ", _split_etag_list(@_)));    }    wantarray ? @old : join(", ", @old);}sub etag          { shift->_etags("ETag", @_); }sub if_match      { shift->_etags("If-Match", @_); }sub if_none_match { shift->_etags("If-None-Match", @_); }sub if_range {    # Either a date or an entity-tag    my $self = shift;    my @old = $self->_header("If-Range");    if (@_) {	my $new = shift;	if (!defined $new) {	    $self->remove_header("If-Range");	} elsif ($new =~ /^\d+$/) {	    $self->_date_header("If-Range", $new);	} else {	    $self->_etags("If-Range", $new);	}    }    return unless defined(wantarray);    for (@old) {	my $t = HTTP::Date::str2time($_);	$_ = $t if $t;    }    wantarray ? @old : join(", ", @old);}# Split a list of entity tag values.  The return value is a list# consisting of one element per entity tag.  Suitable for parsing# headers like C<If-Match>, C<If-None-Match>.  You might even want to# use it on C<ETag> and C<If-Range> entity tag values, because it will# normalize them to the common form.##  entity-tag	  = [ weak ] opaque-tag#  weak		  = "W/"#  opaque-tag	  = quoted-stringsub _split_etag_list{    my(@val) = @_;    my @res;    for (@val) {        while (length) {            my $weak = "";	    $weak = "W/" if s,^\s*[wW]/,,;            my $etag = "";	    if (s/^\s*(\"[^\"\\]*(?:\\.[^\"\\]*)*\")//) {		push(@res, "$weak$1");            } elsif (s/^\s*,//) {                push(@res, qq(W/"")) if $weak;            } elsif (s/^\s*([^,\s]+)//) {                $etag = $1;		$etag =~ s/([\"\\])/\\$1/g;	        push(@res, qq($weak"$etag"));            } elsif (s/^\s+// || !length) {                push(@res, qq(W/"")) if $weak;            } else {	 	die "This should not happen: '$_'";            }        }   }   @res;}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -