gnu: libdvdcss: Update to 1.4.3.
[jackhill/guix/guix.git] / gnu / packages / perl.scm
index b98bc54..559e6ad 100644 (file)
@@ -1,12 +1,12 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2013, 2019 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2013, 2019, 2020, 2021 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015, 2016, 2017, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017, 2019, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2016, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Nikita <nikita@n0.is>
 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
 ;;; Copyright © 2016, 2018, 2020 Roel Janssen <roel@gnu.org>
@@ -15,7 +15,7 @@
 ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
-;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
@@ -26,6 +26,9 @@
 ;;; Copyright © 2019 Stephen J. Scheck <sscheck@cpan.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
+;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,7 +47,7 @@
 
 (define-module (gnu packages perl)
   #:use-module (srfi srfi-1)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gd)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages hurd)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages less)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages perl-compression)
+  #:use-module (gnu packages perl-maths)
   #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages sdl)
   #:use-module (gnu packages textutils)
-  #:use-module (gnu packages web))
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xorg))
 
 ;;;
 ;;; Please: Try to add new module packages in alphabetic order.
@@ -255,20 +266,19 @@ text manipulation and now used for a wide range of tasks including system
 administration, web development, network programming, GUI development, and
 more.")
     (home-page "https://www.perl.org/")
-    (license gpl1+)))                          ; or "Artistic"
+    (license license:gpl1+)))                          ; or "Artistic"
 
 (define-public perl-algorithm-c3
   (package
     (name "perl-algorithm-c3")
-    (version "0.10")
+    (version "0.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Algorithm-C3-" version ".tar.gz"))
        (sha256
-        (base32
-         "01hlcaxndls86bl92rkd3fvf9pfa3inxqaimv88bxs95803kmkss"))))
+        (base32 "02ck52cf0yyk57354rd1rp5l0kbfwi1pvg2lh3jadvjxfrkq9x5a"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Algorithm-C3")
     (synopsis "Module for merging hierarchies using the C3 algorithm")
@@ -320,6 +330,63 @@ explicitly alias the class to another name or, if you prefer, you can do so
 implicitly.")
     (license (package-license perl))))
 
+(define-public perl-alien-sdl
+  (package
+    (name "perl-alien-sdl")
+    (version "1.446")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FR/FROGGS/"
+                           "Alien-SDL-" version ".tar.gz"))
+       (sha256
+        (base32 "0ajipk43syhlmw0zinbj1i6r46vdlkr06wkx7ivqjgf6qffjran9"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:module-build-flags
+       ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
+       ;; directory, not SDL-union provided as an input to the
+       ;; package.  We force the latter with "--prefix=" option.
+       (list (let ((sdl (assoc-ref %build-inputs "sdl")))
+               (string-append "--with-sdl-config=" sdl "/bin/sdl-config"
+                              " --prefix=" sdl)))
+       #:phases
+       (modify-phases %standard-phases
+         ;; Fix "unrecognized option: --with-sdl-config" during build.
+         ;; Reported upstream as
+         ;; <https://github.com/PerlGameDev/SDL/issues/261>.  See also
+         ;; <https://github.com/PerlGameDev/SDL/issues/272>.
+         (add-after 'unpack 'fix-build.pl
+           (lambda _
+             (substitute* "Build.PL"
+               (("use Getopt::Long;") "")
+               (("GetOptions\\( \"travis\" => \\\\\\$travis \\);") ""))
+             #t)))))
+    (native-inputs
+     `(("perl-archive-extract" ,perl-archive-extract)
+       ("perl-archive-zip" ,perl-archive-zip)
+       ("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-file-sharedir" ,perl-file-sharedir)
+       ("perl-file-which" ,perl-file-which)
+       ("perl-module-build" ,perl-module-build)
+       ("perl-text-patch" ,perl-text-patch)))
+    (inputs
+     `(("freetype" ,freetype)
+       ("fontconfig" ,fontconfig)
+       ("pango" ,pango)
+       ("sdl" ,(sdl-union
+                (list sdl sdl-gfx sdl-image sdl-mixer sdl-net sdl-ttf
+                      sdl-pango)))
+       ("zlib" ,zlib)))
+    (home-page "https://metacpan.org/release/Alien-SDL")
+    (synopsis "Get, build and use SDL libraries")
+    (description
+     "Alien::SDL can be used to detect and get configuration settings from an
+installed SDL and related libraries.  Based on your platform it offers the
+possibility to download and install prebuilt binaries or to build SDL & co.@:
+from source codes.")
+    (license license:perl-license)))
+
 (define-public perl-any-moose
   (package
     (name "perl-any-moose")
@@ -390,14 +457,14 @@ list manipulation routines.")
 (define-public perl-async-interrupt
   (package
     (name "perl-async-interrupt")
-    (version "1.25")
+    (version "1.26")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
                                   "Async-Interrupt-" version ".tar.gz"))
               (sha256
                (base32
-                "0jh94wj1b6a0cnni8prsb59g5lak5rfj2fw5ng96291zmz2yqp1w"))))
+                "0nq8wqy0gsnwhiw23wsp1dmgzzbf2q1asi85yd0d7cmg4haxsmib"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-canary-stability" ,perl-canary-stability)))
@@ -478,7 +545,7 @@ SYS$HASH_PASSWORD password hashing function from VMS (also known as
 LGI$HPWD) and some associated VMS username and password handling
 functions.  The password hashing function is implemented in XS with a
 pure Perl backup version for systems that cannot handle XS.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public perl-authen-passphrase
   (package
@@ -521,7 +588,7 @@ many schemes in use to achieve this effect and the intent of this
 class is to provide a consistent interface to them all.  In addition
 to the base class, this module also contains implementations of
 several specific passphrase schemes.")
-  (license perl-license)))
+  (license license:perl-license)))
 
 (define-public perl-autovivification
   (package
@@ -663,7 +730,7 @@ keywords: @code{@@Scalars, @@Arrays, @@Hashes, @@Filehandles, @@Symbols,
 @@Functions, @@Barewords, @@TieIOMethods, @@UNIVERSALMethods and
 @@ExporterSymbols}.")
     ;; GPLv2 only
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public perl-benchmark-timer
   (package
@@ -689,7 +756,7 @@ trials.  It is perfect for when you need more precise information about the
 running time of portions of your code than the Benchmark module will give you,
 but don't want to go all out and profile your code.")
     (home-page "https://metacpan.org/release/Benchmark-Timer")
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public perl-bit-vector
   (package
@@ -714,7 +781,7 @@ matrices, all of arbitrary sizes.  The package also includes an
 object-oriented Perl module for accessing the C library from Perl, and
 optionally features overloaded operators for maximum ease of use.  The C
 library can nevertheless be used stand-alone, without Perl.")
-    (license (list (package-license perl) lgpl2.0+))))
+    (license (list (package-license perl) license:lgpl2.0+))))
 
 (define-public perl-boolean
   (package
@@ -774,7 +841,7 @@ Agency.")
     (synopsis "Work with International Standard Book Numbers")
     (description "This modules provides tools to deal with International
 Standard Book Numbers, including ISBN-10 and ISBN-13.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-business-issn
   (package
@@ -883,7 +950,7 @@ algorithm to keep the most used entries in the cache.")
 sent to STDOUT or STDERR, regardless of whether it comes from Perl, from XS
 code or from an external program.  Optionally, output can be teed so that it
 is captured while being passed through to the original file handles.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public perl-canary-stability
   (package
@@ -989,7 +1056,7 @@ library assert.h.")
     (synopsis "Convenience wrappers around Carp::Assert")
     (description "Carp::Assert::More is a set of handy assertion functions for
 Perl.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-carp-clan
   (package
@@ -1030,7 +1097,7 @@ the Carp.pm module doesn't help.")
     (synopsis "Read the CDDB entry for an audio CD in your drive")
     (description "This module can retrieve information from the CDDB.")
     ;; Either GPLv2 or the "Artistic" license.
-    (license (list gpl2 artistic2.0))))
+    (license (list license:gpl2 license:artistic2.0))))
 
 (define-public circos
   (package
@@ -1125,7 +1192,7 @@ the Carp.pm module doesn't help.")
     (description
      "Circos is a program for the generation of publication-quality, circularly
 composited renditions of genomic data and related annotations.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public perl-class-accessor
   (package
@@ -1201,14 +1268,14 @@ different getters and setters.")
 (define-public perl-class-c3
   (package
     (name "perl-class-c3")
-    (version "0.34")
+    (version "0.35")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Class-C3-" version ".tar.gz"))
        (sha256
-        (base32 "1dcibc31v5jwmi6hsdzi7c5ag1sb4wp3kxkibc889qrdj7jm12sd"))))
+        (base32 "0gp3czp6y0jxx4448kz37f7gdxq4vw514bvc0l98rk4glvqkq1c4"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-algorithm-c3" ,perl-algorithm-c3)))
@@ -1420,7 +1487,7 @@ names, not Class::Name.  For that, this module provides \"load_class
     (synopsis "XS implementation of parts of Class::Load")
     (description "This module provides an XS implementation for portions of
 Class::Load.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-class-methodmaker
   (package
@@ -1492,7 +1559,7 @@ with a hook to easily call that original method.")
 module dynamically generates anonymous classes with specified
 inheritance.  This is useful where an incomplete class requires use of
 a mixin in order to become instantiable.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-class-singleton
   (package
@@ -1531,7 +1598,7 @@ little other than manage the instantiation of a single object.")
     (synopsis "Minimalist class construction")
     (description "This module offers a minimalist class construction kit.  It
 uses no non-core modules for any recent Perl.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public perl-class-unload
   (package
@@ -1622,20 +1689,19 @@ objects.")
     (description "This @code{Clone::Choose} module checks several different
 modules which provide a @code{clone()} function and selects an appropriate
 one.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-clone-pp
   (package
     (name "perl-clone-pp")
-    (version "1.07")
+    (version "1.08")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/Clone-PP-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "15dkhqvih6rx9dnngfwwljcm9s8afb0nbyl2vdvhd8frnw4y31dz"))))
+        (base32 "0y7m25fksiavzg4xj4cm9zkz8rmnk4iqy7lm01m4nmyqlna3082p"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Clone-PP")
     (synopsis "Recursively copy Perl datatypes")
@@ -1648,7 +1714,7 @@ and objects.")
 (define-public perl-common-sense
   (package
     (name "perl-common-sense")
-    (version "3.74")
+    (version "3.75")
     (source
      (origin
        (method url-fetch)
@@ -1656,7 +1722,7 @@ and objects.")
                            "common-sense-" version ".tar.gz"))
        (sha256
         (base32
-         "1wxv2s0hbjkrnssvxvsds0k213awg5pgdlrpkr6xkpnimc17s7vp"))))
+         "0zhfp8f0czg69ycwn7r6ayg6idm5kyh2ai06g5s6s07kli61qsm8"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/common-sense")
     (synopsis "Sane defaults for Perl programs")
@@ -1691,7 +1757,7 @@ library.  It support scalar, array, and hash data structures just like its C/C++
 counterpart.  It reduces the effort required to implement a configuration file
 parser in your Perl programme and allows sharing configuration files between
 languages.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public perl-config-grammar
   (package
@@ -1826,7 +1892,7 @@ options.")
     (description
      "This module handles parsing, modifying and creating configuration files
 of the style used by the Git version control system.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-config-ini
   (package
@@ -1897,10 +1963,10 @@ the caller.")
     (synopsis "Extract data from Macintosh BinHex files")
     (description
      "BinHex is a format for transporting files safely through electronic
-mail, as short-lined, 7-bit, semi-compressed data streams.  Ths module
+mail, as short-lined, 7-bit, semi-compressed data streams.  This module
 provides a means of converting those data streams back into into binary
 data.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-cpan-changes
   (package
@@ -1921,7 +1987,7 @@ data.")
     (description
      "@code{CPAN::Changes} helps users programmatically read and write
 @file{Changes} files that conform to a common specification.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-cpan-distnameinfo
   (package
@@ -1943,7 +2009,7 @@ data.")
     (description
      "@code{CPAN::DistnameInfo} uses heuristics to extract the distribution
 name and version from filenames.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-cpan-meta-check
   (package
@@ -1969,14 +2035,14 @@ CPAN::Meta object are present.")
 (define-public perl-cpanel-json-xs
   (package
     (name "perl-cpanel-json-xs")
-    (version "4.18")
+    (version "4.26")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
                            "Cpanel-JSON-XS-" version ".tar.gz"))
        (sha256
-        (base32 "1dnnf6bjz0fi9hk8gzmsklmh5y0z137vk62k3d7s88q30maf3rk3"))))
+        (base32 "0c07jfh6pq0f3hlhg0cqmznna7rlcflgrqv17mbkz9gnvg4x3szv"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-common-sense" ,perl-common-sense)))
@@ -2009,7 +2075,7 @@ the cryptographic Cipher Block Chaining (CBC) mode.  In combination
 with a block cipher such as @code{Crypt::Rijndael} you can encrypt and
 decrypt messages of arbitrarily long length.  The encrypted messages
 are compatible with the encryption format used by SSLeay.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-crypt-des
   (package
@@ -2033,7 +2099,7 @@ are compatible with the encryption format used by SSLeay.")
 the DES cryptography algorithm.  The module implements the
 @code{Crypt::CBC} interface which has blocksize, keysize, encrypt and
 decrypt functions.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public perl-crypt-eksblowfish
   (package
@@ -2067,7 +2133,7 @@ Cost and salt parameters together define a cipher family.  Within each
 family, the key determines the encryption function.  This distribution
 also includes an implementation of @code{bcrypt}, the Unix crypt()
 password hashing algorithm based on Eksblowfish.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-crypt-mysql
   (package
@@ -2094,7 +2160,7 @@ password hashing algorithm based on Eksblowfish.")
 function.  The module does not depend on an interface to the MySQL
 database server.  This enables the comparison of encrypted passwords
 without the need for a real MySQL environment.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-crypt-passwdmd5
   (package
@@ -2118,7 +2184,7 @@ without the need for a real MySQL environment.")
 crypt()-compatible interfaces to the MD5-based crypt() function found
 in various *nixes.  It is based on the implementation found on FreeBSD
 2.2.[56]-RELEASE.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-crypt-randpasswd
   (package
@@ -2147,7 +2213,7 @@ Password Generator\".")
 (define-public perl-crypt-rijndael
   (package
     (name "perl-crypt-rijndael")
-    (version "1.14")
+    (version "1.16")
     (source
      (origin
       (method url-fetch)
@@ -2155,8 +2221,7 @@ Password Generator\".")
             "mirror://cpan/authors/id/L/LE/LEONT/Crypt-Rijndael-"
             version ".tar.gz"))
       (sha256
-       (base32
-        "03l5nwq97a8q9na4dpd4m3r7vrwpranx225vw8xm40w7zvgw6lb4"))))
+       (base32 "0h2dr1bd15y0sipxsdh1k4hx5bccywn15haj0xpjmf0471g0hh35"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Crypt-Rijndael")
     (synopsis "Crypt::CBC compliant Rijndael encryption module")
@@ -2172,7 +2237,7 @@ supported encryption modes are:
 @item @code{MODE_ECB}---Electronic cookbook mode
 @item @code{MODE_OFB}---Output feedback
 @end itemize")
-    (license gpl3)))
+    (license license:gpl3)))
 
 (define-public perl-crypt-rc4
   (package
@@ -2215,7 +2280,7 @@ Unix @code{crypt} function.  For those who need to construct
 non-standard variants of @code{crypt}, the various building blocks
 used in @code{crypt} are also supplied separately.")
     ;; Files in the 'fcrypt' directory are covered by a BSD licence.
-    (license (list perl-license bsd-3))))
+    (license (list license:perl-license license:bsd-3))))
 
 (define-public perl-cwd-guard
   (package
@@ -2276,7 +2341,7 @@ It returns to the previous working directory when the object is destroyed.")
     (description "Chaolin Zhang's Perl Library (czplib) contains assorted
 functions and data structures for processing and analysing genomic and
 bioinformatics data.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public perl-data
   (package
@@ -2367,7 +2432,7 @@ on the Internet, and cryptographic fake entropy.  The
 Data::Entropy::Algorithms module contains a collection of fundamental
 algorithms that use entropy.  There are random number generators and
 functions to shuffle arrays.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-data-integer
   (package
@@ -2394,7 +2459,7 @@ data type.  A native integer is one of the types of datum that can
 appear in the numeric part of a Perl scalar.  This module supplies
 constants describing the native integer type.  Both signed and
 unsigned representations are handled.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-data-uniqid
   (package
@@ -2455,7 +2520,7 @@ code that, when \"eval\"ed, produces a deep copy of the original arguments.")
 @code{Data::Dumper} writes out their contents in Perl syntax.  The references
 can also be objects.  The content of each variable is output in a single Perl
 statement.  It handles self-referential structures correctly.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-data-dumper-concise
   (package
@@ -2502,7 +2567,7 @@ types of datum that can appear in the numeric part of a Perl scalar.
 This module supplies constants describing the native floating point
 type, classification functions and functions to manipulate floating
 point values at a low level.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-data-optlist
   (package
@@ -2593,7 +2658,7 @@ The maths behind this is unfortunately fiddly, hence this module.")
 @item @code{Data::Perl::Bool}
 @item @code{Data::Perl::Code}
 @end itemize")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-data-printer
   (package
@@ -2672,6 +2737,27 @@ like split on newlines unless newlines are embedded in quotes.")
 of data out of your DATA section.")
     (license (package-license perl))))
 
+(define-public perl-data-section-simple
+  (package
+    (name "perl-data-section-simple")
+    (version "0.07")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
+                           "Data-Section-Simple-" version ".tar.gz"))
+       (sha256
+        (base32 "1jx9g5sxcw0i2zkm2z895k422i49kpx0idnnvvvs36lhvgzkac0b"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-requires" ,perl-test-requires)))
+    (home-page "https://metacpan.org/release/Data-Section-Simple")
+    (synopsis "Read data from __DATA__")
+    (description
+     "Data::Section::Simple is a simple module to extract data from __DATA__
+section of the file.")
+    (license license:perl-license)))
+
 (define-public perl-data-stag
   (package
     (name "perl-data-stag")
@@ -2823,19 +2909,19 @@ applicable).")
     (synopsis "XS wrapper for Date::Calc")
     (description "Date::Calc::XS is an XS wrapper and C library plug-in for
 Date::Calc.")
-    (license (list (package-license perl) lgpl2.0+))))
+    (license (list (package-license perl) license:lgpl2.0+))))
 
 (define-public perl-date-manip
   (package
     (name "perl-date-manip")
-    (version "6.78")
+    (version "6.82")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/S/SB/SBECK/"
                            "Date-Manip-" version ".tar.gz"))
        (sha256
-        (base32 "1faxj6gafrqir9hvy9r8q57s93n57b412s04qycrks7r0520hdnb"))))
+        (base32 "0ak72kpydwhq2z03mhdfwm3ganddzb8gawzh6crpsjvb9kwvr5ps"))))
     (build-system perl-build-system)
     (arguments
      ;; Tests would require tzdata for timezone information, but tzdata is in
@@ -2869,7 +2955,7 @@ module may be used to create simple date objects.  It handles validation,
 interval arithmetic, and day-of-week calculation.  It does not deal with
 hours, minutes, seconds, and time zones.")
     ;; Can be used with either license.
-    (license (list (package-license perl) gpl2+))))
+    (license (list (package-license perl) license:gpl2+))))
 
 (define-public perl-datetime
   (package
@@ -2899,7 +2985,7 @@ hours, minutes, seconds, and time zones.")
     (description "DateTime is a class for the representation of date/time
 combinations.  It represents the Gregorian calendar, extended backwards in
 time before its creation (in 1582).")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-datetime-calendar-julian
   (package
@@ -3021,7 +3107,7 @@ or \"every day\".  You can also create more complicated recurrences, such as
 string formats of dates and times are simple and just require a basic regular
 expression to extract the relevant information.  Builder provides a simple way
 to do this without writing reams of structural code.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-datetime-format-flexible
   (package
@@ -3105,7 +3191,7 @@ order to create the appropriate objects.")
     (synopsis "Parse ISO8601 date and time formats")
     (description "@code{DateTime::Format::ISO8601} is a DateTime
 extension that parses almost all ISO8601 date and time formats.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-datetime-format-natural
   (package
@@ -3165,7 +3251,7 @@ parsing logic.")
 function that is the reverse of `strftime(3)`, for `DateTime`.  While
 `strftime` takes a `DateTime` and a pattern and returns a string, `strptime`
 takes a string and a pattern and returns the `DateTime` object associated.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-datetime-locale
   (package
@@ -3351,7 +3437,7 @@ annotation to a Perl subroutine, resulting in resolvable calls to that
 subroutine being mutated at compile time by arbitrary C code.  This
 module makes @code{cv_set_call_checker} and several supporting
 functions available.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-devel-caller
   (package
@@ -3415,7 +3501,7 @@ particular command is available.")
 C library and its headers are available.  You can also check for the presence of
 particular functions in a library, or even that those functions return
 particular results.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-devel-checkcompiler
   (package
@@ -3460,7 +3546,7 @@ you can tell it to compile a C source file with optional linker flags.")
      "@code{Devel::Cycle} This is a tool for finding circular references in
 objects and other types of references.  Because of Perl's reference-count
 based memory management, circular references will cause memory leaks.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-devel-globaldestruction
   (package
@@ -3523,7 +3609,7 @@ files/modules are installed or not).")
     (description
      "This module provides a basic way to discover if a piece of perl code is
 allocating perl data and not releasing them again.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-devel-lexalias
   (package
@@ -3617,7 +3703,7 @@ arbitrary parameters.")
 Devel::StackTrace and Devel::StackTrace::Frame.  These objects encapsulate the
 information that can be retrieved via Perl's caller() function, as well as
 providing a simple interface to this data.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-devel-stacktrace-ashtml
   (package
@@ -3664,36 +3750,34 @@ each stack frame.")
 (define-public perl-digest-crc
   (package
     (name "perl-digest-crc")
-    (version "0.22")
+    (version "0.23")
     (source
      (origin
       (method url-fetch)
       (uri (string-append
             "mirror://cpan/authors/id/O/OL/OLIMAUL/Digest-CRC-"
-            version ".2.tar.gz"))
+            version ".tar.gz"))
       (sha256
-       (base32
-        "1jvqcyrbi11cj3vlfc9sq2g6rv9caizyjkjqsksvmxn6zgvm0aqi"))))
+       (base32 "1n64qnjxhw1jjikxgfa1x5a4f7qi298839r3xhzvmj5736754j51"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Digest-CRC")
     (synopsis "Generic CRC functions")
     (description "The @code{Digest::CRC} module calculates CRC sums of
 all sorts.  It contains wrapper functions with the correct parameters
 for CRC-CCITT, CRC-16 and CRC-32.")
-    (license public-domain)))
+    (license license:public-domain)))
 
 (define-public perl-digest-hmac
   (package
     (name "perl-digest-hmac")
-    (version "1.03")
+    (version "1.04")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/G/GA/GAAS/"
+       (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/"
                            "Digest-HMAC-" version ".tar.gz"))
        (sha256
-        (base32
-         "0naavabbm1c9zgn325ndy66da4insdw9l3mrxwxdfi7i7xnjrirv"))))
+        (base32 "1m4fn0w3hb4vn7k5kja508a5hjmcrm28zhdpjkbl8p17m9b83g6n"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Digest-HMAC")
     (synopsis "Keyed-Hashing for Message Authentication")
@@ -3722,29 +3806,20 @@ RSA Data Security Inc.@: MD4 Message Digest algorithm from within Perl
 programs.  The algorithm takes as input a message of arbitrary length
 and produces as output a 128-bit \"fingerprint\" or \"message digest\"
 of the input.  MD4 is described in RFC 1320.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-digest-md5
   (package
     (name "perl-digest-md5")
-    (version "2.55")
+    (version "2.58")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/G/GA/GAAS/Digest-MD5-"
+       (uri (string-append "mirror://cpan/authors/id/T/TO/TODDR/Digest-MD5-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0g0fklbrm2krswc1xhp4iwn1dhqq71fqh2p5wm8xj9a4s6i9ic83"))))
+        (base32 "057psy6k7im0pr3344ny6k5rsnbqj8aizkmwgw53kbbngabh20kx"))))
     (build-system perl-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'build 'set-permissions
-           (lambda _
-             ;; Make MD5.so read-write so it can be stripped.
-             (chmod "blib/arch/auto/Digest/MD5/MD5.so" #o755)
-             #t)))))
     (home-page "https://metacpan.org/release/Digest-MD5")
     (synopsis "Perl interface to the MD-5 algorithm")
     (description
@@ -3754,6 +3829,30 @@ input a message of arbitrary length and produces as output a
 128-bit \"fingerprint\" or \"message digest\" of the input.")
     (license (package-license perl))))
 
+(define-public perl-digest-sha
+  (package
+    (name "perl-digest-sha")
+    (version "6.02")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "mirror://cpan/authors/id/M/MS/MSHELOR/Digest-SHA-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32
+            "01lv0dc3mgnl3ap8npdnqiwmdqz2yc5bziss648c5jgalfzacric"))))
+    (build-system perl-build-system)
+    (home-page
+      "https://metacpan.org/release/Digest-SHA")
+    (synopsis
+      "Perl extension for SHA-1/224/256/384/512")
+    (description
+     "The @code{Digest::SHA} Perl module implements the hash functions
+of the SHA family. It also provides the @code{shasum} binary.")
+    (license (package-license perl))))
+
 (define-public perl-digest-sha1
   (package
     (name "perl-digest-sha1")
@@ -3818,7 +3917,7 @@ modules separately and deal with them after the module is done installing.")
 dynamic loading as used by Perl.  Some details of dynamic loading are
 very platform-dependent, so correct use of these functions requires
 the programmer to be mindfulof the space of platform variations.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-encode-detect
   (package
@@ -3839,7 +3938,7 @@ the programmer to be mindfulof the space of platform variations.")
     (synopsis "Detect the encoding of data")
     (description "This package provides a class @code{Encode::Detect} to detect
 the encoding of data.")
-    (license mpl1.1)))
+    (license license:mpl1.1)))
 
 (define-public perl-encode-eucjpascii
   (package
@@ -3903,7 +4002,7 @@ also known as JIS 2000.")
 part of Perl by default, including \"BIG5-1984\", \"BIG5-2003\", \"BIG5PLUS\",
 \"BIG5EXT\", \"CCCII\", \"EUC-TW\", \"CNS11643-*\", \"GB18030\", and
 \"UNISYS\".")
-    (license expat)))
+    (license license:expat)))
 
 (define-public perl-env-path
   (package
@@ -3981,6 +4080,41 @@ environment, other than a fixed list of specified variables.  Compilation
 errors are rethrown automatically.")
     (license (package-license perl))))
 
+(define-public perl-eval-withlexicals
+  (package
+    (name "perl-eval-withlexicals")
+    (version "1.003006")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/H/HA/HAARG/Eval-WithLexicals-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0x09mq0q745cxkw3xgr0h7dil7p1pdq3l5299kj3mk2ijkk2gwb6"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'install 'wrap-tinyrepl
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out")))
+                        (wrap-program (string-append out "/bin/tinyrepl")
+                          `("PERL5LIB" ":" prefix
+                            (,(getenv "PERL5LIB")
+                             ,(string-append out "/lib/perl5/site_perl"))))
+                        #t))))))
+    (propagated-inputs
+     `(("perl-moo" ,perl-moo)
+       ("perl-strictures" ,perl-strictures)))
+    (home-page "https://metacpan.org/release/Eval-WithLexicals")
+    (synopsis "Lexical scope evaluation library for Perl")
+    (description "The Eval::WithLexicals Perl library provides support for
+lexical scope evaluation.  This package also includes the @command{tinyrepl}
+command, which can be used as a minimal Perl read-eval-print loop (REPL).")
+    (license (package-license perl))))
+
 (define-public perl-exception-class
   (package
     (name "perl-exception-class")
@@ -4221,7 +4355,7 @@ handle Perl/XS typemap files, and their submodules.")
 @command{pkg-config} utility, intended for use in the @file{Makefile.PL}
 of perl extensions which bind libraries that @command{pkg-config} knows.
 It is really just boilerplate code that you would have written yourself.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public perl-extutils-typemaps-default
   (package
@@ -4302,7 +4436,7 @@ interface XS for C++; it is a thin layer over plain XS.")
     (synopsis "Watch for changes to files")
     (description "This module provides a class to monitor a directory for
 changes made to any file.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-file-configdir
   (package
@@ -4490,7 +4624,7 @@ working directory.  When the object is destroyed, the destructor calls
 @code{chdir} to revert to the original working directory.  By storing the
 object in a lexical variable with a limited scope, this happens automatically
 at the end of the scope.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public perl-file-list
   (package
@@ -4544,7 +4678,7 @@ It is intended for processing log and other similar text files which typically
 have their newest entries appended to them.  By default files are assumed to
 be plain text and have a line ending appropriate to the OS.  But you can set
 the input record separator string on a per file basis.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-file-remove
   (package
@@ -4781,20 +4915,19 @@ notifications of changes to a given file system path.  It uses inotify2 on
 Linux, fsevents on OS X, @code{kqueue} on FreeBSD, and
 @code{FindFirstChangeNotification} on Windows if they're installed, and falls
 back to a full directory scan if none of these are available.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-getopt-long
   (package
     (name "perl-getopt-long")
-    (version "v2.49.1")
+    (version "2.51")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/J/JV/JV/"
-                           "Getopt-Long-" (substring version 1) ".tar.gz"))
+                           "Getopt-Long-" version ".tar.gz"))
        (sha256
-        (base32
-         "0bw8gbhj8s5gmkqvs3m7pk9arqhgqssrby4yimh29ah9alix9ylq"))))
+        (base32 "0r659i6rkz8zkfgdccbn29zmd4bk9lcdc4y20ng6w2glqaa3pd10"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Getopt-Long")
     (synopsis "Module to handle parsing command line options")
@@ -4809,7 +4942,7 @@ single letters, and are introduced with a double dash \"--\".  Support for
 bundling of command line options, as was the case with the more traditional
 single-letter approach, is provided but not enabled by default.")
     ;; Can be used with either license.
-    (license (list (package-license perl) gpl2+))))
+    (license (list (package-license perl) license:gpl2+))))
 
 (define-public perl-getopt-long-descriptive
   (package
@@ -4939,16 +5072,19 @@ relic support.")
 (define-public perl-hash-merge
   (package
     (name "perl-hash-merge")
-    (version "0.300")
+    (version "0.302")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+       (uri (string-append "mirror://cpan/authors/id/H/HE/HERMES/"
                            "Hash-Merge-" version ".tar.gz"))
        (sha256
-        (base32
-         "0h3wfnpv5d4d3f9xzmwkchay6251nhzngdv3f6xia56mj4hxabs0"))))
+        (base32 "0i46agids6pk445gfck80f8z7q3pjvkp0ip1vmhqnq1rcpvj41df"))))
     (build-system perl-build-system)
+    (native-inputs
+     ;; For tests only.
+     `(("perl-clone" ,perl-clone)
+       ("perl-clone-pp" ,perl-clone-pp)))
     (propagated-inputs
      `(("perl-clone-choose" ,perl-clone-choose)))
     (home-page "https://metacpan.org/release/Hash-Merge")
@@ -4980,6 +5116,29 @@ merged.")
 that may contain multiple values per key, inspired by MultiDict of WebOb.")
     (license (package-license perl))))
 
+(define-public perl-hook-lexwrap
+  (package
+    (name "perl-hook-lexwrap")
+    (version "0.26")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Hook-LexWrap-" version ".tar.gz"))
+       (sha256
+        (base32 "0bgc6w8zs45n6ksgk0zisn9a2vcr3lmzipkan2a94kzrk1gxq2xn"))))
+    (build-system perl-build-system)
+    (home-page
+     "https://metacpan.org/release/Hook-LexWrap")
+    (synopsis "Lexically scoped subroutine wrappers")
+    (description
+     "Hook::LexWrap allows you to install a pre- or post-wrapper (or
+both) around an existing subroutine.  Unlike other modules that
+provide this capacity (e.g., Hook::PreAndPost and Hook::WrapSub),
+Hook::LexWrap implements wrappers in such a way that the standard
+caller function works correctly within the wrapped subroutine.")
+    (license license:perl-license)))
+
 (define-public perl-importer
   (package
     (name "perl-importer")
@@ -5046,7 +5205,7 @@ compilation.  Import::Into provides global methods to make this painless.")
     (description "The inc::latest module helps bootstrap configure-time
 dependencies for CPAN distributions.  These dependencies get bundled into the
 inc directory within a distribution and are used by Makefile.PL or Build.PL.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public perl-indirect
   (package
@@ -5147,7 +5306,7 @@ It also goes a bit into Perl C internals.")
 a single nifty object oriented interface to greatly simplify your everyday
 Perl IO idioms.  It exports a single function called io, which returns a new
 @code{IO::All} object.  And that object can do it all!")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-io-captureoutput
   (package
@@ -5355,7 +5514,7 @@ Perlish API and none of the bloat and rarely used features of IPC::Run.")
     (home-page "https://metacpan.org/release/IPC-Run3")
     ;; "You may use this module under the terms of the BSD, Artistic, or GPL
     ;; licenses, any version."
-    (license (list bsd-3 gpl3+))))
+    (license (list license:bsd-3 license:gpl3+))))
 
 (define-public perl-ipc-sharelite
   (package
@@ -5453,18 +5612,18 @@ installed.")
 (define-public perl-json-maybexs
   (package
     (name "perl-json-maybexs")
-    (version "1.004000")
+    (version "1.004003")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "JSON-MaybeXS-" version ".tar.gz"))
        (sha256
         (base32
-         "09m1w03as6n0a00pzvaldkhm494yaf5n0g3j2cwwfx24iwpa1gar"))))
+         "1grg8saa318bs4x2wqnww7y0nra7azrzg35bk5pgvkwxzwbkpvjv"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-test-without-module" ,perl-test-without-module)))
+     `(("perl-test-needs" ,perl-test-needs)))
     (inputs
      `(("perl-cpanel-json-xs" ,perl-cpanel-json-xs)))
     (home-page "https://metacpan.org/release/JSON-MaybeXS")
@@ -5522,6 +5681,32 @@ versa.")
      "Lexical::SealRequireHints prevents leakage of lexical hints")
     (license (package-license perl))))
 
+(define-public perl-locale-maketext-lexicon
+  (package
+    (name "perl-locale-maketext-lexicon")
+    (version "1.00")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DRTECH/"
+                           "Locale-Maketext-Lexicon-" version ".tar.gz"))
+       (sha256
+        (base32 "0z6w3m6f3r29ljicdigsyvpa9w9j2m65l4gjxcw0wgwdll26ngxp"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-html-parser" ,perl-html-parser)
+       ("perl-lingua-en-sentence" ,perl-lingua-en-sentence)
+       ("perl-ppi" ,perl-ppi)
+       ("perl-template-toolkit" ,perl-template-toolkit)
+       ("perl-text-haml" ,perl-text-haml)
+       ("perl-yaml" ,perl-yaml)))
+    (home-page "https://metacpan.org/release/Locale-Maketext-Lexicon")
+    (synopsis "Use other catalog formats in Maketext")
+    (description
+     "This module provides lexicon-handling modules to read from other
+localization formats, such as Gettext, Msgcat, and so on.")
+    (license license:x11)))
+
 (define-public perl-log-any
   (package
     (name "perl-log-any")
@@ -5651,14 +5836,14 @@ one: logging, exceptions, and translations.")
 (define-public perl-libintl-perl
   (package
     (name "perl-libintl-perl")
-    (version "1.31")
+    (version "1.32")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/G/GU/GUIDO/"
                            "libintl-perl-" version ".tar.gz"))
        (sha256
-        (base32 "1afandrl44mq9c32r57xr489gkfswdgc97h8x86k98dz1byv3l6a"))))
+        (base32 "19gbbh9w3rl805mv6mg1q80fsrg610h098qhf7ycnkjnyac84440"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -5676,7 +5861,29 @@ one: logging, exceptions, and translations.")
     (description "This package is an internationalization library for Perl
 that aims to be compatible with the Uniforum message translations system as
 implemented for example in GNU gettext.")
-    (license gpl3+)))
+    (license license:gpl3+)))
+
+(define-public perl-lingua-en-sentence
+  (package
+    (name "perl-lingua-en-sentence")
+    (version "0.31")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/K/KI/KIMRYAN/"
+                           "Lingua-EN-Sentence-" version ".tar.gz"))
+       (sha256
+        (base32 "11hlg92khd2azbxndnffsj9lggbxb3lqfdbwc6asr1c9lxlqddms"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (home-page "https://metacpan.org/release/Lingua-EN-Sentence")
+    (synopsis "Split text into sentences")
+    (description
+     "The Lingua::EN::Sentence module contains the function get_sentences,
+which splits text into its constituent sentences, based on a regular
+expression and a list of abbreviations (built in and given).")
+    (license license:perl-license)))
 
 (define-public perl-lingua-translit
   (package
@@ -5749,15 +5956,14 @@ intersections, unions, unique elements, complements and many more.")
 (define-public perl-list-moreutils
   (package
     (name "perl-list-moreutils")
-    (version "0.428")
+    (version "0.430")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
                            "List-MoreUtils-" version ".tar.gz"))
        (sha256
-        (base32
-         "1hkc8xkd27yzfkgaglzn77j4qjmilyva4gaz3pc64vpism2hjgki"))))
+        (base32 "09v5cipjf634a1176wy2wicibzz51lry0d0yim9rnbfl5j2ggcb3"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -5784,15 +5990,14 @@ functionality on lists which is not going to go into List::Util.")
 (define-public perl-list-moreutils-xs
   (package
     (name "perl-list-moreutils-xs")
-    (version "0.428")
+    (version "0.430")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/List-MoreUtils-XS-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0bfndmnkqaaf3gffprak143bzplxd69c368jxgr7rzlx88hyd7wx"))))
+        (base32 "0hmjkhmk1qlzbg8skq7g1zral07k1x0fk4w2fpcfr7hpgkaldkp8"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-config-autoconf" ,perl-config-autoconf)
@@ -5803,7 +6008,7 @@ functionality on lists which is not going to go into List::Util.")
     (description "@code{List::MoreUtils::XS} provides some trivial but
 commonly needed functionality on lists which is not going to go into
 @code{List::Util}.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public perl-list-someutils
   (package
@@ -5880,7 +6085,7 @@ Build a Mail::Internet object, and then send it out using Mail::Mailer.
 @item Mail::Util
 \"Smart functions\" you should not depend on.
 @end table")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-mail-sendmail
   (package
@@ -5903,7 +6108,7 @@ Build a Mail::Internet object, and then send it out using Mail::Mailer.
     (description "Mail::Sendmail is a pure perl module that provides a
 simple means to send email from a perl script.  The module only
 requires Perl5 and a network connection.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-math-bezier
   (package
@@ -5923,7 +6128,7 @@ requires Perl5 and a network connection.")
     (description "This module implements the algorithm for the solution of Bezier
 curves as presented by Robert D Miller in Graphics Gems V, \"Quick and Simple
 Bezier Curve Drawing\".")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-math-round
   (package
@@ -5942,7 +6147,7 @@ Bezier Curve Drawing\".")
     (synopsis "Perl extension for rounding numbers")
     (description "@code{Math::Round} provides functions to round numbers,
 both positive and negative, in various ways.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-math-vecstat
   (package
@@ -5981,7 +6186,7 @@ operated on.")
     (synopsis "Make functions faster by trading space for time")
     (description "This package transparently speeds up functions by caching
 return values, trading space for time.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-memoize-expirelru
   (package
@@ -6050,7 +6255,7 @@ MIME messages on Internet.")
      "MIME-tools is a collection of Perl5 MIME:: modules for parsing,
 decoding, and generating single- or multipart (even nested multipart) MIME
 messages.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-mime-types
   (package
@@ -6274,7 +6479,7 @@ several underlying implementations for a module.  This can be used to provide
 XS and pure Perl implementations of a module, or it could be used to load an
 implementation for a given OS or any other case of needing to provide multiple
 implementations.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-module-install
   (package
@@ -6342,7 +6547,7 @@ use in @code{Module::Inspector}.
 It can load a @file{MANIFEST} file that comes in a Perl distribution tarball,
 examine the contents, and perform some simple tasks.  It can also load the
 @file{MANIFEST.SKIP} file and check that.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-module-pluggable
   (package
@@ -6517,14 +6722,14 @@ Moose and is optimised for rapid startup.")
 (define-public perl-moose
   (package
     (name "perl-moose")
-    (version "2.2012")
+    (version "2.2015")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                                   "Moose-" version ".tar.gz"))
               (sha256
                (base32
-                "0s9m2pskc8h1k94pbvx0lvf0xgv9xca349isbcsrqdqnkmxf9fs6"))))
+                "05gma3q3l15igqrqi8ax8v5cmmvy7s939q3xzs45l1rc7sfx6yd6"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-cpan-meta-check" ,perl-cpan-meta-check)
@@ -6623,14 +6828,14 @@ private methods are not.")
 (define-public perl-moosex-getopt
   (package
     (name "perl-moosex-getopt")
-    (version "0.74")
+    (version "0.75")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "MooseX-Getopt-" version ".tar.gz"))
        (sha256
-        (base32 "091crga5gjyhj2lz55w3ba37xq6pmjg5dx5xccsrzghy8cxxzq0x"))))
+        (base32 "1j7b2jnf0blxr4czp3vfcnv1h5zj601mrfdm92g1wf5wn9dvxwv3"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -6677,7 +6882,7 @@ namespace::autoclean to operate without blowing away your overloads.  After
 using MooseX::MarkAsMethods your overloads will be recognized by Class::MOP as
 being methods, and class extension as well as composition from roles with
 overloads will \"just work\".")
-    (license lgpl2.1)))
+    (license license:lgpl2.1)))
 
 (define-public perl-moosex-methodattributes
   (package
@@ -6861,7 +7066,7 @@ where plain Moose::Roles would lose the overloading.")
 changes the default naming policy for the loading class so that accessors are
 separated into get and set methods.  The get methods have the same name as the
 accessor, while set methods are prefixed with \"_set_\".")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-moosex-strictconstructor
   (package
@@ -6887,7 +7092,7 @@ accessor, while set methods are prefixed with \"_set_\".")
     (description "Simply loading this module makes your constructors
 \"strict\".  If your constructor is called with an attribute init argument
 that your class does not declare, then it calls Moose->throw_error().")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-moosex-traits-pluggable
   (package
@@ -7061,7 +7266,7 @@ constraint with coercion to load the class.")
     (synopsis
      "Using Moo and MooX:: packages the most lazy way")
     (description "Contains the MooX and MooX::Role packages.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-moox-cmd
   (package
@@ -7130,15 +7335,14 @@ building is done in @code{MooX::ConfigFromFile::Role}---using
 (define-public perl-moox-file-configdir
   (package
     (name "perl-moox-file-configdir")
-    (version "0.007")
+    (version "0.008")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
                            "MooX-File-ConfigDir-" version ".tar.gz"))
        (sha256
-        (base32
-         "074v150wrbddhy1n0qc8s80zrb71l3c4is968cnr06ac5l9kmshz"))))
+        (base32 "1b033injzk9d8clgip67ps5j5bpkrnag28q89ddwhrgqx12i3m7q"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-file-configdir" ,perl-file-configdir)
@@ -7154,17 +7358,16 @@ installing configuration files or for finding any piece of settings.")
 (define-public perl-moox-handlesvia
   (package
     (name "perl-moox-handlesvia")
-    (version "0.001008")
+    (version "0.001009")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "mirror://cpan/authors/id/M/MA/MATTP/MooX-HandlesVia-"
+             "mirror://cpan/authors/id/T/TO/TOBYINK/MooX-HandlesVia-"
              version
              ".tar.gz"))
        (sha256
-        (base32
-         "137yrjn2jmw4cj0fjdajnkjgqr5arnpq72kbm6w66xskncinz55h"))))
+        (base32 "04kcyflg49rclxa1nm035c05jpyvhdacjyy1wklbgv4li3im6qvi"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-moox-types-mooselike"
@@ -7186,7 +7389,7 @@ installing configuration files or for finding any piece of settings.")
      "@code{MooX::HandlesVia} is an extension of Moo's @code{handles}
 attribute functionality.  It provides a means of proxying functionality from
 an external class to the given attribute.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-moox-late
   (package
@@ -7223,7 +7426,7 @@ an external class to the given attribute.")
 Currently Hash, Array and Code are supported.  This feature requires
 MooX::HandlesVia.
 @end enumerate")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-moox-options
   (package
@@ -7303,7 +7506,7 @@ generate a command line tool.")
      "Loading @code{MooX::StrictConstructor} makes your constructors \"strict\".
 If your constructor is called with an attribute init argument that your class
 does not declare, then it dies.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-moox-types-mooselike
   (package
@@ -7405,7 +7608,7 @@ of data.")
     (description "@code{Mozilla::CA} provides a copy of Mozilla's bundle of
 Certificate Authority certificates in a form that can be consumed by modules
 and libraries based on OpenSSL.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public perl-multidimensional
   (package
@@ -7531,7 +7734,7 @@ power and flexibility of perl.  The module does not implement the
 functionality of a RIB (Routing Information Base) nor does it modify the
 kernel routing table of the host system.  However, such operations could be
 implemented using the API provided by the module.")
-  (license perl-license)))
+  (license license:perl-license)))
 
 (define-public perl-net-dns-native
   (package
@@ -7554,7 +7757,7 @@ designed to be used with event loops.  Names are resolved by your system's
 native @code{getaddrinfo(3)} implementation, called in a separate thread to
 avoid blocking the entire application.  Threading overhead is limited by using
 system threads instead of Perl threads.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-net-idn-encode
   (package
@@ -7581,7 +7784,7 @@ names today (letter-digit-hyphen, /[A-Z0-9-]/i).
 
 Use this module if you just want to convert domain names (or email addresses),
 using whatever IDNA standard is the best choice at the moment.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-net-statsd
   (package
@@ -7646,7 +7849,7 @@ output formats may include thousands separators - characters inserted between
 each group of three characters counting right to left from the decimal point.
 The characters used for the decimal point and the thousands separator come from
 the locale information or can be specified by the user.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-number-range
   (package
@@ -7712,6 +7915,64 @@ technology to store hierarchical information such as links to other
 documents within a single file.")
     (license (package-license perl))))
 
+(define-public perl-opengl
+  (package
+    (name "perl-opengl")
+    (version "0.70")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "mirror://cpan/authors/id/C/CH/CHM/OpenGL-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32
+            "1q3lz168q081iwl9jg21fbzhp9la79gav9mv6nmh2jab83s2l3mj"))))
+    (build-system perl-build-system)
+    (inputs `(("freeglut" ,freeglut)
+              ("libxi" ,libxi)
+              ("libxmu" ,libxmu)))
+    (arguments
+     '(#:tests? #f ; test.pl fails with our empty glversion.txt, while
+                   ; the package still seems to work on the examples
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'glversion
+           ;; Building utils/glversion.txt fails, and is probably
+           ;; dependent on the graphics card in the build system.
+           ;; Replace it by a content-free file; while this breaks
+           ;; the tests, the examples in the examples/ subdirectory
+           ;; can be run.
+           (lambda _
+             (substitute* "Makefile.PL"
+               (("unlink") "# unlink") ; prevent utils/glversion.txt
+                                       ; from being deleted once...
+               (("\\.\"\\$make_ver clean\"") "")) ; ...and twice...
+             (substitute* "utils/Makefile"
+               (("all: glversion.txt") "all: ")) ; ...and thrice.
+             (call-with-output-file "utils/glversion.txt"
+               (lambda (port)
+                 (display (string-append "FREEGLUT=\nGLUT=\nVERSION=\n"
+                                         "VENDOR=\nRENDERER=\n"
+                                         "EXTENSIONS=\n")
+                          port)))
+             #t))
+         (add-before 'configure 'fix-library-flags
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "Makefile.PL"
+               (("-L/usr/local/freeglut/lib")
+                (string-append "-L" (assoc-ref inputs "freeglut") "/lib\n"
+                               "-L" (assoc-ref inputs "glu") "/lib\n"
+                               "-L" (assoc-ref inputs "mesa") "/lib\n")))
+             #t)))))
+    (home-page "https://metacpan.org/release/OpenGL")
+    (synopsis
+      "Perl bindings to the OpenGL API, GLU, and GLUT/FreeGLUT")
+    (description "The package provides Perl bindings to OpenGL, GLU
+and FreeGLUT.")
+    (license (package-license perl))))
+
 (define-public perl-package-anon
   (package
     (name "perl-package-anon")
@@ -7761,7 +8022,7 @@ instance, not by name.")
     (synopsis "Manage deprecation warnings for your distribution")
     (description "This module allows you to manage a set of deprecations for
 one or more modules.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-package-stash
   (package
@@ -7891,21 +8152,21 @@ for arguments of the types handled by the classification functions.
 Enforcement of more complex types may be built using the
 classification functions, or it may be more convenient to use a module
 designed for the more complex job, such as @code{Params::Validate}")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-params-util
   (package
     (name "perl-params-util")
-    (version "1.07")
+    (version "1.102")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "mirror://cpan/authors/id/A/AD/ADAMK/Params-Util-"
+             "mirror://cpan/authors/id/R/RE/REHSACK/Params-Util-"
              version ".tar.gz"))
        (sha256
         (base32
-         "0v67sx93yhn7xa0nh9mnbf8mixf54czk6wzrjsp6dzzr5hzyrw9h"))))
+         "00kl154zisf2zsl8yl6xa6yw54nhd9cja5d5fyigs96vhasb36s9"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Params-Util")
     (synopsis "Simple, compact and correct param-checking functions")
@@ -7937,7 +8198,7 @@ checking parameters easier.")
     (synopsis "Validate method/function parameters")
     (description "The Params::Validate module allows you to validate method or
 function call parameters to an arbitrary level of specificity.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-params-validationcompiler
   (package
@@ -7968,7 +8229,7 @@ parameter checking subroutine.  It can handle named or positional
 parameters, and can return the parameters as key/value pairs or a list
 of values.  In addition to type checks, it also supports parameter
 defaults, optional parameters, and extra \"slurpy\" parameters.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-par-dist
   (package
@@ -8041,19 +8302,19 @@ directory specifications in a cross-platform manner.")
     (synopsis "Tools for working with directory and file names")
     (description "This package provides functions to work with directory and
 file names.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-path-tiny
   (package
     (name "perl-path-tiny")
-    (version "0.108")
+    (version "0.118")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
                                   "Path-Tiny-" version ".tar.gz"))
               (sha256
                (base32
-                "1x9zf8r3cynf4vqlycyyspsr70v4zw6bk9bkgvfpvsxkw8mlhj9w"))))
+                "1zdhc3azw6wn21db3yyygs57vlqkx72ipyd8sa21m72c1y6qs4rj"))))
     (build-system perl-build-system)
     (arguments
      `(#:tests? #f)) ; Tests require additional test modules to be packaged
@@ -8066,12 +8327,12 @@ file names.")
     (synopsis "File path utility")
     (description "This module provides a small, fast utility for working
 with file paths.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public perl-pdf-api2
   (package
     (name "perl-pdf-api2")
-    (version "2.036")
+    (version "2.040")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -8079,7 +8340,7 @@ with file paths.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0x0pa75wpb87pcshl92y5nh8pzikjp46ljlr2pqvdgpqzvll8107"))))
+                "0nlks4p33d08h0fiv6aivinalf9f9zdkgkxqvvbbvdkvyh4z29a9"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-exception" ,perl-test-exception)
@@ -8090,7 +8351,7 @@ with file paths.")
     (synopsis "Facilitates the creation and modification of PDF files")
     (description "This Perl module facilitates the creation and modification
 of PDF files.")
-    (license lgpl2.1)))
+    (license license:lgpl2.1)))
 
 (define-public perl-perlio-utf8_strict
   (package
@@ -8166,14 +8427,14 @@ for a given module is comprehensive.")
 (define-public perl-pod-simple
   (package
     (name "perl-pod-simple")
-    (version "3.35")
+    (version "3.42")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/K/KH/KHW/"
                                   "Pod-Simple-" version ".tar.gz"))
               (sha256
                (base32
-                "0gg11ibbc02l2aw0bsv4jx0jax8z0apgfy3p5csqnvhlsb6218cr"))))
+                "1icagrjqw1azmff82h17cbrhqgql7rg21gz64mjpiqqq0cpfpz59"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Pod-Simple")
     (synopsis "Parsing library for text in Pod format")
@@ -8205,6 +8466,37 @@ feature is useful when you want to write loggers, servers, and portable
 applications.")
     (license (package-license perl))))
 
+(define-public perl-ppi
+  (package
+    (name "perl-ppi")
+    (version "1.270")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MITHALDU/"
+                           "PPI-" version ".tar.gz"))
+       (sha256
+        (base32 "0mzlz9rxqx93rqgy16jcfxwkplvhzr0f1gvvvwmmvf0vg266jak2"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:tests? #f))                    ;FIXME: some tests fail
+    (native-inputs
+     `(("perl-class-inspector" ,perl-class-inspector)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-nowarnings" ,perl-test-nowarnings)
+       ("perl-test-object" ,perl-test-object)
+       ("perl-test-subcalls" ,perl-test-subcalls)))
+    (propagated-inputs
+     `(("perl-clone" ,perl-clone)
+       ("perl-io-string" ,perl-io-string)
+       ("perl-params-util" ,perl-params-util)
+       ("perl-task-weaken" ,perl-task-weaken)))
+    (home-page "https://metacpan.org/release/PPI")
+    (synopsis "Parse, analyze and manipulate Perl (without Perl)")
+    (description "The PPI module parses, analyzes and manipulates Perl
+code.")
+    (license license:perl-license)))
+
 (define-public perl-probe-perl
   (package
     (name "perl-probe-perl")
@@ -8292,7 +8584,7 @@ variables that should not be changed.")
 @code{Ref::Util}, which provides several functions to help identify references
 in a more convenient way than the usual approach of examining the return value
 of @code{ref}.")
-    (license x11)))
+    (license license:x11)))
 
 (define-public perl-regexp-common
   (package
@@ -8316,7 +8608,7 @@ offensive language, lists of any pattern, IPv4 addresses, URIs, and Zip
 codes.")
     (home-page "https://metacpan.org/release/Regexp-Common")
     ;; Quad-licensed: Perl Artistic, Perl Artistic 2.0, X11, and BSD.
-    (license (list (package-license perl) x11 bsd-3))))
+    (license (list (package-license perl) license:x11 license:bsd-3))))
 
 (define-public perl-regexp-util
   (package
@@ -8366,14 +8658,14 @@ and @code{deserialize_regexp}.")
 (define-public perl-role-tiny-2
   (package
     (inherit perl-role-tiny)
-    (version "2.001001")
+    (version "2.001004")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Role-Tiny-" version ".tar.gz"))
        (sha256
-        (base32 "16yryg3cr14xw201gm8k8ci00hs60fy8lk2xhnaqa85n5m68flk8"))))))
+        (base32 "11qn516352yhi794www3ykwa9xv2gxpfnhn9jcn10x0ahl95gflj"))))))
 
 (define-public perl-safe-isa
   (package
@@ -8423,7 +8715,7 @@ strings it is necessary to understand these implementation details.
 This module provides functions to classify a string by encoding and to
 encode a string in a desired way.  The module is implemented in XS,
 with a pure Perl backup version for systems that cannot handle XS.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-scope-guard
   (package
@@ -8484,7 +8776,7 @@ collector.")
     (synopsis "Manage sets of integers")
     (description "@code{Set::IntSpan} manages sets of integers.  It is
 optimized for sets that have long runs of consecutive integers.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-set-object
   (package
@@ -8505,7 +8797,7 @@ optimized for sets that have long runs of consecutive integers.")
     (synopsis "Unordered collections of Perl Objects")
     (description "Set::Object provides efficient sets, unordered collections
 of Perl objects without duplicates for scalars and references.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-set-scalar
   (package
@@ -8598,7 +8890,7 @@ magically make the Perl interpreter start checking a value's type on assignment
 to a variable. In fact, there's no built-in way to apply a type to a variable at
 all.  Instead, you can explicitly check a value against a type, and optionally
 coerce values to that type.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-spiffy
   (package
@@ -8623,6 +8915,48 @@ straightforward and (perhaps someday) standard way.  Spiffy borrows ideas from
 other OO languages like Python, Ruby, Java and Perl 6.")
     (license (package-license perl))))
 
+(define-public perl-want
+  (package
+    (name "perl-want")
+    (version "0.29")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/R/RO/ROBIN/Want-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1xsjylbxxcbkjazqms49ipi94j1hd2ykdikk29cq7dscil5p9r5l"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Want")
+    (synopsis "Generalization of wantarray")
+    (description "This module generalises the mechanism of the
+@code{wantarray} function, allowing a function to determine in some detail how
+its return value is going to be immediately used.")
+    (license license:perl-license)))
+
+(define-public perl-contextual-return
+  (package
+    (name "perl-contextual-return")
+    (version "0.004014")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/D/DC/DCONWAY/Contextual-Return-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0y4zf5qkpayp4kkg7lw9ydbbin1z99m6xvy02fgacjbfw4ai9zh9"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-want" ,perl-want)))
+    (home-page "https://metacpan.org/release/Contextual-Return")
+    (synopsis "Create context-sensitive return values")
+    (description "This module provides a collection of named blocks that allow
+a return statement to return different values depending on the context in
+which it is called.")
+    (license license:perl-license)))
+
 (define-public perl-statistics-basic
   (package
     (name "perl-statistics-basic")
@@ -8642,7 +8976,33 @@ other OO languages like Python, Ruby, Java and Perl 6.")
     (synopsis "Collection of very basic statistics modules")
     (description "This package provides basic statistics functions like
 @code{median()}, @code{mean()}, @code{variance()} and @code{stddev()}.")
-    (license lgpl2.0)))
+    (license license:lgpl2.0)))
+
+(define-public perl-statistics-pca
+  (package
+    (name "perl-statistics-pca")
+    (version "0.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/D/DS/DSTH/Statistics-PCA-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1i3bskwibp54c9a2wx8gzr3hyds6mmhr3d550g8j6893005v3bgq"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-contextual-return" ,perl-contextual-return)
+       ("perl-math-cephes" ,perl-math-cephes)
+       ("perl-math-matrixreal" ,perl-math-matrixreal)
+       ("perl-text-simpletable" ,perl-text-simpletable)))
+    (home-page "https://metacpan.org/release/Statistics-PCA")
+    (synopsis "Perl implementation of Principal Component Analysis")
+    (description "This package provides the Statistics::PCA module, an
+implementation of @dfn{Principal Component Analysis} (PCA).")
+    (license license:perl-license)))
 
 (define-public perl-stream-buffered
   (package
@@ -8771,7 +9131,7 @@ removing double-quotes, and truncating to fit within a desired length.")
      "@code{String::Formatter} is a tool for building sprintf-like formatting
 routines.  It supports named or positional formatting, custom conversions,
 fixed string interpolation, and simple width-matching.")
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public perl-string-rewriteprefix
   (package
@@ -9037,7 +9397,7 @@ the superclass---at least conditionally and temporarily.  This module provides
 nicer equivalents to the native Perl syntax for calling superclasses, along with
 a universal @code{super} method to determine a class' own superclass, and better
 support for run-time mix-ins and roles.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-svg
   (package
@@ -9169,7 +9529,7 @@ of a system.")
      "Sys::Syscall allows one to use epoll and sendfile system calls from
 Perl.  Support is mostly Linux-only for now, but other syscalls/OSes are
 planned for the future.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-task-weaken
   (package
@@ -9247,7 +9607,7 @@ documents: HTML, XML, POD, PostScript, LaTeX, and so on.")
     (synopsis "Profiling for Template Toolkit")
     (description "Template::Timer provides inline profiling of the template
 processing in Perl code.")
-    (license (list gpl3 artistic2.0))))
+    (license (list license:gpl3 license:artistic2.0))))
 
 (define-public perl-template-tiny
   (package
@@ -9273,7 +9633,7 @@ functionality from Template Toolkit in as few lines of code as possible.
 It is intended for use in light-usage, low-memory, or low-cpu templating
 situations, where you may need to upgrade to the full feature set in the
 future, or if you want the retain the familiarity of TT-style templates.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-term-encoding
   (package
@@ -9509,7 +9869,7 @@ into tables.")
     (synopsis "Align text")
     (description "Text::Aligner exports a single function, align(), which is
 used to justify strings to various alignment styles.")
-    (license x11)))
+    (license license:x11)))
 
 (define-public perl-text-balanced
   (package
@@ -9552,14 +9912,14 @@ can combine fields into a CSV string and parse a CSV string into fields.")
 (define-public perl-text-csv-xs
   (package
     (name "perl-text-csv-xs")
-    (version "1.39")
+    (version "1.44")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HM/HMBRAND/"
                            "Text-CSV_XS-" version ".tgz"))
        (sha256
-        (base32 "1gcy1bxym6f7qsxivkl3c5p94r1bjhf9csy1x38a1gk8mx744kma"))))
+        (base32 "1i4viyf61lzss474ndnmqhdqlhksn9hcxhjbqhv4frg2m3f2v0f4"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Text-CSV_XS")
     (synopsis "Routines for manipulating CSV files")
@@ -9598,7 +9958,7 @@ generally slower on larger files.")
 (define-public perl-text-format
   (package
     (name "perl-text-format")
-    (version "0.61")
+    (version "0.62")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -9606,7 +9966,7 @@ generally slower on larger files.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0axfyiml3zwawwd127z8rl2lm53z6dlsflzmp80m3j0myn7kp2mv"))))
+                "0104z7jjv46kqh77rnx8kvmsbr5dy0s56xm01dckq4ly65br0hkx"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -9617,7 +9977,7 @@ generally slower on larger files.")
     (description "This package provides functions to format text in various
 ways like centering, paragraphing, and converting tabs to spaces and spaces
 to tabs.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-text-glob
   (package
@@ -9640,6 +10000,30 @@ used to match against text, rather than fetching names from a file system.  If
 you want to do full file globbing use the File::Glob module instead.")
     (license (package-license perl))))
 
+(define-public perl-text-haml
+  (package
+    (name "perl-text-haml")
+    (version "0.990118")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/V/VT/VTI/"
+                           "Text-Haml-" version ".tar.gz"))
+       (sha256
+        (base32 "1siq8hgj7s8gwpf3n3h1is5v50rwi6av8lfb19khiyyqz0rp7a57"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build-tiny" ,perl-module-build-tiny)))
+    (propagated-inputs
+     `(("perl-data-section-simple" ,perl-data-section-simple)
+       ("perl-uri" ,perl-uri)))
+    (home-page "https://metacpan.org/release/Text-Haml")
+    (synopsis "Haml Perl implementation")
+    (description
+     "Text::Haml implements Haml
+@url{http://haml.info/docs/yardoc/file.REFERENCE.html} specification.")
+    (license license:artistic2.0)))
+
 (define-public perl-text-neattemplate
   (package
     (name "perl-text-neattemplate")
@@ -9665,6 +10049,27 @@ template engine, for when you need speed rather than complex features,
 yet need more features than simple variable substitution.")
     (license (package-license perl))))
 
+(define-public perl-text-patch
+  (package
+    (name "perl-text-patch")
+    (version "1.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CA/CADE/"
+                           "Text-Patch-" version ".tar.gz"))
+       (sha256
+        (base32 "1k1xbhxwn9fymqqwnam9pm7hr2p5ikq6dk578qw18gkap9hqxwga"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-text-diff" ,perl-text-diff)))
+    (home-page "https://metacpan.org/release/Text-Patch")
+    (synopsis "Patches text with given patch")
+    (description "Text::Patch combines source text with given
+diff (difference) data.  Diff data is produced by Text::Diff module or
+by the standard @code{diff} utility.")
+    (license license:gpl2+)))
+
 (define-public perl-text-roman
   (package
     (name "perl-text-roman")
@@ -9701,7 +10106,7 @@ algorism to indicate multiplication by 1000.")
     (home-page "https://metacpan.org/release/Text-SimpleTable")
     (synopsis "Simple ASCII tables")
     (description "Text::SimpleTable draws simple ASCII tables.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-text-table
   (package
@@ -9723,7 +10128,7 @@ algorism to indicate multiplication by 1000.")
     (home-page "https://metacpan.org/release/Text-Table")
     (synopsis "Organize Data in Tables")
     (description "Text::Table renders plaintext tables.")
-    (license x11)))
+    (license license:x11)))
 
 (define-public perl-text-template
   (package
@@ -9752,7 +10157,7 @@ algorism to indicate multiplication by 1000.")
 filling in templates generally.  A template is a piece of text that has little
 Perl programs embedded in it here and there.  When you fill in a template, you
 evaluate the little programs and replace them with their values.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-text-unidecode
   (package
@@ -9791,7 +10196,7 @@ system.")
     (home-page "https://metacpan.org/release/threads")
     (synopsis "Perl interpreter-based threads")
     (description "This module exposes interpreter threads to the Perl level.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-throwable
   (package
@@ -9836,7 +10241,7 @@ as exceptions to standard program flow.")
 reformats Perl scripts to make them easier to read.   The formatting can be
 controlled with command line parameters.  The default parameter settings
 approximately follow the suggestions in the Perl Style Guide.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public perl-tie-cycle
   (package
@@ -9900,7 +10305,32 @@ operations can also be performed on the IxHash.")
     (description
      "This modules provides a file handle that hides the beginning of a file,
 by modifying the @code{seek()} and @code{tell()} calls.")
-    (license asl2.0)))
+    (license license:asl2.0)))
+
+(define-public perl-tie-simple
+  (package
+    (name "perl-tie-simple")
+    (version "1.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HANENKAMP/"
+                           "Tie-Simple-" version ".tar.gz"))
+       (sha256
+        (base32 "04lbh07nlxhpp03gl20f9w8hxjb2vzlb7w85y9w6q12i749y5s99"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Tie-Simple")
+    (synopsis "Variable ties made much easier")
+    (description
+     "This module adds the ability to quickly create new types of tie objects
+without creating a complete class.  It does so in such a way as to try and
+make the programmers life easier when it comes to single-use ties that I find
+myself wanting to use from time-to-time.
+
+The Tie::Simple package is actually a front-end to other classes which really
+do all the work once tied, but this package does the dwimming to automatically
+figure out what you're trying to do.")
+    (license license:perl-license)))
 
 (define-public perl-tie-toobject
   (package
@@ -9949,14 +10379,14 @@ rounded or exact terms.")
 (define-public perl-time-duration-parse
   (package
     (name "perl-time-duration-parse")
-    (version "0.14")
+    (version "0.15")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
                            "Time-Duration-Parse-" version ".tar.gz"))
        (sha256
-        (base32 "17nh73r50mqqpgxdf3zpgdiqrizmjy0vdk0zd6xi9zcsdijrdhnc"))))
+        (base32 "10g39bbrxkabbsfq4rv7f5b5x7h3jba08j4pg8gwr0b9iqx19n31"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-time-duration" ,perl-time-duration)))
@@ -9971,7 +10401,7 @@ duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
 (define-public perl-time-hires
   (package
     (name "perl-time-hires")
-    (version "1.9760")
+    (version "1.9764")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -9979,19 +10409,19 @@ duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0avh25m5ffsqc2xnfczvlnlbfbisw5wjq9d3w0j01h9byjzrif1c"))))
+                "1cfp078spid9z5g7xiswkpkjbkh4mkjvarz25wgwvdxzhxavwhcq"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Time-HiRes")
-    (synopsis "High resolution alarm, sleep, gettimeofday, interval timers")
+    (synopsis "High-resolution alarm, sleep, gettimeofday, and interval timers")
     (description "This package implements @code{usleep}, @code{ualarm}, and
 @code{gettimeofday} for Perl, as well as wrappers to implement @code{time},
 @code{sleep}, and @code{alarm} that know about non-integral seconds.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-time-local
   (package
     (name "perl-time-local")
-    (version "1.28")
+    (version "1.30")
     (source
      (origin
        (method url-fetch)
@@ -9999,7 +10429,7 @@ duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
                            "Time-Local-" version ".tar.gz"))
        (sha256
         (base32
-         "03p1mxk75vmmi4l0ibpd05b6hncbh8afjhvss87vpp4rrkjvjy4j"))))
+         "1jr0i57jqm0spdd98gp5mzdnrqdyf7rls0ygwb9ldfc655mlyx67"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Time-Local")
     (synopsis "Efficiently compute time from local and GMT time")
@@ -10029,7 +10459,7 @@ the system epoch.")
 functions with implementations that return objects.  It does so in a
 backwards-compatible manner, so that using these functions as documented will
 still work as expected.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-timedate
   (package
@@ -10136,7 +10566,7 @@ Tree::Simple::Visitor::* objects.")
     (description "This module provides bare bones try/catch/finally statements
 that are designed to minimize common mistakes with eval blocks, and nothing
 else.")
-    (license x11)))
+    (license license:x11)))
 
 (define-public perl-type-tie
   (package
@@ -10216,7 +10646,7 @@ be used with Moose, Mouse and Moo (or none of the above).")
 provide faster, C-based implementations of some type constraints.  This
 package has only core dependencies, and does not depend on @code{Type::Tiny},
 so other data validation frameworks might also consider using it.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-types-path-tiny
   (package
@@ -10241,7 +10671,7 @@ so other data validation frameworks might also consider using it.")
 etc.  It handles two important types of coercion: coercing objects with
 overloaded stringification, and coercing to absolute paths.  It also can check
 to ensure that files or directories exist.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-types-serialiser
   (package
@@ -10321,7 +10751,7 @@ common serialisation formats such as JSON or CBOR.")
 Unicode data.")
     ;; The file Unicode/Collate/allkeys.txt is released under the Expat
     ;; license.
-    (license (list (package-license perl) expat))))
+    (license (list (package-license perl) license:expat))))
 
 (define-public perl-unicode-linebreak
   (package
@@ -10458,7 +10888,7 @@ having to write a single line of XS.")
 (define-public perl-xml-writer
   (package
     (name "perl-xml-writer")
-    (version "0.625")
+    (version "0.900")
     (source
      (origin
        (method url-fetch)
@@ -10468,7 +10898,7 @@ having to write a single line of XS.")
              ".tar.gz"))
        (sha256
         (base32
-         "1gjzs570i67ywbv967g8ylb5sg59clwmyrl2yix3jl70dhn55070"))))
+         "07qd806kcs7si7qakx3x5p68xq2jdmkxdrns987kaayg7syzbj3k"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/XML-Writer")
     (synopsis "Easily generate well-formed, namespace-aware XML")
@@ -10480,7 +10910,7 @@ that there is exactly one document element, and that there are not duplicate
 attribute names.")
     ;; Redistribution and use in source and compiled forms, with or without
     ;; modification, are permitted under any circumstances.  No warranty.
-    (license public-domain)))
+    (license license:public-domain)))
 
 (define-public perl-xs-object-magic
   (package
@@ -10510,14 +10940,14 @@ neither visible nor modifiable from Perl space).")
 (define-public perl-yaml
   (package
     (name "perl-yaml")
-    (version "1.29")
+    (version "1.30")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TI/TINITA/"
                            "YAML-" version ".tar.gz"))
        (sha256
-        (base32 "0gl5ssvrdajlbc85cy6z873n9cwlssk5q8z97a31vyiikhw5fp4w"))))
+        (base32 "1kbrfksjg4k4vmx1i337m5n69m00m0m5bgsh61c15bzzrgbacc2h"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-yaml" ,perl-test-yaml)))
@@ -10530,7 +10960,7 @@ on the YAML 1.0 specification.")
 (define-public perl-yaml-libyaml
   (package
     (name "perl-yaml-libyaml")
-    (version "0.80")
+    (version "0.82")
     (source
      (origin
        (method url-fetch)
@@ -10538,14 +10968,14 @@ on the YAML 1.0 specification.")
              "mirror://cpan/authors/id/T/TI/TINITA/YAML-LibYAML-"
              version ".tar.gz"))
        (sha256
-        (base32 "1nhn4w52kpq757rxl052f61h36rdzsy416k740m3fy5ih7axhq4x"))))
+        (base32 "0j7yhxkaasccynl5iq1cqpf4x253p4bi5wsq6qbwwv2wjsiwgd02"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/YAML-LibYAML")
     (synopsis "Perl YAML Serialization using XS and libyaml")
     (description
      "@code{YAML::XS} is a Perl XS binding to libyaml which offers Perl the
 best YAML support to date.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-yaml-tiny
   (package
@@ -10595,7 +11025,7 @@ and memory overhead.")
     (description
      "@code{Parse::RecDescent} can incrementally generate top-down
 recursive-descent text parsers from simple yacc-like grammar specifications.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-parse-yapp
   (package
@@ -10745,14 +11175,14 @@ files, using JSON::PP and/or CPAN::Meta::YAML.")
 (define-public perl-scalar-list-utils
   (package
     (name "perl-scalar-list-utils")
-    (version "1.53")
+    (version "1.56")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
                            "Scalar-List-Utils-" version ".tar.gz"))
        (sha256
-        (base32 "16dfpnrcf5846j998rdd6gra16m9030rnz9fpsh1hfzvcsq8ch5x"))))
+        (base32 "0nxb29x7i2w6kjxq188n131b56bsqj1ykrxjcjp6sgpv81ym7f0m"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Scalar-List-Utils")
     (synopsis "Common Scalar and List utility subroutines")
@@ -10762,6 +11192,79 @@ really be high enough to warrant the use of a keyword, and the size so small
 such that being individual extensions would be wasteful.")
     (license (package-license perl))))
 
+(define-public perl-sdl
+  (package
+    (name "perl-sdl")
+    (version "2.548")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FR/FROGGS/"
+                           "SDL-" version ".tar.gz"))
+       (sha256
+        (base32 "1dagpmcpjnwvd4g6mmnc312rqpd4qcwx21rpi2j7084wz8mijai5"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-alien-sdl" ,perl-alien-sdl)
+       ("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-file-sharedir" ,perl-file-sharedir)
+       ("perl-module-build" ,perl-module-build)
+       ("perl-test-most" ,perl-test-most)
+       ("perl-tie-simple" ,perl-tie-simple)))
+    (inputs
+     `(("freeglut" ,freeglut)
+       ("libjpeg" ,libjpeg-turbo)
+       ("libpng" ,libpng)
+       ("libsmpeg" ,libsmpeg)
+       ("libtiff" ,libtiff)
+       ("mesa" ,mesa)
+       ("sdl" ,(sdl-union
+                (list sdl sdl-gfx sdl-image sdl-mixer sdl-pango sdl-ttf)))))
+    (propagated-inputs
+     `(("perl-file-sharedir" ,perl-file-sharedir)
+       ("perl-tie-simple" ,perl-tie-simple)))
+    (home-page "https://metacpan.org/release/SDL")
+    (synopsis "SDL bindings to Perl")
+    (description
+     "SDL Perl is a package of Perl modules that provide both functional and
+object oriented interfaces to the Simple DirectMedia Layer for Perl5.  This
+package takes some liberties with the SDL API, and attempts to adhere to the
+spirit of both the SDL and Perl.")
+    (license license:lgpl2.1)))
+
+(define-public perl-sgmls
+  (package
+    (name "perl-sgmls")
+    (version "1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/R/RA/RAAB/SGMLSpm-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1gdjf3mcz2bxir0l9iljxiz6qqqg3a9gg23y5wjg538w552r432m"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'install 'wrap-script
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (site (string-append out "/lib/perl5/site_perl")))
+                        (with-directory-excursion out
+                          (rename-file "bin/sgmlspl.pl" "bin/sgmlspl")
+                          (wrap-program "bin/sgmlspl"
+                            `("PERL5LIB" suffix (,site))))
+                        #t))))))
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (home-page "https://metacpan.org/release/RAAB/SGMLSpm-1.1")
+    (synopsis "Perl module for processing SGML parser output")
+    (description "This package contains @code{SGMLS.pm}, a perl5 class library
+for parsing the output from an SGML parser such as OpenSP.  It also includes
+the @command{sgmlspl} command, an Perl script showcasing how the library can
+be used.")
+    (license license:gpl2+)))
+
 (define-public perl-shell-command
   (package
     (name "perl-shell-command")
@@ -10811,7 +11314,7 @@ such that being individual extensions would be wasteful.")
     "Object-oriented File::Find replacement in Perl")
   (description "File::Find::Object is an object-oriented
 File::Find replacement in Perl.")
-  (license artistic2.0)))
+  (license license:artistic2.0)))
 
 (define-public perl-file-find-object-rule
  (package
@@ -10872,7 +11375,7 @@ object's options and steps, and then adds the new step, returning the new
 object.  In this manner, an object can be grown, step by step, by chaining
 method calls.  Furthermore, a partial sequence can be created and held, and
 used as the head of many different sequences.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-font-ttf
   (package
@@ -10896,7 +11399,7 @@ font hacking.  It supports reading, processing and writing of the following
 tables: GDEF, GPOS, GSUB, LTSH, OS/2, PCLT, bsln, cmap, cvt, fdsc, feat,
 fpgm, glyf, hdmx, head, hhea, hmtx, kern, loca, maxp, mort, name, post, prep,
 prop, vhea, vmtx and the reading and writing of all other table types.")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
 
 (define-public perl-libtime-parsedate
   (package
@@ -10937,7 +11440,7 @@ prop, vhea, vmtx and the reading and writing of all other table types.")
     ;;   "License hereby granted for anyone to use, modify or redistribute this
     ;;   module at their own risk. Please feed useful changes back to
     ;;   cpan@dave.sharnoff.org."
-    (license (non-copyleft "http://metadata.ftp-master.debian.org/\
+    (license (license:non-copyleft "http://metadata.ftp-master.debian.org/\
 changelogs/main/libt/libtime-parsedate-perl/\
 libtime-parsedate-perl_2015.103-2_copyright"))))
 
@@ -10966,7 +11469,7 @@ time periods allows you to test for conditions like \"Monday to Friday, 9am
 till 5pm\" and \"on the second Tuesday of the month\" and \"between 4pm and
 4:15pm\" and \"in the first half of each minute\" and \"in January of
 1998\".")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-path-iterator-rule
   (package
@@ -11015,7 +11518,7 @@ A summary of features for comparison to other file finding modules:
 
 As a convenience, the PIR module is an empty subclass of this one that is less
 arduous to type for one-liners.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public perl-pod-constants
   (package
@@ -11041,7 +11544,34 @@ Pod::Constants uses Pod::Parser to do the parsing of the source file.  It has
 to open the source file it is called from, and does so directly either by
 lookup in %INC or by assuming it is $0 if the caller is @code{main}
 (or it can't find %INC{caller()}).")
-    (license artistic2.0)))
+    (license license:artistic2.0)))
+
+(define-public perl-text-soundex
+  (package
+    (name "perl-text-soundex")
+    (version "3.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/Text-Soundex-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1vb0vg1109gfzaak74ynw5s00ml28f33j612g2lxw98b52s5bpgn"))))
+    (build-system perl-build-system)
+    (home-page
+     "https://metacpan.org/release/Text-Soundex")
+    (synopsis "Implementation of the soundex algorithm.")
+    (description "Soundex is a phonetic algorithm for indexing names by sound,
+as pronounced in English.  The goal is for names with the same pronunciation to
+be encoded to the same representation so that they can be matched despite
+minor differences in spelling.
+
+This module implements the original soundex algorithm developed by Robert
+Russell and Margaret Odell, patented in 1918 and 1922, as well as a variation
+called \"American Soundex\" used for US census data, and current maintained by
+the National Archives and Records Administration (NARA).")
+    (license license:perl-license)))
 
 (define-public perl-regexp-pattern
   (package
@@ -11087,4 +11617,4 @@ regexp patterns in modules.")
     (synopsis "Parse Lisp S-Expressions into Perl data structures")
     (description "Data::SExpression parses Lisp S-Expressions into Perl data
 structures.")
-    (license perl-license)))
+    (license license:perl-license)))