Beat: URL lokal mit CGI.pm parsen

Beitrag lesen

ich möchte in einem Skript, das bei mir lokal läuft (also nicht in einer CGI-Umgebung) eine URL parsen, damit ich die übergebenen Argumente herausbekomme. Geht das mit CGI.pm? Wenn ja, wie? Wie kann ich die URL übergeben?

TIA

Margin-Auto

Query String zu parsen hat einen ähnlichen Schritt wie CGI Input zu parsen.

Hier nur ein Ausschnitt aus dem Fussmarsch.

#!C:/Programme/Perl/bin/perl.exe -w  
#  
#use strict;  
  
BEGIN {  
 use CGI::Carp qw(carpout);  
 open(LOG, ">>error.txt")  or  die "Unable to append to error.txt: $!\n";  
 carpout(*LOG);  
}  
  
  
# eine test url  
my $url="http:www.example.org/some/path/to.file?par1=A&par1=B&par2=C";  
  
my $query = '';  
  
$url =~ /\?(.*?)(?:#|$)/ and $query = $1;  
  
# wir brauchen einen hash, in welchem wir Daten sammeln:  
my %Input = ();  
  
# $query soll gesplittet werden  
  
foreach( split /[&;]/, $query ){  
   my ($par, $val) = (split /=/, $_, 2);  
   for($val){  
      tr/+/ /;  
      s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;  
      s/\0//g;  # enferne \0  
      s/\cM//g; # entferne \r  
   }  
  
   # Jetzt wird es knifflig:  
   # Der Simpel würde sagen:  
#   $Input{$par} = $val;  
   # was jedoch die Üertragung gleichnamiger Checkboxen verunmöglicht.  
   # statt dessen bauen wir einen Hash_of_Arrays  
   # wir müssen erst testen ob der key existiert,  
   unless( exists $Input{$par} ){  
     #um einen neuen anonymen Array zu erzeugen  
     $Input{$par} = [];  
   }  
   # an welchen wir nun $val pushen  
   push @{ $Input{$par} }, $val;  
   # zugegebenermassen, eine etwas heavy Syntax.  
   # und immer noch Quick-and-Dirty  
}  
  
# Access:  
print $Input{par1}[0], "\n";  
print $Input{par1}[1], "\n";  
print $Input{par2}[0], "\n";  
print "\nAll Input Is Evil\n";  
  
sleep(10);  
  

mfg Beat;

--
Woran ich arbeite:
X-Torah
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o