diff --git a/main/perl-encode/APKBUILD b/main/perl-encode/APKBUILD
index 63b4b8c1047d8bac24ef6b9396427c397273fc4c..93f0ba3496d0184e5203dff2a98d4ad59c21e79e 100644
--- a/main/perl-encode/APKBUILD
+++ b/main/perl-encode/APKBUILD
@@ -3,7 +3,7 @@
 # Maintainer: Natanael Copa <ncopa@alpinelinux.org>
 pkgname=perl-encode
 _pkgreal=Encode
-pkgver=2.86
+pkgver=2.88
 pkgrel=0
 pkgdesc="character encodings in Perl"
 url="http://search.cpan.org/dist/Encode/"
@@ -12,38 +12,61 @@ license="GPL PerlArtistic"
 cpandepends=""
 cpanmakedepends="   "
 depends="$cpandepends"
+depends_dev="$pkgname-utils"
 makedepends="perl-dev $cpanmakedepends"
-subpackages="$pkgname-doc $pkgname-piconv"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-utils::noarch"
 source="http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/$_pkgreal-$pkgver.tar.gz"
-
-_builddir="$srcdir/$_pkgreal-$pkgver"
+builddir="$srcdir/$_pkgreal-$pkgver"
 
 prepare() {
-	cd "$_builddir"
+	cd "$builddir"
 	export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
 	PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
 }
 
 build() {
-	cd "$_builddir"
+	cd "$builddir"
 	export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
 	make && make test
 }
 
 package() {
-	cd "$_builddir"
+	cd "$builddir"
 	make DESTDIR="$pkgdir" install || return 1
 	find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
 }
 
-# we split out /usr/bin/piconv to separate package to avoid conflict with
-# piconv shipped with perl itself
-piconv() {
-	pkgdesc="perl implementation of iconv"
+utils() {
+	replaces="perl"
+	pkgdesc="$pkgdesc (utilities)"
+	depends="$pkgname perl"
+	provides="$pkgname-piconv"
+	mkdir -p "$subpkgdir"/usr
+	mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+dev() {
+	default_dev
+	replaces="perl-dev"
 	mkdir -p "$subpkgdir"/usr/bin
-	mv "$pkgdir"/usr/bin/piconv "$subpkgdir"/usr/bin/
+	mv "$pkgdir"/usr/bin/enc2xs "$subpkgdir"/usr/bin || return 1
+	local file; for file in $(find "$pkgdir" -name "*.e2x"); do
+		file=${file#$pkgdir/}
+		mkdir -p "$subpkgdir"/${file%/*} || return 1
+		mv "$pkgdir"/$file "$subpkgdir"/$file || return 1
+	done
+}
+
+doc() {
+	default_doc
+	replaces="perl-doc"
+	local file; for file in $(find "$pkgdir" -name "*.pod"); do
+		file=${file#$pkgdir/}
+		mkdir -p "$subpkgdir"/${file%/*} || return 1
+		mv "$pkgdir"/$file "$subpkgdir"/$file || return 1
+	done
 }
 
-md5sums="ebb87962b8cbaf0097721d0b7f1becfc  Encode-2.86.tar.gz"
-sha256sums="dfdb3dc709ce29a366eb162297378cbc8a1ae6720df3aba2ef0bae38478dfb2a  Encode-2.86.tar.gz"
-sha512sums="fa5feeb8f7b555c91322948cd526762fbdca6ef240b640800e7af0dcf75cffca48f8877a1a7b876798b8441de8a0075aeb50ea4769f52b1d180f68316c84d599  Encode-2.86.tar.gz"
+md5sums="119e8668e1d7b128ce39375445526a7e  Encode-2.88.tar.gz"
+sha256sums="e45ce444dfc87b01a16d3029d9a027beab1fdeff9860699b4b62a141420be338  Encode-2.88.tar.gz"
+sha512sums="1261415abd9c2ad5f8d009441e1f2f541d7e94c570549d3b895df57d5c7480087ec646b2691724007a5797238cb7249347d9b97b7c46018973a7ef33274fe162  Encode-2.88.tar.gz"