Index: trunk/zoo-kernel/zoo_service_loader.c
===================================================================
--- trunk/zoo-kernel/zoo_service_loader.c	(revision 23)
+++ trunk/zoo-kernel/zoo_service_loader.c	(revision 25)
@@ -57,4 +57,9 @@
 #include "service_internal_js.h"
 #endif
+
+#ifdef USE_PERL
+#include "service_internal_perl.h"
+#endif
+
 
 
@@ -173,4 +178,6 @@
     freeMaps(&m);
     free(m);
+    freeMap(&request_inputs);
+    free(request_inputs);
     return 1;
   }
@@ -183,4 +190,6 @@
       freeMaps(&m);
       free(m);
+      freeMap(&request_inputs);
+      free(request_inputs);
       free(REQUEST);
       return 1;
@@ -752,10 +761,7 @@
 #endif
 	xmlNodePtr cur2=cur->children;
-	while(cur2!=NULL){
-	  while(cur2!=NULL && cur2->type!=XML_ELEMENT_NODE)
+	while(cur2){
+	  while(cur2->type!=XML_ELEMENT_NODE)
 	    cur2=cur2->next;
-	  if(cur2==NULL)
-	    break;
-	  
 	  /**
 	   * Indentifier
@@ -1014,11 +1020,7 @@
 #endif
 	    xmlNodePtr cur4=cur2->children;
-	    while(cur4!=NULL){
-	      while(cur4!=NULL && cur4->type!=XML_ELEMENT_NODE)
+	    while(cur4){
+	      while(cur4->type!=XML_ELEMENT_NODE)
 		cur4=cur4->next;
-
-	      if(cur4==NULL){
-		break;
-	      }
 
 	      if(xmlStrcasecmp(cur4->name, BAD_CAST "LiteralData")==0){
@@ -1097,8 +1099,10 @@
 	dumpMaps(request_input_real_format);
 #endif
-	freeMaps(&tmpmaps);
-	free(tmpmaps);
-	tmpmaps=NULL;
+	tmpmaps=tmpmaps->next;
+	      
       }
+#ifdef DEBUG
+      dumpMaps(tmpmaps); 
+#endif
     }
 #ifdef DEBUG
@@ -1598,5 +1602,13 @@
 	  else
 #endif
-	  
+
+
+#ifdef USE_PERL
+          if(strncasecmp(r_inputs->value,"PERL",4)==0){
+            eres=zoo_perl_support(&m,request_inputs,s1,&request_input_real_format,&request_output_real_format);
+          }
+          else
+#endif
+
 #ifdef USE_JS
 	    if(strncasecmp(r_inputs->value,"JS",2)==0){
@@ -1811,4 +1823,10 @@
 #endif
 	      
+#ifdef USE_PERL
+          if(strncasecmp(r_inputs->value,"PERL",4)==0){
+            eres=zoo_perl_support(&m,request_inputs,s1,&request_input_real_format,&request_output_real_format);
+          }
+          else
+#endif
 #ifdef USE_JS
 	      if(strncasecmp(r_inputs->value,"JS",2)==0){
@@ -1846,15 +1864,22 @@
 		   cpid,m,eres);
 
+  //if(getpid()==cpid){
   freeService(&s1);
   free(s1);
   freeMaps(&m);
   free(m);
+  freeMaps(&tmpmaps);
+  free(tmpmaps);
   
   freeMaps(&request_input_real_format);
   free(request_input_real_format);
-
+  
+  //freeMap(&request_inputs);
+  //free(request_inputs);
+    
   /* The following is requested but get issue using with Python support :/ */
-  /*freeMaps(&request_output_real_format);
-  free(request_output_real_format);*/
+  /* freeMaps(&request_output_real_format);
+     free(request_output_real_format);
+  */
   
   free(REQUEST);
@@ -1865,4 +1890,5 @@
   fflush(stderr);
 #endif
+    //}
 
   return 0;
