X-Git-Url: http://git.shiar.net/gitweb.cgi/perl/plp/.git/blobdiff_plain/720e78a4f8351eedac26b196aa9f3922fd5bd0ee..b7a10718f1c1e5d0028cd367c337e9f85dc56618:/plpfunc.pm diff --git a/plpfunc.pm b/plpfunc.pm index a113c76..6d78066 100644 --- a/plpfunc.pm +++ b/plpfunc.pm @@ -1,14 +1,16 @@ #!/usr/bin/perl # The shebang is only there for mcedit syntax highlights, as I'm too lazy to # change the configfile. It won't hurt performance -use URI::Escape; + +#use URI::Escape; + use strict; use vars qw(%header); sub HiddenFields($@){ my $hash = shift; my %saves; - $saves{@_} = (); + @saves{@_} = (); for (keys %$hash){ print qq{} unless exists $saves{$_}; @@ -34,7 +36,7 @@ sub Entity(@){ s/\t/        /g; s/ /  /g; }; - if ($@){ return defined wantarray ? @_ : undef } +# if ($@){ return defined wantarray ? @_ : undef } } return defined wantarray ? (wantarray ? @$ref : "@$ref") : undef; } @@ -42,51 +44,61 @@ sub Entity(@){ # Browsers do s/ /+/ - I don't care about RFC's, but I do care about real-life # situations. sub DecodeURI(@){ - my @r; + my @r; + local $_; for (@_){ s/\+/%20/g; - my $dec = uri_unescape($_); + my $dec = $_; + $dec =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/chr hex $1/ge; if (defined wantarray){ push @r, $dec; }else{ eval {$_ = $dec}; - return undef if $@; # ;DecodeURI("foo"); +# return undef if $@; # ;DecodeURI("foo"); } } return defined wantarray ? (wantarray ? @r : "@r") : undef; } sub EncodeURI(@){ my @r; + local $_; for (@_){ - my $esc = uri_escape($_, '^;\/?:@&=\$,A-Za-z0-9\-_.!~*\'()'); + my $esc = $_; + $esc =~ + s{ + ([^;\/?:@&=\$,A-Za-z0-9\-_.!~*\'()]) + }{ + sprintf("%%%02x", ord($1)) + }xge; if (defined wantarray){ push @r, $esc; }else{ eval {$_ = $esc}; - return undef if $@; # ;EncodeURI("foo"); +# return undef if $@; # ;EncodeURI("foo"); } } return defined wantarray ? (wantarray ? @r : "@r") : undef; } sub AddCookie($){ - if ($header{'set-cookie'}){ - $header{'set-cookie'} .= "\nset-cookie: $_[0]"; + if ($header{'Set-Cookie'}){ + $header{'Set-Cookie'} .= "\nSet-Cookie: $_[0]"; }else{ - $header{'set-cookie'} = $_[0]; + $header{'Set-Cookie'} = $_[0]; } } sub ReadFile($){ - my $o = $/; undef $/; - open (READFILE, $_[0]); + local *READFILE; + local $/ = undef; + open (READFILE, "<$_[0]"); my $r = ; close READFILE; - $/ = $o; return $r; } sub WriteFile($$){ + local *WRITEFILE; open (WRITEFILE, ">$_[0]"); flock WRITEFILE, 2; print WRITEFILE $_[1]; @@ -94,8 +106,10 @@ sub WriteFile($$){ } sub Counter($){ - my $o = $/; undef $/; - open COUNTER, "+<$_[0]"; + local *COUNTER; + local $/ = undef; + open COUNTER, "+<$_[0]" or + open COUNTER, ">$_[0]" or return undef; flock COUNTER, 2; seek COUNTER, 0, 0; my $counter = ; @@ -103,7 +117,6 @@ sub Counter($){ truncate COUNTER, 0; print COUNTER ++$counter; close COUNTER; - $/ = $o; return $counter; } @@ -138,4 +151,4 @@ sub AutoURL($){ if ($@){ return defined wantarray ? @_ : undef } return defined wantarray ? $$ref : undef; } -1; \ No newline at end of file +1;