v3.00 release
[perl/plp/.git] / PLP / Functions.pm
similarity index 72%
rename from plpfunc.pm
rename to PLP/Functions.pm
index 6d780664e817687da8bca990524e3741fe395240..9d7b33c1c5d3a1a229e50dd1aa08e8d234dbb359 100644 (file)
@@ -1,32 +1,43 @@
-#!/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
+#-------------------------#
+  package PLP::Functions;
+#-------------------------#
+use base 'Exporter';
+use strict;
 
-#use URI::Escape;
+our @EXPORT = qw/HiddenFields Entity DecodeURI EncodeURI Entity include
+                 AddCookie ReadFile WriteFile AutoURL Counter Include/;
 
-use strict;
-use vars qw(%header);
+sub Include ($) {
+    my ($file) = $_[0];
+    $PLP::inA = 0;
+    $PLP::inB = 0;
+    eval PLP::source($file, 0);
+}
+
+sub include ($) {
+    goto &Include;
+}
 
-sub HiddenFields($@){
+sub HiddenFields ($@) {
     my $hash = shift;
     my %saves;
     @saves{@_} = ();
-    for (keys %$hash){
+    for (keys %$hash) {
        print qq{<input type=hidden name="$_" value="$hash->{$_}">}
            unless exists $saves{$_};
     }
 }
 
-sub Entity(@){
+sub Entity (@) {
     my $ref;
     my @copy;    
-    if (defined wantarray){
+    if (defined wantarray) {
        @copy = @_;
        $ref = \@copy;
-    }else{
+    } else {
        $ref = \@_;
     }
-    for (@$ref){
+    for (@$ref) {
        eval {
            s/&/&amp;/g;
            s/\"/&quot;/g;
@@ -43,36 +54,36 @@ sub Entity(@){
 
 # Browsers do s/ /+/ - I don't care about RFC's, but I do care about real-life
 # situations.
-sub DecodeURI(@){
+sub DecodeURI (@) {
     my @r;
     local $_;    
-    for (@_){
+    for (@_) {
        s/\+/%20/g;
        my $dec = $_;
        $dec =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/chr hex $1/ge;
-       if (defined wantarray){
+       if (defined wantarray) {
            push @r, $dec;
-       }else{
+       } else {
            eval {$_ = $dec}; 
 #          return undef if $@; # ;DecodeURI("foo");
        }
     }
     return defined wantarray ? (wantarray ? @r : "@r") : undef;
 }
-sub EncodeURI(@){
+sub EncodeURI (@) {
     my @r;
     local $_;
-    for (@_){
+    for (@_) {
         my $esc = $_;
        $esc =~ 
            s{
-               ([^;\/?:@&=\$,A-Za-z0-9\-_.!~*\'()])
+               ([^\/?:@\$,A-Za-z0-9\-_.!~*\'()])
            }{
                sprintf("%%%02x", ord($1))
            }xge;
-        if (defined wantarray){
+        if (defined wantarray) {
             push @r, $esc;
-        }else{
+        } else {
            eval {$_ = $esc};
 #          return undef if $@; # ;EncodeURI("foo");
        }
@@ -80,32 +91,32 @@ sub EncodeURI(@){
     return defined wantarray ? (wantarray ? @r : "@r") : undef;
 }
 
-sub AddCookie($){
-    if ($header{'Set-Cookie'}){
-       $header{'Set-Cookie'} .= "\nSet-Cookie: $_[0]";
-    }else{
-       $header{'Set-Cookie'} = $_[0];
+sub AddCookie ($) {
+    if ($PLP::Script::header{'Set-Cookie'}) {
+       $PLP::Script::header{'Set-Cookie'} .= "\nSet-Cookie: $_[0]";
+    } else {
+       $PLP::Script::header{'Set-Cookie'} = $_[0];
     }
 }
 
-sub ReadFile($){
+sub ReadFile ($) {
     local *READFILE;
     local $/ = undef;
-    open (READFILE, "<$_[0]");
+    open (READFILE, '<', $_[0]);
     my $r = <READFILE>;
     close READFILE;
     return $r;
 }
 
-sub WriteFile($$){
+sub WriteFile ($$) {
     local *WRITEFILE;
-    open (WRITEFILE, ">$_[0]");
+    open (WRITEFILE, '>', $_[0]);
     flock WRITEFILE, 2;
     print WRITEFILE $_[1];
     close WRITEFILE;
 }
 
-sub Counter($){
+sub Counter ($) {
     local *COUNTER;
     local $/ = undef;
     open           COUNTER, "+<$_[0]" or
@@ -120,7 +131,7 @@ sub Counter($){
     return $counter;
 }
 
-sub AutoURL($){
+sub AutoURL ($) {
     # This sub assumes your string does not match /(["<>])\cC\1/
     my $ref;    
     if (defined wantarray){
@@ -151,4 +162,6 @@ sub AutoURL($){
     if ($@){ return defined wantarray ? @_ : undef }
     return defined wantarray ? $$ref : undef;
 }
+
+
 1;