X-Git-Url: http://git.shiar.nl/perl/plp/.git/blobdiff_plain/aaf82199178b7ad9117942bafcb45fadc24e1dab..b5e0ee87251670be18b2f2fc128a4be0b25ebfb8:/PLP/Fields.pm diff --git a/PLP/Fields.pm b/PLP/Fields.pm deleted file mode 100644 index 7f07c4e..0000000 --- a/PLP/Fields.pm +++ /dev/null @@ -1,126 +0,0 @@ -package PLP::Fields; - -use strict; - -# Has only one function: doit(), which ties the hashes %get, %post, %fields -# and %header in PLP::Script. Also generates %cookie immediately. -sub doit { - - # %get - - my $get = \%PLP::Script::get; - if (length $ENV{QUERY_STRING}){ - for (split /[&;]/, $ENV{QUERY_STRING}) { - my @keyval = split /=/, $_, 2; - PLP::Functions::DecodeURI(@keyval); - $get->{$keyval[0]} = $keyval[1] unless $keyval[0] =~ /^\@/; - push @{ $get->{ '@' . $keyval[0] } }, $keyval[1]; - } - } - - # %post - - tie %PLP::Script::post, 'PLP::Tie::Delay', 'PLP::Script::post', sub { - my %post; - my $post; - - return \%post if $ENV{CONTENT_TYPE} !~ - m!^(?:application/x-www-form-urlencoded|$)!; - - $post = $PLP::read->($ENV{CONTENT_LENGTH}) if $ENV{CONTENT_LENGTH}; - - return \%post unless defined $post and length $post; - - for (split /&/, $post) { - my @keyval = split /=/, $_, 2; - PLP::Functions::DecodeURI(@keyval); - $post{$keyval[0]} = $keyval[1] unless $keyval[0] =~ /^\@/; - push @{ $post{ '@' . $keyval[0] } }, $keyval[1]; - } - - return \%post; - }; - - # %fields - - tie %PLP::Script::fields, 'PLP::Tie::Delay', 'PLP::Script::fields', sub { - return { %PLP::Script::get, %PLP::Script::post }; - }; - - # %header - - tie %PLP::Script::header, 'PLP::Tie::Headers'; - - # %cookie - - if (defined $ENV{HTTP_COOKIE} and length $ENV{HTTP_COOKIE}) { - for (split /; ?/, $ENV{HTTP_COOKIE}) { - my @keyval = split /=/, $_, 2; - $PLP::Script::cookie{$keyval[0]} ||= $keyval[1]; - } - } -} - -1; - -=head1 NAME - -PLP::Fields - Special hashes for PLP - -=head1 DESCRIPTION - -For your convenience, PLP uses hashes to put things in. Some of these are tied -hashes, so they contain a bit magic. For example, building the hash can be -delayed until you actually use the hash. - -=over 10 - -=item C<%get> and C<%post> - -These are built from the C (or C -strings in query string and post content. C<%post> is not built if the content -type is not C. In post content, the -semi-colon is not a valid separator. - -%post isn't built until it is used, to speed up your script if you -don't use it. Because POST content can only be read once, you can C -and just never access C<%post> to avoid its building. - -With a query string of C, C<$get{key}> will -contain only C. You can access both elements by using the array -reference C<$get{'@key'}>, which will contain C<[ 'firstvalue', 'secondvalue' -]>. - -=item C<%fields> - -This hash combines %get and %post, and triggers creation of %post. POST gets -precedence over GET (note: not even the C<@>-keys contain both values). - -This hash is built on first use, just like %post. - -=item C<%cookie>, C<%cookies> - -This is built immediately, because cookies are usually short in length. Cookies -are B automatically url-decoded. - -=item C<%header>, C<%headers> - -In this hash, you can set headers. Underscores are converted to normal minus -signs, so you can leave out quotes. The hash is case insensitive: the case used -when sending the headers is the one you used first. The following are equal: - - $header{CONTENT_TYPE} - $header{'Content-Type'} - $header{Content_Type} - $headers{CONTENT_type} - -=back - -=head1 AUTHOR - -Juerd Waalboer - -Current maintainer: Mischa POSLAWSKY - -=cut -