home *** CD-ROM | disk | FTP | other *** search
/ CLIX - Fazer Clix Custa Nix / CLIX-CD.cdr / mac / lib / auto / URI / URL / http / query_form.al < prev   
Text File  |  1997-06-23  |  977b  |  36 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.     return undef;
  26.     }
  27.     return undef unless defined $old;
  28.     return () unless length $old;
  29.     Carp::croak("Query is not a form") unless $old =~ /=/;
  30.     map { s/\+/ /g; URI::Escape::uri_unescape($_) }
  31.      map { split(/=/, $_, 2)} split(/&/, $old);
  32. }
  33.  
  34. 1;
  35. 1;
  36.