aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/perl.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/perl.scm')
-rw-r--r--gnu/packages/perl.scm506
1 files changed, 503 insertions, 3 deletions
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 20c927c7c4..6999946fe9 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; 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, 2021, 2022 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>
@@ -32,6 +32,9 @@
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
+;;; Copyright © 2022 gemmaro <gemmaro.dev@gmail.com>
+;;; Copyright © 2023 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -71,6 +74,7 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages hurd)
#:use-module (gnu packages image)
+ #:use-module (gnu packages language)
#:use-module (gnu packages less)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl-check)
@@ -330,6 +334,74 @@ administration, web development, network programming, GUI development, and
more.")
(license license:gpl1+)))
+(define-public perl-5.6
+ (package
+ (inherit perl-5.14)
+ (name "perl")
+ (version "5.6.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://www.cpan.org/src/5.0/perl-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0khk94gvc8qkwxdb98khmxbwxxdbhap7rxb9ymkha6vhpxp6zrm5"))))
+ (properties `((release-date . "2003-11-15")
+ (hidden? . #t))) ;only for GHC 4.
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (libc (assoc-ref inputs "libc")))
+ ;; Use the right path for `pwd'.
+ (substitute* "lib/Cwd.pm"
+ (("/bin/pwd")
+ (which "pwd")))
+
+ (invoke "./Configure"
+ (string-append "-Dprefix=" out)
+ (string-append "-Dman1dir=" out "/share/man/man1")
+ (string-append "-Dman3dir=" out "/share/man/man3")
+ "-de" "-Dcc=gcc"
+ "-Uinstallusrbinperl"
+ "-Dinstallstyle=lib/perl5"
+ "-Duseshrplib"
+ (string-append "-Dlocincpth=" libc "/include")
+ (string-append "-Dloclibpth=" libc "/lib")
+
+ ;; Force the library search path to contain only libc
+ ;; because it is recorded in Config.pm and
+ ;; Config_heavy.pl; we don't want to keep a reference
+ ;; to everything that's in $LIBRARY_PATH at build
+ ;; time (Binutils, bzip2, file, etc.)
+ (string-append "-Dlibpth=" libc "/lib")
+ (string-append "-Dplibpth=" libc "/lib")))))
+ (add-after 'configure 'bleh
+ (lambda _
+ (substitute* '("makefile"
+ "x2p/makefile")
+ ((".*\\<command-line>.*") ""))
+ ;; Don't look for /usr/include/errno.h.
+ (substitute* "ext/Errno/Errno_pm.PL"
+ (("O eq 'linux'") "O eq 'loonix'"))
+ (substitute* "ext/IPC/SysV/SysV.xs"
+ ((".*asm/page.h.*") ""))))
+ (add-before 'strip 'make-shared-objects-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The 'lib/perl5' directory contains ~50 MiB of .so. Make them
+ ;; writable so that 'strip' actually strips them.
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib")))
+ (for-each (lambda (dso)
+ (chmod dso #o755))
+ (find-files lib "\\.so$"))))))))
+ (native-inputs
+ (list gcc-5))))
+
(define-public perl-algorithm-c3
(package
(name "perl-algorithm-c3")
@@ -1829,14 +1901,14 @@ as defined by two typical specimens of Perl coders.")
(define-public perl-conf-libconfig
(package
(name "perl-conf-libconfig")
- (version "0.100")
+ (version "0.101")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/C/CN/CNANGEL/"
"Conf-Libconfig-" version ".tar.gz"))
(sha256
- (base32 "0qdypqd7mx96bwdjlv13fn6p96bs4w0yv94yv94xa7z5lqkdj4rg"))))
+ (base32 "11dd3kb0k45gqahnnwz50x3b4b25c5jgykkwgf74rcyr0dsy0n5a"))))
(build-system perl-build-system)
(native-inputs
(list perl-extutils-pkgconfig perl-test-deep perl-test-exception
@@ -2007,6 +2079,33 @@ of the style used by the Git version control system.")
and writing of @code{.ini}-style configuration files.")
(license (package-license perl))))
+(define-public perl-config-tiny
+ (package
+ (name "perl-config-tiny")
+ (version "2.28")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/R/RS/RSAVAGE/Config-Tiny-"
+ version ".tgz"))
+ (sha256
+ (base32
+ "000mw17nb7aj341s0afqimxd53w5y0c4yk61pihqzm191lx89pqj"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-test-pod))
+ (home-page "https://metacpan.org/release/Config-Tiny")
+ (synopsis "Read/Write .ini style files with as little code as possible")
+ (description
+ "@code{Config::Tiny} is a Perl class to read and write .ini
+style configuration files with as little code as possible, reducing load time
+and memory overhead.
+
+This module is primarily for reading human written files, and anything we write
+shouldn't need to have documentation/comments. If you need something with more
+power move up to @code{Config::Simple}, @code{Config::General} or one of the
+many other @code{Config::*} modules.")
+ (license license:perl-license)))
+
(define-public perl-const-fast
(package
(name "perl-const-fast")
@@ -2165,6 +2264,51 @@ CPAN::Meta object are present.")
versa.")
(license (package-license perl))))
+(define-public perl-critic
+ (package
+ (name "perl-critic")
+ (version "1.140")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/P/PE/PETDANCE/Perl-Critic-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1nzxpn71mrpp85yxrxlraj52q2skvf9ja887ls11d57h6smg1vmz"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-module-build perl-test-deep))
+ (propagated-inputs (list perltidy
+ perl-exception-class
+ perl-io-string
+ perl-ppi
+ perl-ppix-regexp
+ perl-b-keywords
+ perl-config-tiny
+ perl-padwalker
+ perl-test-memory-cycle
+ perl-file-which
+ perl-list-moreutils
+ perl-module-pluggable
+ perl-pod-parser
+ perl-pod-spell
+ perl-ppix-quotelike
+ perl-ppix-utilities
+ perl-readonly
+ perl-string-format
+ perl-task-weaken))
+ (home-page "https://metacpan.org/release/Perl-Critic")
+ (synopsis "Critique Perl source code for best-practices")
+ (description
+ "@code{perlcritic} is a Perl source code analyzer. It is the
+executable front-end to the @code{Perl::Critic} engine, which attempts to
+identify awkward, hard to read, error-prone, or unconventional constructs in
+your code. Most of the rules are based on Damian Conway's book \"Perl Best
+Practices\". However, @code{perlcritic} is not limited to enforcing PBP, and it
+will even support rules that contradict Conway. All rules can easily be
+configured or disabled to your liking.")
+ (license license:perl-license)))
+
(define-public perl-crypt-cbc
(package
(name "perl-crypt-cbc")
@@ -5064,6 +5208,27 @@ Linux, fsevents on OS X, @code{kqueue} on FreeBSD, and
back to a full directory scan if none of these are available.")
(license license:perl-license)))
+(define-public perl-getopt-argvfile
+ (package
+ (name "perl-getopt-argvfile")
+ (version "1.11")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/J/JS/JSTENZEL/Getopt-ArgvFile-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "08jvhfqcjlsn013x96qa6paif0095x6y60jslp8p3zg67i8sl29p"))))
+ (build-system perl-build-system)
+ (home-page "https://metacpan.org/release/Getopt-ArgvFile")
+ (synopsis "Perl module for reading script options and parameters from files")
+ (description "This module simply interpolates option file hints in @code{@@ARGV}
+by the contents of the pointed files. This enables option reading from files instead
+of or additional to the usual reading from the command line.")
+ (license license:artistic2.0)))
+
(define-public perl-getopt-long
(package
(name "perl-getopt-long")
@@ -6106,6 +6271,18 @@ expression and a list of abbreviations (built in and given).")
(base32
"1qgap0j0ixmif309dvbqca7sy8xha9xgnj9s2lvh8qrczkc92gqi"))))
(build-system perl-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'wrap-translit
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out")))
+ (wrap-program (string-append out "/bin/translit")
+ `("PERL5LIB" ":" prefix
+ (,(getenv "PERL5LIB")
+ ,(string-append out "/lib/perl5/site_perl"))))))))))
+ (inputs (list bash-minimal))
(home-page "https://metacpan.org/release/Lingua-Translit")
(synopsis "Transliterate text between writing systems")
(description "@code{Lingua::Translit} can be used to convert text from one
@@ -6431,6 +6608,30 @@ follows LRU semantics, that is, the last n results, where n is specified as
the argument to the CACHESIZE parameter, will be cached.")
(license (package-license perl))))
+(define-public perl-memory-usage
+ (package
+ (name "perl-memory-usage")
+ (version "0.201")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/D/DO/DONEILL/Memory-Usage-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0jakrq9yk2njzc5qhbgvp7fi933ir903w3wc3kl4i9s03v9glalg"))))
+ (build-system perl-build-system)
+ (native-inputs
+ (list perl-module-install
+ perl-test-pod
+ perl-test-pod-coverage))
+ (home-page "https://metacpan.org/release/Memory-Usage")
+ (synopsis "Tools to determine actual memory usage")
+ (description
+ "This module lets you attempt to measure, from your operating system's
+perspective, how much memory a process is using at any given time.")
+ (license license:perl-license)))
+
(define-public perl-mime-base64
(package
(name "perl-mime-base64")
@@ -8613,6 +8814,34 @@ the @dfn{Pod} (plain old documentation) markup language that is typically
used for writing documentation for Perl and for Perl modules.")
(license (package-license perl))))
+(define-public perl-pod-spell
+ (package
+ (name "perl-pod-spell")
+ (version "1.25")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/H/HA/HAARG/Pod-Spell-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "18wzpfn39hpw6n8g9pwh964nid8skks79i5jdcm33gf9kf5qx3r0"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-file-sharedir-install))
+ (propagated-inputs (list perl-class-tiny perl-file-sharedir
+ perl-lingua-en-inflect))
+ (home-page "https://metacpan.org/release/Pod-Spell")
+ (synopsis "Formatter for spellchecking Pod")
+ (description
+ "@code{Pod::Spell} is a Pod formatter whose output is good
+for spellchecking.
+
+@code{Pod::Spell} is rather like @code{Pod::Text}, except that it doesn't put
+much effort into actual formatting, and it suppresses things that look like Perl
+symbols or Perl jargon (so that your spellchecking program won't complain about
+mystery words like \"@code{$thing}\" or \"@code{Foo::Bar}\" or \"@code{hashref}\").")
+ (license license:artistic2.0)))
+
(define-public perl-posix-strftime-compiler
(package
(name "perl-posix-strftime-compiler")
@@ -8661,6 +8890,80 @@ applications.")
code.")
(license license:perl-license)))
+(define-public perl-ppix-regexp
+ (package
+ (name "perl-ppix-regexp")
+ (version "0.085")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/W/WY/WYANT/PPIx-Regexp-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "07fg63ql3f7hv1ys10l8j0p562ndraq9lk66iw9y0f444j4vpw1f"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-module-build))
+ (propagated-inputs (list perl-ppi))
+ (home-page "https://metacpan.org/release/PPIx-Regexp")
+ (synopsis "Parse Perl string literals and string-literal-like things")
+ (description
+ "The purpose of the @code{PPIx-Regexp} package is to parse
+regular expressions in a manner similar to the way the @code{PPI} package parses
+Perl. This class forms the root of the parse tree, playing a role similar to
+@code{PPI::Document}.")
+ (license license:perl-license)))
+
+(define-public perl-ppix-quotelike
+ (package
+ (name "perl-ppix-quotelike")
+ (version "0.023")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/W/WY/WYANT/PPIx-QuoteLike-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "08ad4d20afvi1c4xzwbfk94lmf6gwlmqkdrpjxzf0lrcklaa6xim"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-module-build))
+ (propagated-inputs (list perl-ppi perl-ppix-regexp perl-readonly))
+ (home-page "https://metacpan.org/release/PPIx-QuoteLike")
+ (synopsis "Parse Perl string literals and string-literal-like things")
+ (description
+ "@code{PPIX::QuoteLike} parses Perl string literals and things that
+are reasonably like string literals. Its real reason for being is to find
+interpolated variables for @code{Perl::Critic} policies and similar code.")
+ (license license:perl-license)))
+
+(define-public perl-ppix-utilities
+ (package
+ (name "perl-ppix-utilities")
+ (version "1.001000")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/E/EL/ELLIOTJS/PPIx-Utilities-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "16yb7dnz8lgq2azs8jxj1wac60kbn16x8y4py04ci8nndww87903"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-module-build perl-test-deep))
+ (propagated-inputs (list perl-exception-class perl-ppi perl-readonly-xs
+ perl-task-weaken))
+ (home-page "https://metacpan.org/release/PPIx-Utilities")
+ (synopsis "Extensions to PPI")
+ (description
+ "@code{PPIx::Utilities} is a collection of functions for dealing
+with @code{PPI} objects, many of which originated in @code{Perl::Critic}. They
+are organized into modules by the kind of @code{PPI} class they relate to, by
+replacing the \"@code{PPI}\" at the front of the module name with
+\"@code{PPIx::Utilities}\", e.g. functionality related to @code{PPI::Nodes} is
+in @code{PPIx::Utilities::Node}.")
+ (license license:perl-license)))
+
(define-public perl-probe-perl
(package
(name "perl-probe-perl")
@@ -8729,6 +9032,38 @@ can also be useful as a development and debugging tool for catching updates to
variables that should not be changed.")
(license (package-license perl))))
+(define-public perl-readonly-xs
+ (package
+ (name "perl-readonly-xs")
+ (version "1.05")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/R/RO/ROODE/Readonly-XS-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "03gz7yp194fwah2bc36ww04hgw1qx8p6y68vvnywircrablc9rca"))))
+ (build-system perl-build-system)
+ (propagated-inputs (list perl-readonly))
+ (home-page "https://metacpan.org/release/Readonly-XS")
+ (synopsis "Companion module for @code{Readonly.pm}, to speed up read-only
+scalar variables")
+ (description
+ "The @code{Readonly} module is an effective way to create non-modifiable
+variables. However, it's relatively slow.
+
+The reason it's slow is that is implements the read-only-ness of variables via
+tied objects. This mechanism is inherently slow. Perl simply has to do a lot
+of work under the hood to make tied variables work.
+
+This module corrects the speed problem, at least with respect to scalar
+variables. When @code{Readonly::XS} is installed, @code{Readonly} uses it to
+access the internals of scalar variables. Instead of creating a scalar variable
+object and tying it, @code{Readonly} simply flips the @code{SvREADONLY} bit in
+the scalar's @code{FLAGS} structure.")
+ (license license:perl-license)))
+
(define-public perl-ref-util-xs
(package
(name "perl-ref-util-xs")
@@ -8774,6 +9109,30 @@ codes.")
;; Quad-licensed: Perl Artistic, Perl Artistic 2.0, X11, and BSD.
(license (list (package-license perl) license:x11 license:bsd-3))))
+(define-public perl-regexp-grammars
+ (package
+ (name "perl-regexp-grammars")
+ (version "1.058")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/D/DC/DCONWAY/Regexp-Grammars-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "14hwskrmy6ma0k9nr1amrf7wpb1f6jsx7x29kgizlx0n4n7db27a"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-module-build perl-test-pod perl-moose))
+ (home-page "https://metacpan.org/release/Regexp-Grammars")
+ (synopsis "Complete recursive descent parser on Perl's regex engine")
+ (description
+ "The @code{Regexp::Grammars} module adds a small number of new
+regex constructs that can be used within Perl 5.10 patterns to implement
+complete recursive-descent parsing. It allows you to go beyond matching
+complex, nested and recursive structures, and allows you to parse and extract
+hierarchical data from it.")
+ (license license:perl-license)))
+
(define-public perl-regexp-util
(package
(name "perl-regexp-util")
@@ -9307,6 +9666,30 @@ expanding standard C/Unix-style backslash escapes like \n and \t, wrapping and
removing double-quotes, and truncating to fit within a desired length.")
(license (package-license perl))))
+(define-public perl-string-format
+ (package
+ (name "perl-string-format")
+ (version "1.18")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/S/SR/SREZIC/String-Format-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0y77frxzjifd4sw0j19cc346ysas1mya84rdxaz279lyin7plhcy"))))
+ (build-system perl-build-system)
+ (home-page "https://metacpan.org/release/String-Format")
+ (synopsis "Format sprintf-like strings with arbitrary format definitions")
+ (description
+ "@code{String::Format} lets you define arbitrary printf-like format
+sequences to be expanded. This module would be most useful in configuration
+files and reporting tools, where the results of a query need to be formatted in
+a particular way. It was inspired by
+@url{http://www.mutt.org/doc/manual/manual.html#index-format,mutt's
+@code{index_format} and related directives}.")
+ (license license:gpl2)))
+
(define-public perl-string-formatter
(package
(name "perl-string-formatter")
@@ -9638,6 +10021,30 @@ mechanism. The module augments the standard Perl syntax with two new
statements: @code{switch} and @code{case}.")
(license (package-license perl))))
+(define-public perl-syntax-keyword-try
+ (package
+ (name "perl-syntax-keyword-try")
+ (version "0.28")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/P/PE/PEVANS/Syntax-Keyword-Try-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1j02z9w0p9a77maf62cy5324vmc01hks0bfm5qjidc50hafmzbfc"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-module-build))
+ (inputs (list perl-xs-parse-keyword))
+ (home-page "https://metacpan.org/pod/Syntax::Keyword::Try")
+ (synopsis "Try/catch/finally syntax for perl")
+ (description
+ "This module provides a syntax plugin that implements
+exception-handling semantics in a form familiar to users of other
+languages, being built on a block labeled with the @code{try} keyword,
+followed by at least one of a @code{catch} or @code{finally} block.")
+ (license (package-license perl))))
+
(define-public perl-sys-cpu
(package
(name "perl-sys-cpu")
@@ -10113,6 +10520,27 @@ used to justify strings to various alignment styles.")
text sequences from strings.")
(license (package-license perl))))
+(define-public perl-text-charwidth
+ (package
+ (name "perl-text-charwidth")
+ (version "0.04")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/K/KU/KUBOTA/Text-CharWidth-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1y040wiqx78pnr0wxbjhpzjxm2a9qiqq479gzn4qwcyrzpsdbpmb"))))
+ (build-system perl-build-system)
+ (home-page "https://metacpan.org/dist/Text-CharWidth")
+ (synopsis "Get number of occupied columns of a string on terminal")
+ (description
+ "With this module, you can calculate terminal character
+widths that vary by locale. This module supplies features similar to
+wcwidth(3) and wcswidth(3) in C language.")
+ (license (package-license perl))))
+
(define-public perl-text-csv
(package
(name "perl-text-csv")
@@ -11201,6 +11629,28 @@ supersede Perl's builtin @code{T_PTROBJ} with something that is extensible
neither visible nor modifiable from Perl space).")
(license (package-license perl))))
+(define-public perl-xs-parse-keyword
+ (package
+ (name "perl-xs-parse-keyword")
+ (version "0.06")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/P/PE/PEVANS/XS-Parse-Keyword-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0nnr8akkxb2h2y3d5r51pr84vvxkq89ynmi9azkbnn79jmbcbgvq"))))
+ (build-system perl-build-system)
+ (native-inputs (list perl-module-build perl-test-simple))
+ (home-page "https://metacpan.org/dist/XS-Parse-Keyword")
+ (synopsis "XS functions to assist in parsing keyword syntax")
+ (description
+ "This module provides some XS functions to assist in writing
+syntax modules that provide new perl-visible syntax, primarily for authors of
+keyword plugins using the @code{PL_keyword_plugin} hook mechanism.")
+ (license (package-license perl))))
+
(define-public perl-yaml
(package
(name "perl-yaml")
@@ -11640,6 +12090,28 @@ method calls. Furthermore, a partial sequence can be created and held, and
used as the head of many different sequences.")
(license license:perl-license)))
+(define-public perl-file-fcntllock
+ (package
+ (name "perl-file-fcntllock")
+ (version "0.22")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/J/JT/JTT/File-FcntlLock-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1pxwknq4lw0wqpkh8pf18qsjf9g503vx6a5184vvffprzwpbp6ls"))))
+ (build-system perl-build-system)
+ (home-page "https://metacpan.org/release/File-FcntlLock")
+ (synopsis "File locking with fcntl(2)")
+ (description "File locking in Perl is usually done using the @code{flock}
+function. Unfortunately, this only allows locks on whole files and is often
+implemented in terms of the @code{flock(2)} system function which has some
+shortcomings (especially concerning locks on remotely mounted file systems)
+and slightly different behaviour than @code{fcntl(2)}.")
+ (license license:perl-license)))
+
(define-public perl-font-ttf
(package
(name "perl-font-ttf")
@@ -11832,6 +12304,34 @@ 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-text-wrapi18n
+ (package
+ (name "perl-text-wrapi18n")
+ (version "0.06")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/K/KU/KUBOTA/Text-WrapI18N-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "12548qc99ms12yp5j26076p0zazjfv1b618h5k8r5iy2y0brmljb"))))
+ (build-system perl-build-system)
+ (inputs (list perl-text-charwidth))
+ (home-page "https://metacpan.org/pod/Text::WrapI18N")
+ (synopsis "Line wrapping for multibyte, fullwidth, combining
+characters and so on")
+ (description
+ "This module intends to be a better Text::Wrap module. This
+module is needed to support multibyte character encodings such as UTF-8,
+EUC-JP, EUC-KR, GB2312, and Big5. This module also supports characters with
+irregular widths, such as combining characters (which occupy zero columns on
+terminal, like diacritical marks in UTF-8) and fullwidth characters (which
+occupy two columns on terminal, like most of east Asian characters). Also,
+minimal handling of languages which doesn't use whitespaces between
+words (like Chinese and Japanese) is supported.")
+ (license (package-license perl))))
+
(define-public perl-regexp-pattern
(package
(name "perl-regexp-pattern")