diff --git a/compiler/cpp/src/thrift/generate/t_perl_generator.cc b/compiler/cpp/src/thrift/generate/t_perl_generator.cc
index 12b8bfc..0bdbb05 100644
--- a/compiler/cpp/src/thrift/generate/t_perl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_perl_generator.cc
@@ -356,6 +356,7 @@
   } else if (type->is_struct() || type->is_xception()) {
     out << "new " << perl_namespace(type->get_program()) << type->get_name() << "({" << endl;
     indent_up();
+
     const vector<t_field*>& fields = ((t_struct*)type)->get_members();
     vector<t_field*>::const_iterator f_iter;
     const map<t_const_value*, t_const_value*>& val = value->get_map();
@@ -370,29 +371,30 @@
       if (field_type == NULL) {
         throw "type error: " + type->get_name() + " has no field " + v_iter->first->get_string();
       }
-      out << render_const_value(g_type_string, v_iter->first);
+      indent(out) << render_const_value(g_type_string, v_iter->first);
       out << " => ";
       out << render_const_value(field_type, v_iter->second);
       out << ",";
       out << endl;
     }
-
-    out << "})";
+    indent_down();
+    indent(out) << "})";
   } else if (type->is_map()) {
     t_type* ktype = ((t_map*)type)->get_key_type();
     t_type* vtype = ((t_map*)type)->get_val_type();
     out << "{" << endl;
+    indent_up();
 
     const map<t_const_value*, t_const_value*>& val = value->get_map();
     map<t_const_value*, t_const_value*>::const_iterator v_iter;
     for (v_iter = val.begin(); v_iter != val.end(); ++v_iter) {
-      out << render_const_value(ktype, v_iter->first);
+      indent(out) << render_const_value(ktype, v_iter->first);
       out << " => ";
       out << render_const_value(vtype, v_iter->second);
       out << "," << endl;
     }
-
-    out << "}";
+    indent_down();
+    indent(out) << "}";
   } else if (type->is_list() || type->is_set()) {
     t_type* etype;
     if (type->is_list()) {
@@ -401,17 +403,20 @@
       etype = ((t_set*)type)->get_elem_type();
     }
     out << "[" << endl;
+    indent_up();
+
     const vector<t_const_value*>& val = value->get_list();
     vector<t_const_value*>::const_iterator v_iter;
     for (v_iter = val.begin(); v_iter != val.end(); ++v_iter) {
 
-      out << render_const_value(etype, *v_iter);
+      indent(out) << render_const_value(etype, *v_iter);
       if (type->is_set()) {
         out << " => 1";
       }
       out << "," << endl;
     }
-    out << "]";
+    indent_down();
+    indent(out) << "]";
   }
   return out.str();
 }
