diff --git a/src/pl/plperl/SPI.xs b/src/pl/plperl/SPI.xs
index 8d14f093b72dbbfdc912c65e4aeb9c442a96cf40..9d3dc39c75b6d6c496ae717f627592f78577e381 100644
--- a/src/pl/plperl/SPI.xs
+++ b/src/pl/plperl/SPI.xs
@@ -4,12 +4,7 @@
 #undef _
 
 /* perl stuff */
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include "ppport.h"
-
-#include "spi_internal.h"
+#include "plperl.h"
 
 
 /*
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index d0a7988837737d7529aa5ee3e0397db6f24c507d..4375eb0674429857da973c5501f97399f6233876 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -33,7 +33,7 @@
  *	  ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.98 2005/12/29 14:28:31 adunstan Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.99 2006/01/08 22:27:52 adunstan Exp $
  *
  **********************************************************************/
 
@@ -60,18 +60,7 @@
 extern DLLIMPORT bool check_function_bodies;
 
 /* perl stuff */
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include "ppport.h"
-#include "spi_internal.h"
-
-/* just in case these symbols aren't provided */
-#ifndef pTHX_
-#define pTHX_
-#define pTHX void
-#endif
-
+#include "plperl.h"
 
 /**********************************************************************
  * The information we cache about loaded procedures
diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h
new file mode 100644
index 0000000000000000000000000000000000000000..c88186588c546a6fb857b9d42d00d2fdb8288a18
--- /dev/null
+++ b/src/pl/plperl/plperl.h
@@ -0,0 +1,49 @@
+/*-------------------------------------------------------------------------
+ *
+ * plperl.h
+ *    Common include file for PL/Perl files
+ *
+ * This should be included _AFTER_ postgres.h and system include files
+ *
+ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1995, Regents of the University of California
+ *
+ * $PostgreSQL: pgsql/src/pl/plperl/plperl.h,v 1.1 2006/01/08 22:27:52 adunstan Exp $
+ */
+
+#ifndef PL_PERL_H
+#define PL_PERL_H
+
+/* stop perl headers from hijacking stdio and other stuff on Windows */
+#ifdef WIN32
+#define WIN32IO_IS_STDIO
+#endif 
+
+/* required for perl API */
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include "ppport.h"
+
+/* just in case these symbols aren't provided */
+#ifndef pTHX_
+#define pTHX_
+#define pTHX void
+#endif
+
+/* routines from spi_internal.c */
+int			spi_DEBUG(void);
+int			spi_LOG(void);
+int			spi_INFO(void);
+int			spi_NOTICE(void);
+int			spi_WARNING(void);
+int			spi_ERROR(void);
+
+/* routines from plperl.c */
+HV		   *plperl_spi_exec(char *, int);
+void		plperl_return_next(SV *);
+SV		   *plperl_spi_query(char *);
+SV		   *plperl_spi_fetchrow(char *);
+
+
+#endif /* PL_PERL_H */
diff --git a/src/pl/plperl/spi_internal.c b/src/pl/plperl/spi_internal.c
index c022d7d9e57e28af08a3281b70febd4b63b63525..7ca771da837cf6c0381f7183cfc47926a5693db4 100644
--- a/src/pl/plperl/spi_internal.c
+++ b/src/pl/plperl/spi_internal.c
@@ -8,8 +8,8 @@
 /* Defined by Perl */
 #undef _
 
-#include "spi_internal.h"
-
+/* perl stuff */
+#include "plperl.h"
 
 int
 spi_DEBUG(void)
diff --git a/src/pl/plperl/spi_internal.h b/src/pl/plperl/spi_internal.h
deleted file mode 100644
index 4d2c407ee169743ac034a7a90d8d758cbe991388..0000000000000000000000000000000000000000
--- a/src/pl/plperl/spi_internal.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include "ppport.h"
-
-int			spi_DEBUG(void);
-
-int			spi_LOG(void);
-
-int			spi_INFO(void);
-
-int			spi_NOTICE(void);
-
-int			spi_WARNING(void);
-
-int			spi_ERROR(void);
-
-/* this is actually in plperl.c */
-HV		   *plperl_spi_exec(char *, int);
-void		plperl_return_next(SV *);
-SV		   *plperl_spi_query(char *);
-SV		   *plperl_spi_fetchrow(char *);