home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl_ste.zip / auto / URI / URL / http / query_form.al < prev   
Text File  |  1997-11-28  |  1KB  |  34 lines

  1. # NOTE: Derived from ./blib/lib/URI/URL/http.pm.  Changes made here will be lost.
  2. package URI::URL::http;
  3.  
  4. # Handle ...?foo=bar&bar=foo type of query
  5. sub query_form {
  6.     my $self = shift;
  7.     $old = $self->{'query'};
  8.     if (@_) {
  9.     # Try to set query string
  10.     my @query;
  11.     my($key,$vals);
  12.         my $esc = $URI::URL::reserved . $URI::URL::unsafe;
  13.     while (($key,$vals) = splice(@_, 0, 2)) {
  14.         $key = '' unless defined $key;
  15.         $key =  URI::Escape::uri_escape($key, $esc);
  16.         $vals = [$vals] unless ref($vals) eq 'ARRAY';
  17.         my $val;
  18.         for $val (@$vals) {
  19.         $val = '' unless defined $val;
  20.         $val = URI::Escape::uri_escape($val, $esc);
  21.         push(@query, "$key=$val");
  22.         }
  23.     }
  24.     $self->equery(join('&', @query));
  25.     }
  26.     return if !defined($old) || length($old) == 0 || !defined(wantarray);
  27.     Carp::croak("Query is not a form") unless $old =~ /=/;
  28.     map { s/\+/ /g; URI::Escape::uri_unescape($_) }
  29.      map { /=/ ? split(/=/, $_, 2) : ($_ => '')} split(/&/, $old);
  30. }
  31.  
  32. 1;
  33. 1;
  34.