diff --git a/openwrt/package/Config.in b/openwrt/package/Config.in
index e5460a23b41f0bd5b8168b1ee4d4151f83a36dc1..c827262dda412d7b381f7ba6054dab46bf240cde 100644
--- a/openwrt/package/Config.in
+++ b/openwrt/package/Config.in
@@ -8,6 +8,9 @@ source "package/dnsmasq/Config.in"
 source "package/iptables/Config.in"
 source "package/bridge/Config.in"
 
+comment "Applications"
+source "package/microperl/Config.in"
+
 comment "Networking"
 source "package/ppp/Config.in"
 source "package/dropbear/Config.in"
diff --git a/openwrt/package/Makefile b/openwrt/package/Makefile
index afdf6af924172ce807d965adc698b47637b88c02..eb0fe47246ca7e7a8ccb42e7d6e6c2f35d771a6c 100644
--- a/openwrt/package/Makefile
+++ b/openwrt/package/Makefile
@@ -18,6 +18,7 @@ package-$(BR2_PACKAGE_OPENVPN) += openvpn
 package-$(BR2_PACKAGE_POPT) += popt
 package-$(BR2_PACKAGE_PPTPD) += pptpd
 package-$(BR2_PACKAGE_IPROUTE2) += iproute2
+package-$(BR2_PACKAGE_MICROPERL) += microperl
 
 all: compile install
 clean: $(patsubst %,%-clean,$(package-) $(package-y) $(package-m)) linux-clean
diff --git a/openwrt/package/microperl/Config.in b/openwrt/package/microperl/Config.in
new file mode 100644
index 0000000000000000000000000000000000000000..a813e1f58fa6e10847af28d32f19ba674f443c0b
--- /dev/null
+++ b/openwrt/package/microperl/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_MICROPERL
+	tristate "microperl"
+	default m
+	help
+	  Perl without operating-specific functions such as readdir.
diff --git a/openwrt/package/microperl/Makefile b/openwrt/package/microperl/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..ca6368ef5dc1d6b3e430eb96f58d8a6a563203e0
--- /dev/null
+++ b/openwrt/package/microperl/Makefile
@@ -0,0 +1,42 @@
+#############################################################
+#
+# ebtables
+#
+#############################################################
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=microperl
+PKG_VERSION:=5.8.6
+PKG_RELEASE:=1
+PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0
+PKG_SOURCE:=perl-$(PKG_VERSION).tar.gz
+PKG_BUILD_DIR:=$(BUILD_DIR)/perl-$(PKG_VERSION)
+PKG_CAT:=zcat
+PKG_IPK:=$(PACKAGE_DIR)/$(PKG_NAME)_$(PKG_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk
+PKG_IPK_DIR:=$(PKG_BUILD_DIR)/ipkg
+
+$(DL_DIR)/$(PKG_SOURCE):
+	 $(WGET) -P $(DL_DIR) $(PKG_SOURCE_URL)/$(PKG_SOURCE)
+
+$(PKG_BUILD_DIR)/.unpacked: $(DL_DIR)/$(PKG_SOURCE)
+	$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+	touch $(PKG_BUILD_DIR)/.unpacked
+
+$(PKG_BUILD_DIR)/$(PKG_NAME): $(PKG_BUILD_DIR)/.unpacked
+	$(MAKE) -f Makefile.micro CC="$(TARGET_CC)" OPTIMIZE="$(TARGET_CFLAGS)" -C $(PKG_BUILD_DIR)
+
+$(PKG_IPK): $(PKG_BUILD_DIR)/$(PKG_NAME)
+	$(SCRIPT_DIR)/make-ipkg-dir.sh $(PKG_IPK_DIR) $(PKG_NAME).control $(PKG_VERSION)-$(PKG_RELEASE) $(ARCH)
+	mkdir -p $(PKG_IPK_DIR)/usr/bin
+	cp $(PKG_BUILD_DIR)/$(PKG_NAME) $(PKG_IPK_DIR)/usr/bin/
+	$(STRIP) $(PKG_IPK_DIR)/usr/bin/*
+	mkdir -p $(PACKAGE_DIR)
+	$(IPKG_BUILD) $(PKG_IPK_DIR) $(PACKAGE_DIR)
+
+source: $(DL_DIR)/$(PKG_SOURCE)
+prepare: $(PKG_BUILD_DIR)/.unpacked
+compile: $(PKG_IPK)
+install:
+	$(IPKG) install $(PKG_IPK)
+clean:
+	rm -rf $(PKG_BUILD_DIR)
diff --git a/openwrt/package/microperl/microperl.control b/openwrt/package/microperl/microperl.control
new file mode 100644
index 0000000000000000000000000000000000000000..4aefc693c7c6ae22a439661d7b840c486403981f
--- /dev/null
+++ b/openwrt/package/microperl/microperl.control
@@ -0,0 +1,8 @@
+Package: microperl
+Priority: optional
+Section: net
+Version: 5.8.6
+Architecture: mipsel
+Maintainer: Felix Fietkau <nbd@vd-s.ath.cx>
+Source: buildroot internal
+Description: Perl without operating-specific functions such as readdir.