diff --git a/src/include/port/win32.h b/src/include/port/win32.h
index d3ca1f20d8b05fdcc64427c71115b18f8f4f08ec..8f4e00e2adca99e64cba9c4c9a44b120ab20c91a 100644
--- a/src/include/port/win32.h
+++ b/src/include/port/win32.h
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.37 2004/10/06 09:35:23 momjian Exp $ */
+/* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.38 2004/10/06 16:36:02 momjian Exp $ */
 
 /* undefine and redefine after #include */
 #undef mkdir
@@ -194,9 +194,17 @@ int			setitimer(int which, const struct itimerval * value, struct itimerval * ov
 
 /*
  * Supplement to <sys/types.h>.
+ *
+ * Perl already has conflicting defines for uid_t and gid_t.
  */
+#ifndef PLPERL_HAVE_UID_GID
 typedef int uid_t;
 typedef int gid_t;
+#else
+/* These are redefined by perl. */
+#define int uid_t;
+#define int gid_t;
+#endif
 typedef long key_t;
 
 /*
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index c517ca0c3c76f70aec07810b4dc6f96666352ff7..3d81d6095b820cd12b157205b14a8b0d44486723 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -33,10 +33,11 @@
  *	  ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.51 2004/09/13 20:08:59 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.52 2004/10/06 16:36:02 momjian Exp $
  *
  **********************************************************************/
 
+#define PLPERL_HAVE_UID_GID
 #include "postgres.h"
 
 /* system stuff */