diff --git a/pkgs/atk/atk-build.sh b/pkgs/atk/atk-build.sh
index 4092fe4e1b9e..feae8e8916a5 100755
--- a/pkgs/atk/atk-build.sh
+++ b/pkgs/atk/atk-build.sh
@@ -2,7 +2,7 @@
 
 envpkgs=$glib
 . $stdenv/setup || exit 1
-export PATH=$pkgconfig/bin:$PATH
+export PATH=$pkgconfig/bin:$perl/bin:$PATH
 
 tar xvfj $src || exit 1
 cd atk-* || exit 1
diff --git a/pkgs/atk/atk.fix b/pkgs/atk/atk.fix
index 8113d81bd38f..7954e69cc1ec 100644
--- a/pkgs/atk/atk.fix
+++ b/pkgs/atk/atk.fix
@@ -11,5 +11,6 @@ Package(
   , ("stdenv", IncludeFix("stdenv/stdenv.fix"))
   , ("pkgconfig", IncludeFix("pkgconfig/pkgconfig.fix"))
   , ("glib", IncludeFix("glib/glib.fix"))
+  , ("perl", IncludeFix("perl/perl.fix"))
   ]
 )
diff --git a/pkgs/glib/glib-build.sh b/pkgs/glib/glib-build.sh
index b1df2d3700e0..54e70b73434f 100755
--- a/pkgs/glib/glib-build.sh
+++ b/pkgs/glib/glib-build.sh
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 . $stdenv/setup || exit 1
-export PATH=$pkgconfig/bin:$gettext/bin:$PATH
+export PATH=$pkgconfig/bin:$gettext/bin:$perl/bin:$PATH
 
 tar xvfj $src || exit 1
 cd glib-* || exit 1
diff --git a/pkgs/glib/glib.fix b/pkgs/glib/glib.fix
index bb32927099b6..8daeeb0ec683 100644
--- a/pkgs/glib/glib.fix
+++ b/pkgs/glib/glib.fix
@@ -11,5 +11,6 @@ Package(
   , ("stdenv", IncludeFix("stdenv/stdenv.fix"))
   , ("pkgconfig", IncludeFix("pkgconfig/pkgconfig.fix"))
   , ("gettext", IncludeFix("gettext/gettext.fix"))
+  , ("perl", IncludeFix("perl/perl.fix"))
   ]
 )
diff --git a/pkgs/perl/perl-build.sh b/pkgs/perl/perl-build.sh
new file mode 100755
index 000000000000..c0f13934450b
--- /dev/null
+++ b/pkgs/perl/perl-build.sh
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+. $stdenv/setup || exit 1
+
+tar xvfz $src || exit 1
+cd perl-* || exit 1
+
+# Perl's Configure messes with PATH.  We can't have that, so we patch it.
+# Yeah, this is an ugly hack.
+grep -v '^paths=' Configure > Configure.tmp || exit 1
+mv Configure.tmp Configure || exit 1
+chmod +x Configure || exit 1
+
+./Configure -de -Dcc=gcc -Dprefix=$out -Uinstallusrbinperl || exit 1
+make || exit 1
+make install || exit 1
diff --git a/pkgs/perl/perl.fix b/pkgs/perl/perl.fix
new file mode 100644
index 000000000000..e8edaf214618
--- /dev/null
+++ b/pkgs/perl/perl.fix
@@ -0,0 +1,13 @@
+Package(
+  [ ("name", "perl-5.8.0")
+
+  , ("build", Relative("perl/perl-build.sh"))
+
+  , ("src", Call(IncludeFix("fetchurl/fetchurl.fix"),
+      [ ("url", "http://www.perl.com/CPAN/src/5.0/perl-5.8.0.tar.gz")
+      , ("md5", "d9bdb180620306023fd35901a2878b62")
+      ]))
+
+  , ("stdenv", IncludeFix("stdenv/stdenv.fix"))
+  ]
+)