PERLTOC(1)

โœจ NAME โœจ

perltoc โ€” perl documentation table of contents ๐Ÿ’–

(straight outta the Perl Programmers Reference Guide, bestie ๐Ÿ‘‘)


๐ŸŽ€ DESCRIPTION ๐ŸŽ€

okay so picture this: this page is literally a table of contents for the entire rest of the Perl documentation set. that's it. that's the whole job. ๐Ÿ’…

it's built to be scanned fast or grepped through so you can locate the exact section you're looking for instead of doom-scrolling through 400 pages of POD. it's giving search-engine-for-the-docs energy. no cap. ๐Ÿ”ฅ


๐Ÿ“š BASIC DOCUMENTATION ๐Ÿ“š

๐Ÿช perl โ€” The Perl 5 language interpreter

SYNOPSIS

GETTING HELP

  • Overview
  • Tutorials
  • Reference Manual
  • Internals and C Language Interface
  • History
  • Miscellaneous
  • Language-Specific
  • Platform-Specific
  • Stubs for Deleted Documents

DESCRIPTION

AVAILABILITY

ENVIRONMENT

AUTHOR

FILES

SEE ALSO

DIAGNOSTICS

BUGS

NOTES


๐ŸŒธ perlintro โ€” a brief introduction and overview of Perl

DESCRIPTION

  • What is Perl?
  • Running Perl programs
  • Safety net
  • Basic syntax overview
  • Perl variable types
    • Scalars, Arrays, Hashes
  • Variable scoping
  • Conditional and looping constructs
    • if, while, for, foreach
  • Builtin operators and functions
    • Arithmetic, Numeric comparison, String comparison, Boolean logic, Miscellaneous
  • Files and I/O
  • Regular expressions
    • Simple matching, Simple substitution, More complex regular expressions, Parentheses for capturing, Other regexp features
  • Writing subroutines
  • OO Perl
  • Using Perl modules

AUTHOR


โš™๏ธ perlrun โ€” how to execute the Perl interpreter

SYNOPSIS

DESCRIPTION

  • #! and quoting on non-Unix systems
    • OS/2, MS-DOS, Win95/NT, VMS
  • Location of Perl
  • Command Switches
    • -0[octal/hexadecimal]
    • -a
    • -C [number/list]
    • -c
    • -d
    • -dt
    • -d:MOD[=bar,baz]
    • -dt:MOD[=bar,baz]
    • -Dletters
    • -Dnumber
    • -e commandline
    • -E commandline
    • -f
    • -Fpattern
    • -g
    • -h
    • -?
    • -i[extension]
    • -Idirectory
    • -l[octnum]
    • -m[-]module
    • -M[-]module
    • -M[-]'module ...'
    • -[mM][-]module=arg[,arg]...
    • -n
    • -p
    • -s
    • -S
    • -t
    • -T
    • -u
    • -U
    • -v
    • -V
    • -V:configvar
    • -w
    • -W
    • -X
    • -x
    • -xdirectory

ENVIRONMENT

  • HOME
  • LOGDIR
  • PATH
  • PERL5LIB
  • PERL5OPT
  • PERLIO
  • :crlf
  • :perlio
  • :stdio
  • :unix
  • PERLIO_DEBUG
  • PERLLIB
  • PERL5DB
  • PERL5DB_THREADED
  • PERL5SHELL (specific to the Win32 port)
  • PERL_ALLOW_NON_IFS_LSP (specific to the Win32 port)
  • PERL_DEBUG_MSTATS
  • PERL_DESTRUCT_LEVEL
  • PERL_DL_NONLAZY
  • PERL_ENCODING
  • PERL_HASH_SEED
  • PERL_PERTURB_KEYS
  • PERL_HASH_SEED_DEBUG
  • PERL_MEM_LOG
  • PERL_ROOT (specific to the VMS port)
  • PERL_SIGNALS
  • PERL_UNICODE
  • PERL_USE_UNSAFE_INC
  • SYS$LOGIN (specific to the VMS port)
  • PERL_INTERNAL_RAND_SEED
  • PERL_RAND_SEED

ORDER OF APPLICATION

  • -I, -M, the PERL5LIB environment variable, combinations of -I, -M and PERL5LIB, the PERL5OPT environment variable, Other complications, arch and version subdirs, sitecustomize.pl

๐Ÿ’ซ perlreftut โ€” Mark's very short tutorial about references

DESCRIPTION

Who Needs Complicated Data Structures?

The Solution

Syntax

  • Making References
  • Using References
  • An Example
  • Arrow Rule

Solution

The Rest

Summary

Credits

  • Distribution Conditions

๐Ÿ“ perldsc โ€” Perl Data Structures Cookbook

DESCRIPTION

  • arrays of arrays, hashes of arrays, arrays of hashes, hashes of hashes, more elaborate constructs

REFERENCES

COMMON MISTAKES

CAVEAT ON PRECEDENCE

WHY YOU SHOULD ALWAYS "use VERSION"

DEBUGGING

CODE EXAMPLES

ARRAYS OF ARRAYS

  • Declaration of an ARRAY OF ARRAYS
  • Generation of an ARRAY OF ARRAYS
  • Access and Printing of an ARRAY OF ARRAYS

HASHES OF ARRAYS

  • Declaration of a HASH OF ARRAYS
  • Generation of a HASH OF ARRAYS
  • Access and Printing of a HASH OF ARRAYS

ARRAYS OF HASHES

  • Declaration of an ARRAY OF HASHES
  • Generation of an ARRAY OF HASHES
  • Access and Printing of an ARRAY OF HASHES

HASHES OF HASHES

  • Declaration of a HASH OF HASHES
  • Generation of a HASH OF HASHES
  • Access and Printing of a HASH OF HASHES

MORE ELABORATE RECORDS

  • Declaration of MORE ELABORATE RECORDS
  • Declaration of a HASH OF COMPLEX RECORDS
  • Generation of a HASH OF COMPLEX RECORDS

Database Ties

SEE ALSO

AUTHOR


๐Ÿฆ‹ perllol โ€” Manipulating Arrays of Arrays in Perl

DESCRIPTION

  • Declaration and Access of Arrays of Arrays
  • Growing Your Own
  • Access and Printing
  • Slices

SEE ALSO

AUTHOR


โšก perlrequick โ€” Perl regular expressions quick start

DESCRIPTION

The Guide

  • Simple word matching
  • Using character classes
  • Matching this or that
  • Grouping things and hierarchical matching
  • Extracting matches
  • Matching repetitions
  • More matching
  • Search and replace
  • The split operator
  • "use re 'strict'"

BUGS

SEE ALSO

  • Acknowledgments

๐Ÿ”ฅ perlretut โ€” Perl regular expressions tutorial

DESCRIPTION

Part 1: The basics

  • Simple word matching
  • Using character classes
  • Matching this or that
  • Grouping things and hierarchical matching
  • Extracting matches
  • Backreferences
  • Relative backreferences
  • Named backreferences
  • Alternative capture group numbering
  • Position information
  • Non-capturing groupings
  • Matching repetitions
  • Possessive quantifiers
  • Building a regexp
  • Using regular expressions in Perl

Part 2: Power tools

  • More on characters, strings, and character classes
  • Compiling and saving regular expressions
  • Composing regular expressions at runtime
  • Embedding comments and modifiers in a regular expression
  • Looking ahead and looking behind
  • Using independent subexpressions to prevent backtracking
  • Conditional expressions
  • Defining named patterns
  • Recursive patterns
  • A bit of magic: executing Perl code in a regular expression
  • Backtracking control verbs
  • Pragmas and debugging

SEE ALSO

  • Acknowledgments

๐Ÿ‘‘ perlootut โ€” Object-Oriented Programming in Perl Tutorial

DATE

DESCRIPTION

OBJECT-ORIENTED FUNDAMENTALS

  • Object
  • Class
  • Methods
  • Attributes
  • Polymorphism
  • Inheritance
  • Encapsulation
  • Composition
  • Roles
  • When to Use OO

PERL OO SYSTEMS

  • Moose
    • Declarative sugar, Roles built-in, A miniature type system, Full introspection and manipulation, Self-hosted and extensible, Rich ecosystem, Many more features
  • Class::Accessor
  • Class::Tiny
  • Role::Tiny
  • OO System Summary
    • Moose, Class::Accessor, Class::Tiny, Role::Tiny
  • Other OO Systems

CONCLUSION


๐ŸŽ๏ธ perlperf โ€” Perl Performance and Optimization Techniques

DESCRIPTION

OVERVIEW

  • ONE STEP SIDEWAYS
  • ONE STEP FORWARD
  • ANOTHER STEP SIDEWAYS

GENERAL GUIDELINES

BENCHMARKS

  • Assigning and Dereferencing Variables
  • Search and replace or tr

PROFILING TOOLS

  • Devel::DProf
  • Devel::Profiler
  • Devel::SmallProf
  • Devel::FastProf
  • Devel::NYTProf

SORTING

  • Elapsed Real Time, User CPU Time, System CPU Time

LOGGING

  • Logging if DEBUG (constant)

POSTSCRIPT

SEE ALSO

  • PERLDOCS
  • MAN PAGES
  • MODULES
  • URLS

AUTHOR


๐ŸŽ€ perlstyle โ€” Perl style guide

DESCRIPTION


๐Ÿ—’๏ธ perlcheat โ€” Perl 5 Cheat Sheet

DESCRIPTION

  • The sheet

ACKNOWLEDGEMENTS

AUTHOR

SEE ALSO


๐Ÿชค perltrap โ€” Perl traps for the unwary

DESCRIPTION

  • Awk Traps
  • C/C++ Traps
  • JavaScript Traps
  • Sed Traps
  • Shell Traps
  • Perl Traps

๐Ÿ› perldebtut โ€” Perl debugging tutorial

DESCRIPTION

use strict

Looking at data and -w and v

help

Stepping through code

Placeholder for a, w, t, T

REGULAR EXPRESSIONS

OUTPUT TIPS

CGI

GUIs

SUMMARY

SEE ALSO

AUTHOR

CONTRIBUTORS


โ“ perlfaq โ€” Frequently asked questions about Perl

VERSION

DESCRIPTION

  • Where to find the perlfaq
  • How to use the perlfaq
  • How to contribute to the perlfaq
  • What if my question isn't answered in the FAQ?

TABLE OF CONTENTS

  • perlfaq1 - General Questions About Perl, perlfaq2 - Obtaining and Learning about Perl, perlfaq3 - Programming Tools, perlfaq4 - Data Manipulation, perlfaq5 - Files and Formats, perlfaq6 - Regular Expressions, perlfaq7 - General Perl Language Issues, perlfaq8 - System Interaction, perlfaq9 - Web, Email and Networking

THE QUESTIONS

  • perlfaq1: General Questions About Perl
  • perlfaq2: Obtaining and Learning about Perl
  • perlfaq3: Programming Tools
  • perlfaq4: Data Manipulation
  • perlfaq5: Files and Formats
  • perlfaq6: Regular Expressions
  • perlfaq7: General Perl Language Issues
  • perlfaq8: System Interaction
  • perlfaq9: Web, Email and Networking

CREDITS


๐ŸŒˆ perlfaq1 โ€” General Questions About Perl

VERSION

DESCRIPTION

  • What is Perl?
  • Who supports Perl? Who develops it? Why is it free?
  • Which version of Perl should I use?
  • What is Raku (Perl 6)?
  • How stable is Perl?
  • How often are new versions of Perl released?
  • Is Perl difficult to learn?
  • How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
  • Can I do [task] in Perl?
  • When shouldn't I program in Perl?
  • What's the difference between "perl" and "Perl"?
  • What is a JAPH?
  • How can I convince others to use Perl?

and bestieโ€ฆ that's literally only the beginning of this list ๐Ÿ’€

๐ŸŒธ perlfaq2 โ€” Obtaining and Learning about Perl

bestie, this is the "where do I even get Perl and how do I learn it" chapter. it's giving orientation-week energy. let's go ๐Ÿ’–


๐Ÿ“Œ VERSION

standard FAQ header, nothing spicy here โ€” every perlfaq page opens with one.

โœจ DESCRIPTION

the whole vibe of this one is questions, and here's every single one, no skipping, periodt:

  • Where can I get information on Perl?
  • What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
  • What machines support Perl? Where do I get it?
  • How can I get a binary version of Perl?
  • I don't have a C compiler. How can I build my own Perl interpreter?
  • I copied the Perl binary from one machine to another, but scripts don't work.
  • I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work?
  • What modules and extensions are available for Perl? What is CPAN?
  • Where can I post questions?
  • Perl Books
  • Which magazines have Perl content?
  • Which Perl blogs should I read?
  • What mailing lists are there for Perl?
  • Where can I buy a commercial version of Perl?
  • Where do I send bug reports?
lowkey the most asked-of-all-time chapter. every newbie hits this one first, and honestly? iconic behavior. ๐Ÿ’…

yep, it's got its own author and copyright block, just like every good faq should. โœจ


๐Ÿ”ฅ perlfaq3 โ€” Programming Tools

the "okay so you can write Perl, now let's make it good" chapter. tools, editors, debuggers, profilers, performance โ€” the whole glow-up arc. ๐Ÿฆ‹

๐Ÿ“Œ VERSION

same deal, standard header.

โœจ DESCRIPTION

  • How do I do (anything)?
    • this one is basically a whole reading list crammed into a single question, so buckle up. here's every pointer it drops, grouped the way the original groups them:
    • Basics: perldata - Perl data types, perlvar - Perl pre-defined variables, perlsyn - Perl syntax, perlop - Perl operators and precedence, perlsub - Perl subroutines
    • Execution: perlrun - how to execute the Perl interpreter, perldebug - Perl debugging
    • Functions: perlfunc - Perl builtin functions
    • Objects: perlref - Perl references and nested data structures, perlmod - Perl modules (packages and symbol tables), perlobj - Perl objects, perltie - how to hide an object class in a simple variable
    • Data Structures: perlref - Perl references and nested data structures, perllol - Manipulating arrays of arrays in Perl, perldsc - Perl Data Structures Cookbook
    • Modules: perlmod - Perl modules (packages and symbol tables), perlmodlib - constructing new Perl modules and finding existing ones
    • Regexes: perlre - Perl regular expressions, perlfunc - Perl builtin functions, perlop - Perl operators and precedence, perllocale - Perl locale handling (internationalization and localization)
    • Moving to perl5: perltrap - Perl traps for the unwary, perl
    • Linking with C: perlxstut - Tutorial for writing XSUBs, perlxs - XS language reference manual, perlcall - Perl calling conventions from C, perlguts - Introduction to the Perl API, perlembed - how to embed perl in your C program
    • Various
  • How can I use Perl interactively?
  • How do I find which modules are installed on my system?
  • How do I debug my Perl programs?
  • How do I profile my Perl programs?
  • How do I cross-reference my Perl programs?
  • Is there a pretty-printer (formatter) for Perl?
  • Is there an IDE or Windows Perl Editor?
    • the full roll call: Eclipse, EngInSite, IntelliJ IDEA, Kephra, Komodo, Notepad++, Open Perl IDE, OptiPerl, Padre, PerlBuilder, visiPerl+, Visual Perl, Zeus, GNU Emacs, MicroEMACS, XEmacs, Jed, Vim, Vile, MultiEdit, SlickEdit, ConTEXT, bash, zsh, BBEdit and TextWrangler
    • not me clocking that bash and zsh are in the editor list ๐Ÿ’€ they really said "your shell is an editor if you're brave enough"
  • Where can I get Perl macros for vi?
  • Where can I get perl-mode or cperl-mode for emacs?
  • How can I use curses with Perl?
  • How can I write a GUI (X, Tk, Gtk, etc.) in Perl?
    • the toolkit shortlist: Tk, Wx, Gtk and Gtk2, Win32::GUI, CamelBones, Qt, Athena
  • How can I make my Perl program run faster?
  • How can I make my Perl program take less memory?
    • the five commandments: Don't slurp!, Use map and grep selectively, Avoid unnecessary quotes and stringification, Pass by reference, Tie large variables to disk
  • Is it safe to return a reference to local or lexical data?
  • How can I free an array or hash so my program shrinks?
  • How can I make my CGI script more efficient?
  • How can I hide the source for my Perl program?
  • How can I compile my Perl program into byte code or C?
  • How can I get "#!perl" to work on [MS-DOS,NT,...]?
  • Can I write useful Perl programs on the command line?
  • Why don't Perl one-liners work on my DOS/Mac/VMS system?
  • Where can I learn about CGI or Web programming in Perl?
  • Where can I learn about object-oriented Perl programming?
  • Where can I learn about linking C with Perl?
  • I've read perlembed, perlguts, etc., but I can't embed perl in my C program; what am I doing wrong?
  • When I tried to run my script, I got this message. What does it mean?
  • What's MakeMaker?

author + copyright, right at the bottom, same as always. ๐ŸŽ€


๐Ÿ’œ perlfaq4 โ€” Data Manipulation

THE chapter. numbers, dates, strings, arrays, hashes, and the chaotic misc pile at the end. this is the one you keep open in a second tab forever, ngl. ๐Ÿงš

๐Ÿ“Œ VERSION

yep. standard.

โœจ DESCRIPTION

(no content under this one in the toc โ€” it just rolls straight into the categorized questions below, and honestly? respect for going straight to business.)

๐Ÿ”ข Data: Numbers

  • Why am I getting long decimals (eg, 19.9499999999999) instead of the numbers I should be getting (eg, 19.95)?
  • Why is int() broken?
  • Why isn't my octal data interpreted correctly?
  • Does Perl have a round() function? What about ceil() and floor()? Trig functions?
  • How do I convert between numeric representations/bases/radixes?
    • How do I convert hexadecimal into decimal, How do I convert from decimal to hexadecimal, How do I convert from octal to decimal, How do I convert from decimal to octal, How do I convert from binary to decimal, How do I convert from decimal to binary
  • Why doesn't & work the way I want it to?
  • How do I multiply matrices?
  • How do I perform an operation on a series of integers?
  • How can I output Roman numerals?
  • Why aren't my random numbers random?
  • How do I get a random number between X and Y?

๐Ÿ“… Data: Dates

  • How do I find the day or week of the year?
  • How do I find the current century or millennium?
  • How can I compare two dates and find the difference?
  • How can I take a string and turn it into epoch seconds?
  • How can I find the Julian Day?
  • How do I find yesterday's date?
  • Does Perl have a Year 2000 or 2038 problem? Is Perl Y2K compliant?
the Y2K question is still in there and it is so retro of it. vintage. ๐Ÿ‘‘

๐ŸŽ€ Data: Strings

  • How do I validate input?
  • How do I unescape a string?
  • How do I remove consecutive pairs of characters?
  • How do I expand function calls in a string?
  • How do I find matching/nesting anything?
  • How do I reverse a string?
  • How do I expand tabs in a string?
  • How do I reformat a paragraph?
  • How can I access or change N characters of a string?
  • How do I change the Nth occurrence of something?
  • How can I count the number of occurrences of a substring within a string?
  • How do I capitalize all the words on one line?
  • How can I split a [character]-delimited string except when inside [character]?
  • How do I strip blank space from the beginning/end of a string?
  • How do I pad a string with blanks or pad a number with zeroes?
  • How do I extract selected columns from a string?
  • How do I find the soundex value of a string?
  • How can I expand variables in text strings?
  • Does Perl have anything like Ruby's #{} or Python's f string?
  • What's wrong with always quoting "$vars"?
  • Why don't my <<HERE documents work?
    • There must be no space after the << part, There (probably) should be a semicolon at the end of the opening token, You can't (easily) have any space in front of the tag, There needs to be at least a line separator after the end token

๐Ÿ“š Data: Arrays

  • What is the difference between a list and an array?
  • What is the difference between $array[1] and @array[1]?
  • How can I remove duplicate elements from a list or array?
  • How can I tell whether a certain element is contained in a list or array?
  • How do I compute the difference of two arrays? How do I compute the intersection of two arrays?
  • How do I test whether two arrays or hashes are equal?
  • How do I find the first array element for which a condition is true?
  • How do I handle linked lists?
  • How do I handle circular lists?
  • How do I shuffle an array randomly?
  • How do I process/modify each element of an array?
  • How do I select a random element from an array?
  • How do I permute N elements of a list?
  • How do I sort an array by (anything)?
  • How do I manipulate arrays of bits?
  • Why does defined() return true on empty arrays and hashes?

๐Ÿ—‚๏ธ Data: Hashes (Associative Arrays)

  • How do I process an entire hash?
  • How do I merge two hashes?
  • What happens if I add or remove keys from a hash while iterating over it?
  • How do I look up a hash element by value?
  • How can I know how many entries are in a hash?
  • How do I sort a hash (optionally by value instead of key)?
  • How can I always keep my hash sorted?
  • What's the difference between "delete" and "undef" with hashes?
  • Why don't my tied hashes make the defined/exists distinction?
  • How do I reset an each() operation part-way through?
  • How can I get the unique keys from two hashes?
  • How can I store a multidimensional array in a DBM file?
  • How can I make my hash remember the order I put elements into it?
  • Why does passing a subroutine an undefined element in a hash create it?
  • How can I make the Perl equivalent of a C structure/C++ class/hash or array of hashes or arrays?
  • How can I use a reference as a hash key?
  • How can I check if a key exists in a multilevel hash?
  • How can I prevent addition of unwanted keys into a hash?

๐Ÿ“ Data: Misc

  • How do I handle binary data correctly?
  • How do I determine whether a scalar is a number/whole/integer/float?
  • How do I keep persistent data across program calls?
  • How do I print out or copy a recursive data structure?
  • How do I define methods for every class/object?
  • How do I verify a credit card checksum?
  • How do I pack arrays of doubles or floats for XS code?

and yeah, author + copyright lands right here at the bottom of perlfaq4 too. every faq, every time. ๐Ÿ’–

perlfaq5 - Files and Formats ๐Ÿฆ‹

VERSION

DESCRIPTION

okay so this whole section is about files and formats, and it's literally a whole vibe. here's everything it covers:

  • How do I flush/unbuffer an output filehandle? Why must I do this? โ€” bestie, if you've ever been like "why is my output not showing up", this is for you ๐Ÿ’…
  • How do I change, delete, or insert a line in a file, or append to the beginning of a file? โ€” the classic "I need to edit this file but not rewrite the whole thing" situation โœจ
  • How do I count the number of lines in a file? โ€” yes, there's a whole art to it, no cap ๐ŸŽ€
  • How do I delete the last N lines from a file? โ€” because sometimes you just need to yeet the end ๐Ÿ’€
  • How can I use Perl's "-i" option from within a program? โ€” in-place editing but make it internal, periodt ๐Ÿ‘‘
  • How can I copy a file? โ€” not as trivial as it sounds, apparently ๐ŸŒธ
  • How do I make a temporary file name? โ€” for when you need a lil file that's just for you ๐Ÿซถ
  • How can I manipulate fixed-record-length files? โ€” if your files are all structured and boring, this is the move ๐ŸŒˆ
  • How can I make a filehandle local to a subroutine? How do I pass filehandles between subroutines? How do I make an array of filehandles? โ€” filehandles are not always global, bestie, and this explains the drama ๐Ÿ’–
  • How can I use a filehandle indirectly? โ€” indirect filehandles? it's giving mysterious ๐Ÿ•ต๏ธโ€โ™€๏ธ
  • How can I open a filehandle to a string? โ€” yes, you can treat a string like a file, iconic โœจ
  • How can I set up a footer format to be used with write()? โ€” formats and footers, very retro but useful ๐Ÿ’…
  • How can I write() into a string? โ€” write() but not to a file? slay ๐Ÿ’…
  • How can I output my numbers with commas added? โ€” 1,000,000 but make it pretty ๐ŸŽ€
  • How can I translate tildes (~) in a filename? โ€” because ~ is home, and sometimes you need to expand it ๐Ÿ 
  • When I open a file read-write, why does it wipe it out? โ€” the classic gotcha, no cap ๐Ÿ˜ญ
  • Why do I sometimes get an "Argument list too long" when I use <*>? โ€” globbing can be extra, fr fr ๐ŸŒธ
  • How can I open a file named with a leading ">" or trailing blanks? โ€” tricky filenames need tricky handling ๐Ÿฆ‹
  • How can I reliably rename a file? โ€” rename() is not always reliable, apparently ๐Ÿ’€
  • How can I lock a file? โ€” locking, the thing that saves you from race conditions ๐Ÿ‘‘
  • Why can't I just open(FH, ">file.lock")? โ€” because that's not how locking works, bestie ๐Ÿ™ˆ
  • I still don't get locking. I just want to increment the number in the file. How can I do this? โ€” locking for the confused, we've all been there ๐Ÿ’–
  • All I want to do is append a small amount of text to the end of a file. Do I still have to use locking? โ€” short answer: maybe? long answer: read on โœจ
  • How do I randomly update a binary file? โ€” binary files are a whole different beast ๐Ÿ‰
  • How do I get a file's timestamp in perl? โ€” stat() is your friend ๐Ÿซถ
  • How do I set a file's timestamp in perl? โ€” utime() to the rescue ๐ŸŽ€
  • How do I print to more than one file at once? โ€” multiplexing output, very main character energy ๐Ÿ‘‘
  • How can I read in an entire file all at once? โ€” slurp it up, bestie ๐Ÿฅค
  • How can I read in a file by paragraphs? โ€” paragraph mode is a vibe ๐Ÿ“–
  • How can I read a single character from a file? From the keyboard? โ€” getc() and readkey() enter the chat โŒจ๏ธ
  • How can I tell whether there's a character waiting on a filehandle? โ€” select() or non-blocking, iykyk ๐Ÿ‘€
  • How do I do a "tail -f" in perl? โ€” follow the file like a hawk ๐Ÿฆ…
  • How do I dup() a filehandle in Perl? โ€” duplicating filehandles, for when you need two ๐Ÿ’…
  • How do I close a file descriptor by number? โ€” posix_close() or something, we'll see ๐Ÿ’€
  • Why can't I use "C:\temp\foo" in DOS paths? Why doesn't C:\temp\foo.exe work? โ€” backslashes are escape characters, bestie, it's a whole thing ๐Ÿ˜ญ
  • Why doesn't glob(".") get all the files? โ€” globbing is not regex, no cap ๐ŸŒธ
  • Why does Perl let me delete read-only files? Why does "-i" clobber protected files? Isn't this a bug in Perl? โ€” it's not a bug, it's a feature (sort of) ๐Ÿฆ‹
  • How do I select a random line from a file? โ€” randomness, but make it efficient ๐ŸŽฒ
  • Why do I get weird spaces when I print an array of lines? โ€” because lines have newlines, and print doesn't add them ๐Ÿ™ˆ
  • How do I traverse a directory tree? โ€” File::Find is the classic, but there are others ๐ŸŒณ
  • How do I delete a directory tree? โ€” rm -rf but in Perl, be careful ๐Ÿ’€
  • How do I copy an entire directory? โ€” File::Copy::Recursive or something, we'll see ๐Ÿ“

perlfaq6 - Regular Expressions โœจ

VERSION

DESCRIPTION

regexes are powerful and terrifying, and this section is all about them. here's what's inside:

  • How can I hope to use regular expressions without creating illegible and unmaintainable code?
    • Comments Outside the Regex, Comments Inside the Regex, Different Delimiters
  • I'm having trouble matching over more than one line. What's wrong? โ€” multiline matching is a mood ๐ŸŒˆ
  • How can I pull out lines between two patterns that are themselves on different lines? โ€” the classic "between two patterns" problem ๐Ÿ’…
  • How do I match XML, HTML, or other nasty, ugly things with a regex? โ€” spoiler: maybe don't, but here's how ๐Ÿ˜ญ
  • I put a regular expression into $/ but it didn't work. What's wrong? โ€” $/ is not a regex, bestie, it's a string ๐ŸŽ€
  • How do I substitute case-insensitively on the LHS while preserving case on the RHS? โ€” s/// with /i and \u\L magic โœจ
  • How can I make "\w" match national character sets? โ€” locale and Unicode enter the chat ๐ŸŒ
  • How can I match a locale-smart version of "/[a-zA-Z]/"? โ€” locale-aware character classes, iykyk ๐Ÿ‘‘
  • How can I quote a variable to use in a regex? โ€” quotemeta() is your friend ๐Ÿซถ
  • What is "/o" really for? โ€” the /o modifier, explained ๐Ÿ’…
  • How do I use a regular expression to strip C-style comments from a file? โ€” C comments are cursed, but here we go ๐Ÿ’€
  • Can I use Perl regular expressions to match balanced text? โ€” recursion in regex, yes really ๐ŸŒ€
  • What does it mean that regexes are greedy? How can I get around it? โ€” greedy vs non-greedy, the eternal struggle ๐Ÿช
  • How do I process each word on each line? โ€” split and map, the dynamic duo ๐ŸŒธ
  • How can I print out a word-frequency or line-frequency summary? โ€” counting words, very academic chic ๐Ÿ“Š
  • How can I do approximate matching? โ€” fuzzy matching, it's giving "close enough" ๐Ÿฆ‹
  • How do I efficiently match many regular expressions at once? โ€” Regexp::Assemble or similar, we'll see ๐Ÿš€
  • Why don't word-boundary searches with "\b" work for me? โ€” \b is tricky, no cap ๐Ÿ˜ญ
  • Why does using $&, $`, or $' slow my program down? โ€” because they copy stuff, and that's expensive ๐Ÿ’ธ
  • What good is "\G" in a regular expression? โ€” \G is for global matching, periodt ๐Ÿ‘‘
  • Are Perl regexes DFAs or NFAs? Are they POSIX compliant? โ€” the deep lore of regex engines ๐Ÿง 
  • What's wrong with using grep in a void context? โ€” void context is a trap, bestie ๐Ÿ™ˆ
  • How can I match strings with multibyte characters? โ€” Unicode, the final frontier ๐ŸŒˆ
  • How do I match a regular expression that's in a variable? โ€” qr// is the move ๐Ÿ’…

perlfaq7 - General Perl Language Issues ๐Ÿ’œ

VERSION

DESCRIPTION

general Perl language stuff, the whole "why is Perl like this" section. here's the tea:

  • Can I get a BNF/yacc/RE for the Perl language? โ€” spoiler: it's complicated ๐ŸŒ€
  • What are all these $@%&* punctuation signs, and how do I know when to use them? โ€” sigils, the whole personality of Perl ๐Ÿ’…
  • Do I always/never have to quote my strings or use semicolons and commas? โ€” Perl's rules are flexible, but also not ๐ŸŒธ
  • How do I skip some return values? โ€” undef and list assignment, the classic ๐ŸŽ€
  • How do I temporarily block warnings? โ€” no warnings, bestie ๐Ÿซถ
  • What's an extension? โ€” XS and stuff, we'll see ๐Ÿ”ง
  • Why do Perl operators have different precedence than C operators? โ€” because Perl is not C, no cap ๐Ÿ˜ญ
  • How do I declare/create a structure? โ€” hashes and arrays, the O.G. structs ๐Ÿ—๏ธ
  • How do I create a module? โ€” package and Exporter, the whole deal ๐Ÿ“ฆ
  • How do I adopt or take over a module already on CPAN? โ€” CPAN adoption, it's giving inheritance ๐Ÿ‘‘
  • How do I create a class? โ€” bless() and packages, the Perl OO way ๐ŸŽ“
  • How can I tell if a variable is tainted? โ€” taint mode, for the paranoid ๐Ÿ”’
  • What's a closure? โ€” closures, the mind-bending but useful thing ๐ŸŒ€
  • What is variable suicide and how can I prevent it? โ€” variable suicide, sounds dramatic but it's real ๐Ÿ’€
  • How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?
    • Passing Variables and Functions, Passing Filehandles, Passing Regexes, Passing Methods
  • How do I create a static variable? โ€” state variables, the modern way โœจ
  • What's the difference between dynamic and lexical (static) scoping? Between local() and my()? โ€” local vs my, the eternal question ๐Ÿ’…
  • How can I access a dynamic variable while a similarly named lexical is in scope? โ€” when you have two variables with the same name, chaos ๐Ÿ˜ต
  • What's the difference between deep and shallow binding? โ€” binding, deep vs shallow, very philosophical ๐ŸŒŠ
  • Why doesn't "my($foo) = <$fh>;" work right? โ€” because my() and <> don't play nice, no cap ๐Ÿ˜ญ
  • How do I redefine a builtin function, operator, or method? โ€” you can, but should you? ๐Ÿ‘€
  • What's the difference between calling a function as &foo and foo()? โ€” &foo vs foo(), the ampersand drama ๐ŸŽญ
  • How do I create a switch or case statement? โ€” given/when or if/elsif, the classic ๐Ÿ’…
  • How can I catch accesses to undefined variables, functions, or methods? โ€” AUTOLOAD and ties, the spooky stuff ๐Ÿ‘ป
  • Why can't a method included in this same file be found? โ€” because packages, bestie ๐Ÿ“ฆ
  • How can I find out my current or calling package? โ€” caller() is your friend ๐Ÿซถ
  • How can I comment out a large block of Perl code? โ€” POD or __END__, the tricks ๐ŸŒธ
  • How do I clear a package? โ€” symbol table manipulation, very meta ๐Ÿง 
  • How can I use a variable as a variable name? โ€” symbolic references, but be careful โš ๏ธ
  • What does "bad interpreter" mean? โ€” shebang problems, we've all been there ๐Ÿ˜ญ
  • Do I need to recompile XS modules when there is a change in the C library? โ€” XS and C libraries, the ABI drama ๐Ÿ’€

perlfaq8 - System Interaction ๐ŸŒˆ

VERSION

DESCRIPTION

talking to the system, the OS, and everything in between. here's what's covered:

  • How do I find out which operating system I'm running under? โ€” $^O, the magic variable ๐Ÿ’ป
  • Why does exec() not return? โ€” because it replaces the process, bestie ๐Ÿšช
  • How do I do fancy stuff with the keyboard/screen/mouse?
    • Keyboard, Screen, Mouse
  • How do I print something out in color? โ€” ANSI escapes, the O.G. ๐ŸŒˆ
  • How do I read just one key without waiting for a return key? โ€” raw mode, very terminal ๐ŸŽ€
  • How do I check whether input is ready on the keyboard? โ€” select() and filehandles ๐Ÿ‘€
  • How do I clear the screen? โ€” system("clear") or ANSI codes ๐Ÿงน
  • How do I get the screen size? โ€” TIOCGWINSZ or Term::Size ๐Ÿ“
  • How do I ask the user for a password? โ€” no echo, very secret ๐Ÿคซ
  • How do I read and write the serial port?
    • lockfiles, open mode, end of line, flushing output, non-blocking input
  • How do I decode encrypted password files? โ€” crypt() and shadow files ๐Ÿ”
  • How do I start a process in the background?
    • STDIN, STDOUT, and STDERR are shared, Signals, Zombies
  • How do I trap control characters/signals? โ€” %SIG, the signal handler hash ๐Ÿšฆ
  • How do I modify the shadow password file on a Unix system? โ€” shadow files, very Unix ๐Ÿ‘‘
  • How do I set the time and date? โ€” system("date") or POSIX ๐Ÿ•ฐ๏ธ
  • How can I sleep() or alarm() for under a second? โ€” Time::HiRes, the sub-second hero โฑ๏ธ
  • How can I measure time under a second? โ€” Time::HiRes again, it's the goat ๐Ÿ
  • How can I do an atexit() or setjmp()/longjmp()? (Exception handling) โ€” eval and die, the Perl way ๐Ÿ’€
  • Why doesn't my sockets program work under System V (Solaris)? What does the error message "Protocol not supported" mean? โ€” sockets and System V, the ancient rivalry ๐ŸŒ
  • How can I call my system's unique C functions from Perl? โ€” XS and h2xs, the deep magic ๐Ÿ”ฎ
  • Where do I get the include files to do ioctl() or syscall()? โ€” h2ph and syscall.ph, the classics ๐Ÿ“œ
  • Why do setuid perl scripts complain about kernel problems? โ€” setuid and Perl, a dangerous combo โš ๏ธ
  • How can I open a pipe both to and from a command? โ€” IPC::Open2 and IPC::Open3, the pipe dreams ๐Ÿšฐ
  • Why can't I get the output of a command with system()? โ€” system() doesn't capture, backticks do ๐ŸŽฃ
  • How can I capture STDERR from an external command? โ€” 2>&1 or IPC modules ๐Ÿ“ฅ
  • Why doesn't open() return an error when a pipe open fails? โ€” because open() is tricky with pipes ๐Ÿ˜ญ
  • What's wrong with using backticks in a void context? โ€” void context and backticks, a bad time ๐Ÿ™ˆ
  • How can I call backticks without shell processing? โ€” list form of open or IPC::Run ๐Ÿš
  • Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)? โ€” EOF and STDIN, the one-way street ๐Ÿšซ
  • How can I convert my shell script to perl? โ€” shell to Perl, the great migration ๐ŸŒ
  • Can I use perl to run a telnet or ftp session? โ€” Net::Telnet and Net::FTP, the networking O.G.s ๐Ÿ“ก
  • How can I write expect in Perl? โ€” Expect.pm, the automation king ๐Ÿ‘‘
  • Is there a way to hide perl's command line from programs such as "ps"? โ€” $0 manipulation, very sneaky ๐Ÿ•ต๏ธ
  • I {changed directory, modified my environment} in a perl script. How come the change disappeared when I exited the script? How do I get my changes to be visible?
    • Unix
  • How do I close a process's filehandle without waiting for it to complete? โ€” double fork or no wait, the trick ๐Ÿšช
  • How do I fork a daemon process? โ€” daemonization, the full ritual ๐Ÿง™
  • How do I find out if I'm running interactively or not? โ€” -t STDIN and friends ๐Ÿ–ฅ๏ธ
  • How do I timeout a slow event? โ€” alarm() and eval, the classic timeout โฐ
  • How do I set CPU limits? โ€” setrlimit, the resource limits ๐Ÿ›‘
  • How do I avoid zombies on a Unix system? โ€” wait() and $SIG{CHLD}, the zombie apocalypse ๐ŸงŸ
  • How do I use an SQL database? โ€” DBI, the database interface ๐Ÿ—„๏ธ
  • How do I make a system() exit on control-C? โ€” signal handling and system() ๐Ÿšฆ
  • How do I open a file without blocking? โ€” O_NONBLOCK, the non-blocking vibe ๐Ÿš€
  • How do I tell the difference between errors from the shell and perl? โ€” $? and $!, the error detectives ๐Ÿ”
  • How do I install a module from CPAN? โ€” cpan or cpanm, the module installers ๐Ÿ“ฆ
  • What's the difference between require and use? โ€” require vs use, the compile-time drama โณ
  • How do I keep my own module/library directory? โ€” PERL5LIB and lib.pm, your own space ๐Ÿ 
  • How do I add the directory my program lives in to the module/library search path? โ€” FindBin, the location finder ๐Ÿ“
  • How do I add a directory to my include path (@INC) at runtime?
    • the "PERLLIB" environment variable, the "PERL5LIB" environment variable, the "perl -Idir" command line flag, the "lib" pragma:, the local::lib module:
  • Where are modules installed? โ€” @INC and site_perl, the filesystem lore ๐Ÿ—บ๏ธ
  • What is socket.ph and where do I get it? โ€” socket.ph, the h2ph classic ๐Ÿงฆ

perlfaq9 - Web, Email and Networking ๐Ÿ•ธ๏ธ

VERSION

DESCRIPTION

web, email, networking โ€” the whole internet vibe. here's what's inside:

  • Should I use a web framework? โ€” the eternal question, bestie ๐Ÿ’…
  • Which web framework should I use?
    • Catalyst, Dancer2, Mojolicious, Web::Simple
  • What is Plack and PSGI? โ€” Plack and PSGI, the modern Perl web stack ๐ŸŒ
  • How do I remove HTML from a string? โ€” HTML::Strip or regex, the messy way ๐Ÿงผ
  • How do I extract URLs? โ€” URI::Find or regex, the link hunter ๐Ÿ”—
  • How do I fetch an HTML file? โ€” LWP::Simple or HTTP::Tiny, the fetchers ๐Ÿ“ฅ
  • How do I automate an HTML form submission? โ€” WWW::Mechanize, the form filler ๐Ÿค–
  • How do I decode or create those %-encodings on the web? โ€” URI::Escape, the percent encoding ๐ŸŽญ
  • How do I redirect to another page? โ€” CGI redirect or headers, the classic โ†ช๏ธ
  • How do I put a password on my web pages? โ€” HTTP auth, the basic lock ๐Ÿ”’
  • How do I make sure users can't enter values into a form that causes my CGI script to do bad things? โ€” taint mode and validation, the security check ๐Ÿ›ก๏ธ
  • How do I parse a mail header? โ€” Email::Simple or Mail::Header, the mail parsing ๐Ÿ“ง
  • How do I check a valid mail address? โ€” Email::Valid or regex, the address checker โœ…
  • How do I decode a MIME/BASE64 string? โ€” MIME::Base64, the decoder ๐Ÿงฌ
  • How do I find the user's mail address? โ€” getpwuid or environment, the address finder ๐Ÿ 
  • How do I send email?
    • Email::Sender::Transport::Sendmail, Email::Sender::Transport::SMTP
  • How do I use MIME to make an attachment to a mail message?
  • How do I read email?
  • How do I find out my hostname, domainname, or IP address?
  • How do I fetch/put an (S)FTP file?
  • How can I do RPC in Perl?


๐ŸŒธ perlsyn - Perl syntax: declarations, statements, comments ๐ŸŒธ

โœจ DESCRIPTION โœจ

okay so this one is literally the grammar of the whole language, here's everything in it:

  • Declarations
  • Comments
  • Simple Statements
  • Statement Modifiers
  • Compound Statements
  • Loop Control
  • For Loops
  • Foreach Loops
  • Try Catch Exception Handling
  • Basic BLOCKs
  • defer blocks
  • Switch Statements
  • Goto
  • The Ellipsis Statement
  • PODs: Embedded Documentation
  • Plain Old Comments (Not!)
  • Experimental Details on given and when
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

๐Ÿ’– perldata - Perl data types ๐Ÿ’–

โœจ DESCRIPTION โœจ

the data girlies live here, all the types and how to poke at them:

  • Variable names
  • Identifier parsing
  • Context
  • Scalar values
  • Scalar value constructors
  • List value constructors
  • Subscripts
  • Multi-dimensional array emulation
  • Slices
  • Typeglobs and Filehandles

๐Ÿซถ SEE ALSO ๐Ÿซถ


โญ perlop - Perl expressions: operators, precedence, string literals โญ

โœจ DESCRIPTION โœจ

bestie this one is LONG, it's every operator you'll ever vibe with:

  • Operator Precedence and Associativity
  • Terms and List Operators (Leftward)
  • The Arrow Operator
  • Auto-increment and Auto-decrement
  • Exponentiation
  • Symbolic Unary Operators
  • Binding Operators
  • Multiplicative Operators
  • Additive Operators
  • Shift Operators
  • Named Unary Operators
  • Class Instance Operator
  • Relational Operators
  • Equality Operators
    • 1. Empty hashes or arrays match
    • 2. That is, each element smartmatches the element of the same index in the other array.[3]
    • 3. If a circular reference is found, fall back to referential equality
    • 4. Either an actual number, or a string that looks like one
  • Bitwise And
  • Bitwise Or and Exclusive Or
  • C-style Logical And
  • C-style Logical Or, Xor, and Defined Or
  • Range Operators
  • Conditional Operator
  • Assignment Operators
  • Comma Operator
  • List Operators (Rightward)
  • Logical Not
  • Logical And
  • Logical or and Exclusive Or
  • C Operators Missing From Perl
    • unary &
    • unary *
    • (TYPE)
  • Quote and Quote-like Operators
    • [1]
    • [2]
    • [3]
    • [4]
    • [5]
    • [6]
    • [7]
    • [8]
    • "q/STRING/", 'STRING', "qq/STRING/"
    • "STRING", "qx/STRING/", `STRING`, "qw/STRING/"
    • "qr/STRING/msixpodualn", "m/PATTERN/msixpodualngc"
    • "/PATTERN/msixpodualngc", The empty pattern "//", Matching in list context, "\G assertion", "m?PATTERN?msixpodualngc"
    • "s/PATTERN/REPLACEMENT/msixpodualngcer"
    • "tr/SEARCHLIST/REPLACEMENTLIST/cdsr"
    • "y/SEARCHLIST/REPLACEMENTLIST/cdsr", "<<EOT", "<<~EOT", Double Quotes, Single Quotes, Backticks, Finding the end, Interpolation, "<<'EOF'", "m''", the pattern of "s'''", '', "q//", "tr'''", "y'''", the replacement of "s'''", "tr///", "y///", "", ``, "qq//", "qx//", "<file*glob>", "<<"EOF"", The replacement of "s///", "RE" in "m?RE?", "/RE/", "m/RE/", "s/RE/foo/",, Parsing regular expressions, Optimization of regular expressions
  • I/O Operators
  • Constant Folding
  • No-ops
  • Bitwise String Operators
  • Integer Arithmetic
  • Floating-point Arithmetic
  • Bigger Numbers
  • C-style Logical Or
  • C-style Logical Xor
  • Logical Defined-Or
  • Quote-Like Operators
  • Indented Here-docs

๐ŸŒˆ APPENDIX ๐ŸŒˆ

  • List of Extra Paired Delimiters

๐Ÿฆ‹ perlsub - Perl subroutines (user-defined functions) ๐Ÿฆ‹

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

no cap, this is where you learn to write your own little functions:

  • documented later in this document
  • documented in perlmod
  • documented in perlobj
  • documented in perltie
  • documented in PerlIO::via
  • documented in perlfunc
  • documented in UNIVERSAL
  • documented in perldebguts
  • undocumented
  • used internally by the overload feature

and then the actual sections:

  • Signatures
  • Private Variables via my()
  • Persistent Private Variables
  • Temporary Values via local()
  • Lvalue subroutines
  • Lexical Subroutines
  • Passing Symbol Table Entries (typeglobs)
  • When to Still Use local()
  • Pass by Reference
  • Prototypes
  • Constant Functions
  • Overriding Built-in Functions
  • Autoloading
  • Subroutine Attributes

๐Ÿซถ SEE ALSO ๐Ÿซถ


๐ŸŽ€ perlfunc - Perl builtin functions ๐ŸŽ€

โœจ DESCRIPTION โœจ

the big one. every builtin that ships with Perl, all the way down. buckle up ๐Ÿ’…

๐Ÿ’œ Perl Functions by Category ๐Ÿ’œ

  • Functions for SCALARs or strings
  • Regular expressions and pattern matching
  • Numeric functions
  • Functions for real @ARRAYs
  • Functions for list data
  • Functions for real %HASHes
  • Input and output functions
  • Functions for fixed-length data or records
  • Functions for filehandles, files, or directories
  • Keywords related to the control flow of your Perl program
  • Keywords related to scoping
  • Miscellaneous functions
  • Functions for processes and process groups
  • Keywords related to Perl modules
  • Keywords related to classes and object-orientation
  • Low-level socket functions
  • System V interprocess communication functions
  • Fetching user and group info
  • Fetching network info
  • Time-related functions
  • Non-function keywords

๐Ÿ“ Portability ๐Ÿ“

๐Ÿ‘‘ Alphabetical Listing of Perl Functions ๐Ÿ‘‘

  • -X FILEHANDLE
  • -X EXPR
  • -X DIRHANDLE
  • -X
  • abs VALUE
  • abs
  • accept NEWSOCKET,GENERICSOCKET
  • alarm SECONDS
  • alarm
  • all BLOCK LIST
  • any BLOCK LIST
  • atan2 Y,X
  • bind SOCKET,NAME
  • binmode FILEHANDLE, LAYER
  • binmode FILEHANDLE
  • bless REF,CLASSNAME
  • bless REF
  • Bless the referred-to item into a specific package (recommended form):
  • Bless the referred-to item into package "main":
  • Bless the referred-to item into the current package (not inheritable):
  • break
  • caller EXPR
  • caller
  • chdir EXPR
  • chdir FILEHANDLE
  • chdir DIRHANDLE
  • chdir
  • chmod LIST
  • chomp VARIABLE
  • chomp( LIST )
  • chomp
  • chop VARIABLE
  • chop( LIST )
  • chop
  • chown LIST
  • chr NUMBER
  • chr
  • chroot FILENAME
  • chroot
  • class NAMESPACE
  • class NAMESPACE VERSION
  • class NAMESPACE BLOCK
  • class NAMESPACE VERSION BLOCK
  • close FILEHANDLE
  • close
  • closedir DIRHANDLE
  • connect SOCKET,NAME
  • continue BLOCK
  • continue
  • cos EXPR
  • cos
  • crypt PLAINTEXT,SALT
  • dbmclose HASH
  • dbmopen HASH,DBNAME,MASK
  • defined EXPR
  • defined
  • delete EXPR
  • die LIST
  • do BLOCK
  • do EXPR
  • dump LABEL
  • dump EXPR
  • dump
  • each HASH
  • each ARRAY
  • eof FILEHANDLE
  • eof ()
  • eof
  • eval EXPR
  • eval BLOCK
  • eval
  • String eval
  • Under the "unicode_eval" feature
  • Outside the "unicode_eval" feature
  • If upgraded, $v will be "\xc4\x80" (i.e., the "use utf8" has no effect.)
  • If non-upgraded, $v will be "\x{100}"
  • Block eval
  • evalbytes EXPR
  • evalbytes
  • exec LIST
  • exec PROGRAM LIST
  • exists EXPR
  • exit EXPR
  • exit
  • exp EXPR
  • exp
  • fc EXPR
  • fc
  • fcntl FILEHANDLE,FUNCTION,SCALAR
  • __FILE__
  • field VARNAME
  • fileno FILEHANDLE
  • fileno DIRHANDLE
  • flock FILEHANDLE,OPERATION
  • fork
  • format
  • formline PICTURE,LIST
  • getc FILEHANDLE
  • getc
  • getlogin
  • getpeername SOCKET
  • getpgrp PID
  • getppid
  • getpriority WHICH,WHO
  • getpwnam NAME

okay bestie, we're still deep in the Perl builtin function masterlist and it's giving encyclopedia realness ๐Ÿ’… Here's the next chunk of signatures, no cap:

  • getgrnam NAME
  • gethostbyname NAME
  • getnetbyname NAME
  • getprotobyname NAME
  • getpwuid UID
  • getgrgid GID
  • getservbyname NAME,PROTO
  • gethostbyaddr ADDR,ADDRTYPE
  • getnetbyaddr ADDR,ADDRTYPE
  • getprotobynumber NUMBER
  • getservbyport PORT,PROTO
  • getpwent
  • getgrent
  • gethostent
  • getnetent
  • getprotoent
  • getservent
  • setpwent
  • setgrent
  • sethostent STAYOPEN
  • setnetent STAYOPEN
  • setprotoent STAYOPEN
  • setservent STAYOPEN
  • endpwent
  • endgrent
  • endhostent
  • endnetent
  • endprotoent
  • endservent
  • getsockname SOCKET
  • getsockopt SOCKET,LEVEL,OPTNAME
  • glob EXPR
  • glob
  • gmtime EXPR
  • gmtime
  • goto LABEL
  • goto EXPR
  • goto &NAME
  • grep BLOCK LIST
  • grep EXPR,LIST
  • hex EXPR
  • hex
  • import LIST
  • index STR,SUBSTR,POSITION
  • index STR,SUBSTR
  • int EXPR
  • int
  • ioctl FILEHANDLE,FUNCTION,SCALAR
  • join EXPR,LIST
  • keys HASH
  • keys ARRAY
  • kill SIGNAL, LIST
  • kill SIGNAL
  • last LABEL
  • last EXPR
  • last
  • lc EXPR
  • lc
    • If "use bytes" is in effect: ...
    • Otherwise, if "use locale" for "LC_CTYPE" is in effect: ...
    • Otherwise, If EXPR has the UTF8 flag set: ...
    • Otherwise, if "use feature 'unicode_strings'" or use locale ':not_characters' is in effect: ...
    • Otherwise: ...
  • lcfirst EXPR
  • lcfirst
  • length EXPR
  • length
  • __LINE__
  • link OLDFILE,NEWFILE
  • listen SOCKET,QUEUESIZE
  • local EXPR
  • localtime EXPR
  • localtime
  • lock THING
  • log EXPR
  • log
  • lstat FILEHANDLE
  • lstat EXPR
  • lstat DIRHANDLE
  • lstat
  • m//
  • map BLOCK LIST
  • map EXPR,LIST
  • method NAME BLOCK
  • method NAME : ATTRS BLOCK
  • mkdir FILENAME,MODE
  • mkdir FILENAME
  • mkdir
  • msgctl ID,CMD,ARG
  • msgget KEY,FLAGS
  • msgrcv ID,VAR,SIZE,TYPE,FLAGS
  • msgsnd ID,MSG,FLAGS
  • my VARLIST
  • my TYPE VARLIST
  • my VARLIST : ATTRS
  • my TYPE VARLIST : ATTRS
  • next LABEL
  • next EXPR
  • next
  • no MODULE VERSION LIST
  • no MODULE VERSION
  • no MODULE LIST
  • no MODULE
  • no VERSION
  • oct EXPR
  • oct
  • open FILEHANDLE,MODE,EXPR
  • open FILEHANDLE,MODE,EXPR,LIST
  • open FILEHANDLE,MODE,REFERENCE
  • open FILEHANDLE,EXPR
  • open FILEHANDLE
    • Working with files
    • Simple examples
    • About filehandles
    • About modes
    • Checking the return value
    • Specifying I/O layers in MODE
    • Using "undef" for temporary files
    • Opening a filehandle into an in-memory scalar
    • Opening a filehandle into a command
    • Duping filehandles
    • Legacy usage
    • Specifying mode and filename as a single argument
    • Assigning a filehandle to a bareword
    • Calling "open" with one argument via global variables
    • Other considerations
    • Automatic filehandle closure
    • Automatic pipe flushing
    • Direct versus by-reference assignment of filehandles
    • Whitespace and special characters in the filename argument
    • Invoking C-style "open"
    • Portability issues
  • opendir DIRHANDLE,EXPR
  • ord EXPR
  • ord
  • our VARLIST
  • our TYPE VARLIST
  • our VARLIST : ATTRS
  • our TYPE VARLIST : ATTRS
  • pack TEMPLATE,LIST
  • package NAMESPACE
  • package NAMESPACE VERSION
  • package NAMESPACE BLOCK
  • package NAMESPACE VERSION BLOCK
  • __PACKAGE__
  • __CLASS__
  • pipe READHANDLE,WRITEHANDLE
  • pop ARRAY
  • pop
  • pos SCALAR
  • pos
  • print FILEHANDLE LIST
  • print FILEHANDLE
  • print LIST
  • print
  • printf FILEHANDLE FORMAT, LIST
  • printf FILEHANDLE
  • printf FORMAT, LIST
  • printf
  • prototype FUNCTION
  • prototype
  • push ARRAY,LIST
  • q/STRING/
  • qq/STRING/
  • qw/STRING/
  • qx/STRING/
  • qr/STRING/
  • quotemeta EXPR
  • quotemeta
  • rand EXPR
  • rand
    • Security:
    • Crypt::URandom
    • Crypt::PRNG
  • read FILEHANDLE,SCALAR,LENGTH,OFFSET
  • read FILEHANDLE,SCALAR,LENGTH
  • readdir DIRHANDLE
  • readline EXPR
  • readline
  • readlink EXPR
  • readlink
  • readpipe EXPR
  • readpipe
  • recv SOCKET,SCALAR,LENGTH,FLAGS
  • redo LABEL
  • redo EXPR
  • redo
  • ref EXPR
  • ref
  • rename OLDNAME,NEWNAME
  • require VERSION
  • require EXPR
  • require
  • reset EXPR
  • reset
  • return EXPR
  • return
  • reverse LIST
  • rewinddir DIRHANDLE
  • rindex STR,SUBSTR,POSITION
  • rindex STR,SUBSTR
  • rmdir FILENAME
  • rmdir
  • s///
  • say FILEHANDLE LIST
  • say FILEHANDLE
  • say LIST
  • say
  • scalar EXPR
  • seek FILEHANDLE,POSITION,WHENCE
  • seekdir DIRHANDLE,POS
  • select FILEHANDLE
  • select
  • select RBITS,WBITS,EBITS,TIMEOUT
  • semctl ID,SEMNUM,CMD,ARG
  • semget KEY,NSEMS,FLAGS
  • semop KEY,OPSTRING
  • send SOCKET,MSG,FLAGS,TO
  • send SOCKET,MSG,FLAGS
  • setpgrp PID,PGRP
  • setpriority WHICH,WHO,PRIORITY
  • setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL
  • shift ARRAY
  • shift
  • shmctl ID,CMD,ARG
  • shmget KEY,SIZE,FLAGS
  • shmread ID,VAR,POS,SIZE
  • shmwrite ID,STRING,POS,SIZE
  • shutdown SOCKET,HOW
  • sin EXPR
  • sin
  • sleep EXPR
  • sleep
  • socket SOCKET,DOMAIN,TYPE,PROTOCOL
  • socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL
  • sort SUBNAME LIST
  • sort BLOCK LIST
  • sort LIST
  • splice ARRAY,OFFSET,LENGTH,LIST
  • splice ARRAY,OFFSET,LENGTH
  • splice ARRAY,OFFSET
  • splice ARRAY
  • split /PATTERN/,EXPR,LIMIT
  • split /PATTERN/,EXPR
  • split /PATTERN/
  • split
  • sprintf FORMAT, LIST
    • format parameter index
    • flags
    • vector flag
    • (minimum) width
    • precision, or maximum width
    • size
    • order of arguments
  • sqrt EXPR
  • sqrt
  • srand EXPR
  • srand
  • stat FILEHANDLE
  • stat EXPR
  • stat DIRHANDLE
  • stat
  • state VARLIST
  • state TYPE VARLIST
  • state VARLIST : ATTRS
  • state TYPE VARLIST : ATTRS
  • study SCALAR
  • study
  • sub NAME BLOCK
  • sub NAME (PROTO) BLOCK
  • sub NAME : ATTRS BLOCK
  • sub NAME (PROTO) : ATTRS BLOCK
  • __SUB__
  • substr EXPR,OFFSET,LENGTH,REPLACEMENT
  • substr EXPR,OFFSET,LENGTH
  • substr EXPR,OFFSET
  • symlink OLDFILE,NEWFILE
  • syscall NUMBER, LIST
  • sysopen FILEHANDLE,FILENAME,MODE
  • sysopen FILEHANDLE,FILENAME,MODE,PERMS
  • sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
  • sysread FILEHANDLE,SCALAR,LENGTH
  • sysseek FILEHANDLE,POSITION,WHENCE
  • system LIST
  • system PROGRAM LIST
  • syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET
  • syswrite FILEHANDLE,SCALAR,LENGTH
  • syswrite FILEHANDLE,SCALAR
  • tell FILEHANDLE
  • tell
  • telldir DIRHANDLE
  • tie VARIABLE,CLASSNAME,LIST
  • tied VARIABLE
  • time
  • times
  • tr///
  • truncate FILEHANDLE,LENGTH
  • truncate EXPR,LENGTH
  • uc EXPR
  • uc
  • ucfirst EXPR
  • ucfirst
  • umask EXPR
  • umask
  • undef EXPR
  • undef
  • unlink LIST
  • unlink
  • unpack TEMPLATE,EXPR
  • unpack TEMPLATE
  • unshift ARRAY,LIST
  • untie VARIABLE
  • use Module VERSION LIST
  • use Module VERSION
  • use Module LIST
  • use Module
  • use VERSION
  • utime LIST
  • values HASH
  • values ARRAY
  • vec EXPR,OFFSET,BITS
  • wait
  • waitpid PID,FLAGS
  • wantarray
  • warn LIST
  • write FILEHANDLE
  • write EXPR
  • write
  • y///

โœจ Non-function Keywords by Cross-reference โœจ

these are the keyword besties, not functions but still iconic:

  • __DATA__
  • __END__
  • BEGIN
  • CHECK
  • END
  • INIT
  • UNITCHECK
  • DESTROY
  • and
  • cmp
  • eq
  • ge
  • gt
  • isa
  • le
  • lt
  • ne
  • not
  • or
  • x
  • xor
  • AUTOLOAD
  • else
  • elsif
  • for
  • foreach
  • if
  • unless
  • until
  • while
  • elseif
  • default
  • given
  • when
  • try
  • catch
  • finally
  • defer
  • ADJUST

perlopentut - simple recipes for opening files and pipes in Perl

DESCRIPTION

OK, HANDLE, MODE, PATHNAME

Opening Text Files

Opening Text Files for Reading

Opening Text Files for Writing

Opening Binary Files

Opening Pipes

Opening a pipe for reading

Opening a pipe for writing

Expressing the command as a list

SEE ALSO


perlpacktut - tutorial on "pack" and "unpack"

DESCRIPTION

The Basic Principle

Packing Text

Packing Numbers

Integers

Unpacking a Stack Frame

How to Eat an Egg on a Net

Byte-order modifiers

Floating point Numbers

Exotic Templates

Bit Strings

Uuencoding

Doing Sums

Unicode

Another Portable Binary Encoding

Template Grouping

Lengths and Widths

String Lengths

Dynamic Templates

Counting Repetitions

Intel HEX

Packing and Unpacking C Structures

The Alignment Pit

Dealing with Endian-ness

Alignment, Take 2

Alignment, Take 3

Pointers for How to Use Them

Pack Recipes

Funnies Section

Authors


perlpod - the Plain Old Documentation format

DESCRIPTION

Ordinary Paragraph

Verbatim Paragraph

Command Paragraph

  • "=head1 Heading Text"
  • "=head2 Heading Text"
  • "=head3 Heading Text"
  • "=head4 Heading Text"
  • "=head5 Heading Text"
  • "=head6 Heading Text"
  • "=over indentlevel"
  • "=item stuff..."
  • "=back"
  • "=cut"
  • "=pod"
  • "=begin formatname"
  • "=end formatname"
  • "=for formatname text..."
  • "=encoding encodingname"

Formatting Codes

  • "I<text>" -- italic text
  • "B<text>" -- bold text
  • "U<text>" -- underline text
  • "C<code>" -- code text
  • "L<name>" -- a hyperlink
  • "E<escape>" -- a character escape
  • "F<filename>" -- used for filenames
  • "S<text>" -- text contains non-breaking spaces
  • "X<topic name>" -- an index entry
  • "Z<>" -- a null (zero-effect) formatting code

The Intent

Embedding Pods in Perl Modules

Hints for Writing Pod

SEE ALSO

AUTHOR


perlpodspec - Plain Old Documentation: format specification and notes

DESCRIPTION

Pod Definitions

Pod Commands

  • "=head1"
  • "=head2"
  • "=head3"
  • "=head4"
  • "=head5"
  • "=head6"
  • "=pod"
  • "=cut"
  • "=over"
  • "=item"
  • "=back"
  • "=begin formatname"
  • "=begin formatname parameter"
  • "=end formatname"
  • "=for formatname text..."
  • "=encoding encodingname"

Pod Formatting Codes

  • "I<text>" -- italic text
  • "B<text>" -- bold text
  • "U<text>" -- underline text
  • "C<code>" -- code text
  • "F<filename>" -- style for filenames
  • "X<topic name>" -- an index entry
  • "Z<>" -- a null (zero-effect) formatting code
  • "L<name>" -- a hyperlink
  • "E<escape>" -- a character escape
  • "S<text>" -- text contains non-breaking spaces

Notes on Implementing Pod Processors

About L<...> Codes

First:

Second:

Third:

Fourth:

Fifth:

Sixth:

About =over...=back Regions

About Data Paragraphs and "=begin/=end" Regions

SEE ALSO

AUTHOR

perldocstyle โ€” A style guide for writing Perl's documentation ๐Ÿ’…

DESCRIPTION

  • Purpose of this guide
  • Intended audience
  • Status of this document

FUNDAMENTALS

  • Choice of markup: Pod
  • Choice of language: American English
  • Choice of encoding: UTF-8
  • Choice of underlying style guide: CMOS
  • Contributing to Perl's documentation

FORMATTING AND STRUCTURE

  • Document structure
  • Formatting rules
  • Adding comments
  • Perlfunc has special rules

TONE AND STYLE

okay bestie, this is the part where the style guide gets opinionated and honestly? iconic. ๐ŸŒˆ

  • Apply one of the four documentation modes
  • Assume readers' intelligence, but not their knowledge
  • Use meaningful variable and symbol names in examples
  • Write in English, but not just for English-speakers
  • Omit placeholder text or commentary
  • Apply section-breaks and examples generously
  • Lead with common cases and best practices
  • Document Perl's present
  • The documentation speaks with one voice

INDEX OF PREFERRED TERMS

these are the <em>correct</em> words to use, no cap. the entries listed are:

  • built-in function, Darwin, macOS, man page, Perl; perl, Perl 5, Perl 6, Perl 5 Porters, the; porters, the; p5p, program, Raku, script, semicolon, Unix

SEE ALSO

AUTHOR


perlpodstyle โ€” Perl POD style guide ๐ŸŽ€

DESCRIPTION

the section names POD pages should use, in order, periodt:

  • NAME, SYNOPSIS, DESCRIPTION, OPTIONS, RETURN VALUE, ERRORS, DIAGNOSTICS, EXAMPLES, ENVIRONMENT, FILES, CAVEATS, BUGS, RESTRICTIONS, NOTES, AUTHOR, HISTORY, COPYRIGHT AND LICENSE, SEE ALSO

AUTHOR

SEE ALSO


perldiag โ€” various Perl diagnostics ๐Ÿ’€

DESCRIPTION

SEE ALSO


perldeprecation โ€” list Perl deprecations ๐Ÿซถ

DESCRIPTION

Unscheduled Deprecations

  • Perl 5.44
  • Perl 5.42
  • Perl 5.40
  • Perl 5.38
  • Perl 5.34
  • Perl 5.32
  • Perl 5.30
  • Perl 5.28
  • Perl 5.26
  • Perl 5.24
  • Perl 5.16

SEE ALSO


perllexwarn โ€” Perl Lexical Warnings โœจ

DESCRIPTION


perldebug โ€” Perl debugging ๐Ÿ›

DESCRIPTION

The Perl Debugger

Calling the Debugger

  • perl -d program_name
  • perl -d -e 0
  • perl -d:ptkdb program_name
  • perl -dt threaded_program_name

Debugger Commands

bestie the command list is long and every single one counts:

  • h, h [command], h h
  • p expr, x [maxdepth] expr
  • V [pkg [vars]], X [vars], y [level [vars]]
  • T
  • s [expr], n [expr], r
  • <CR>
  • c [line|sub]
  • l, l min+incr, l min-max, l line, l subname
  • -
  • v [line]
  • .
  • f filename
  • /pattern/, ?pattern?
  • L [abw]
  • S [[!]regex]
  • t [n], t [n] expr
  • b, b [line] [condition], b [file]:[line] [condition], b subname [condition], b postpone subname [condition], b load filename, b compile subname
  • B line, B *
  • disable [file]:[line], disable [line]
  • enable [file]:[line], enable [line]
  • a [line] command, A line, A *
  • w expr, W expr, W *
  • o, o booloption ..., o anyoption? ..., o option=value ...
  • < ?, < [ command ], < *, << command
  • > ?, > command, > *, >> command
  • { ?, { [ command ], { *, {{ command
  • ! number, ! -number, ! pattern, !! cmd
  • source file
  • H -number
  • q or ^D
  • R
  • |dbcmd, ||dbcmd
  • command
  • m expr
  • M
  • man [manpage]

Configurable Options

  • "recallCommand", "ShellBang"
  • "pager"
  • "tkRunning"
  • "signalLevel", "warnLevel", "dieLevel"
  • "AutoTrace", "LineInfo", "inhibit_exit", "PrintRet"
  • "ornaments", "frame", "maxTraceLen", "windowSize"
  • "arrayDepth", "hashDepth"
  • "dumpDepth", "compactDump", "veryCompact", "globPrint", "DumpDBFiles", "DumpPackages", "DumpReused", "quote", "HighBit", "undefPrint"
  • "UsageOnly"
  • "HistFile", "HistSize"
  • "TTY", "noTTY"
  • "ReadLine", "NonStop"

Debugger Input/Output

  • Prompt
  • Multiline commands
  • Stack backtrace
  • Line Listing Format
  • Frame listing

Debugging Compile-Time Statements

Debugger Customization

Readline Support / History in the Debugger

Editor Support for Debugging

The Perl Profiler

Debugging Regular Expressions

Debugging Memory Usage

SEE ALSO

BUGS


perlvar โ€” Perl predefined variables ๐Ÿ’œ

DESCRIPTION

The Syntax of Variable Names

SPECIAL VARIABLES

General Variables

  • $ARG, $_
  • @ARG, @_
  • $LIST_SEPARATOR, $"
  • $PROCESS_ID, $PID, $$
  • $PROGRAM_NAME, $0
  • $REAL_GROUP_ID, $GID, $(
  • $EFFECTIVE_GROUP_ID, $EGID, $)
  • $REAL_USER_ID, $UID, $<
  • $EFFECTIVE_USER_ID, $EUID, $>
  • $SUBSCRIPT_SEPARATOR, $SUBSEP, $;
  • $a, $b
  • %ENV
  • $OLD_PERL_VERSION, $]
  • $SYSTEM_FD_MAX, $^F
  • @F
  • @INC, %INC, $INC
  • $INPLACE_EDIT, $^I
  • @ISA
  • $^M
  • ${^MAX_NESTED_EVAL_BEGIN_BLOCKS}
  • $OSNAME, $^O
  • %SIG
  • %{^HOOK}
  • require__before, require__after
  • $BASETIME, $^T
  • $PERL_VERSION, $^V
  • $EXECUTABLE_NAME, $^X
  • $<digits> ($1, $2, ...)
  • @{^CAPTURE}
  • $MATCH, $&
  • ${^MATCH}
  • $PREMATCH, `$``
  • ${^PREMATCH}
  • $POSTMATCH, $'
  • ${^POSTMATCH}
  • $LAST_PAREN_MATCH, $+
  • $LAST_SUBMATCH_RESULT, $^N
  • @LAST_MATCH_END, @+
  • %{^CAPTURE}, %LAST_PAREN_MATCH, %+
  • @LAST_MATCH_START, @-
  • "$"</lavender> is the same as <lavender>"substr($var, 0, $-[0])"`
  • $& is the same as "substr($var, $-[0], $+[0] - $-[0])"
  • "$'" is the same as "substr($var, $+[0])"
  • $1 is the same as "substr($var, $-[1], $+[1] - $-[1])"
  • $2 is the same as "substr($var, $-[2], $+[2] - $-[2])"
  • $3 is the same as "substr($var, $-[3], $+[3] - $-[3])"
  • %{^CAPTURE_ALL}, %-
  • ${^LAST_SUCCESSFUL_PATTERN}
  • $LAST_REGEXP_CODE_RESULT, $^R
  • ${^RE_COMPILE_RECURSION_LIMIT}
  • ${^RE_DEBUG_FLAGS}
  • ${^RE_TRIE_MAXBUF}
  • $ARGV, @ARGV
  • ARGV, ARGVOUT
  • IO::Handle->output_field_separator( EXPR )
  • $OUTPUT_FIELD_SEPARATOR, $OFS, $,
  • HANDLE->input_line_number( EXPR )
  • $INPUT_LINE_NUMBER, $NR, $.
  • IO::Handle->input_record_separator( EXPR )
  • $INPUT_RECORD_SEPARATOR, $RS, $/
  • IO::Handle->output_record_separator( EXPR )
  • $OUTPUT_RECORD_SEPARATOR, $ORS, $\
  • HANDLE->autoflush( EXPR )
  • $OUTPUT_AUTOFLUSH, $|
  • ${^LAST_FH}
  • $ACCUMULATOR, $^A
  • IO::Handle->format_formfeed(EXPR), $FORMAT_FORMFEED, $^L
  • HANDLE->format_page_number(EXPR), $FORMAT_PAGE_NUMBER, $%
  • HANDLE->format_lines_left(EXPR), $FORMAT_LINES_LEFT, $-
  • IO::Handle->format_line_break_characters EXPR
  • $FORMAT_LINE_BREAK_CHARACTERS, $:
  • HANDLE->format_lines_per_page(EXPR), $FORMAT_LINES_PER_PAGE, $=
  • HANDLE->format_top_name(EXPR), $FORMAT_TOP_NAME, $^
  • HANDLE->format_name(EXPR), $FORMAT_NAME, $~

Error Variables

  • ${^CHILD_ERROR_NATIVE}
  • $EXTENDED_OS_ERROR, $^E
  • $EXCEPTIONS_BEING_CAUGHT, $^S
  • $WARNING, $^W
  • ${^WARNING_BITS}
  • $OS_ERROR, $ERRNO, $!
  • %OS_ERROR, %ERRNO, %!
  • $CHILD_ERROR, $?
  • $EVAL_ERROR, $@
  • $COMPILING, $^C
  • $DEBUGGING, $^D
  • ${^GLOBAL_PHASE}
  • CONSTRUCT, START, CHECK, INIT, RUN, END, DESTRUCT
  • $^H, %^H
  • ${^OPEN}
  • $PERLDB, $^P
  • 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200, 0x400, 0x800, 0x1000
  • ${^TAINT}
  • ${^SAFE_LOCALES}
  • ${^UNICODE}
  • ${^UTF8CACHE}
  • ${^UTF8LOCALE}

Deprecated and removed variables

  • $#
  • $*
  • $[
  • ${^ENCODING}
  • ${^WIN32_SLOPPY_STAT}

perlre โ€” Perl regular expressions ๐Ÿ”ฅ

DESCRIPTION

The Basics

Modifiers

  • "m"
  • "s"
  • "i"
  • "x" and "xx"
  • "p"
  • "a", "d", "l", and "u"
  • "n"
  • Other Modifiers

Regular Expressions

  • [1], [2], [3], [4], [5], [6], [7], [8]

Quoting (escaping) metacharacters

Extended Patterns

  • (?#text)
  • (?adlupimnsx-imnsx), (?^alupimnsx)
  • (?:pattern)
  • (?adluimnsx-imnsx:pattern), (?^aluimnsx:pattern)
  • (?|pattern)
  • Lookaround Assertions
  • (?=pattern), (*pla:pattern), (*positive_lookahead:pattern)
  • (?!pattern), (*nla:pattern), (*negative_lookahead:pattern)
  • (?<=pattern), \K, (*plb:pattern), (*positive_lookbehind:pattern)
  • (?<!pattern), (*nlb:pattern), (*negative_lookbehind:pattern)
  • (?<NAME>pattern), (?'NAME'pattern)
  • \k<NAME>, \k'NAME', \k{NAME}
  • (?{ code }), (*{ code }), (??{ code })
  • (?PARNO) (?-PARNO) (?+PARNO) (?R) (?0)
  • (?&NAME)
  • (?(condition)yes-pattern|no-pattern), (?(condition)yes-pattern)
  • an integer in parentheses
  • a lookahead/lookbehind/evaluate zero-width assertion;
  • a name in angle brackets or single quotes
  • the special symbol "(R)"
  • "(1)" "(2)" ..
  • "(<NAME>)" "('NAME')"
  • "(?=...)" "(?!...)" "(?<=...)" "(?<!...)"
  • "(?{ CODE })", "(*{ CODE })"
  • "(R)", "(R1)" "(R2)" ..
  • "(R&NAME)"
  • "(DEFINE)"
  • (?>pattern), (*atomic:pattern)
  • (?[ ])

Backtracking

Script Runs

Special Backtracking Control Verbs

  • Verbs
  • (*PRUNE) (*PRUNE:NAME)
  • (*SKIP) (*SKIP:NAME)
  • (*MARK:NAME) (*:NAME)
  • (*THEN) (*THEN:NAME)
  • (*COMMIT) (*COMMIT:arg)
  • (*FAIL) (*F) (*FAIL:arg)
  • (*ACCEPT) (*ACCEPT:arg)

Warning on "\1" Instead of $1

Repeated Patterns Matching a Zero-length Substring

Combining RE Pieces

  • "ST"
  • "S|T"
  • "S{REPEAT_COUNT}"
  • "S{min,max}"
  • "S{min,max}?"
  • "S?"
  • "S*"
  • "S+"
  • "S??"
  • "S*?"
  • "S+?"
  • "(?>S)"
  • "(?=S)"
  • "(?<=S)"
  • "(?!S)"
  • "(?<!S)"
  • "(??{ EXPR })"
  • "(?PARNO)"
  • "(?(condition)yes-pattern|no-pattern)"

Creating Custom RE Engines

Embedded Code Execution Frequency

PCRE/Python Support

  • (?P<NAME>pattern)
  • (?P=NAME)
  • (?P>NAME)

Quoting metacharacters

BUGS

SEE ALSO


perlrebackslash โ€” Perl Regular Expression Backslash Sequences and Escapes ๐Ÿฆ‹

DESCRIPTION

The backslash

  • [1]

All the sequences and escapes

Character Escapes

  • [1], [2]

Modifiers

Character classes

Referencing

Assertions

  • \A, \z, \Z, \G, \b{}, \b, \B{}, \B, "\b{gcb}" or "\b{g}", "\b{lb}", "\b{sb}", "\b{wb}"

Misc

  • \K, \N, \R, \X

perlrecharclass โ€” Perl Regular Expression Character Classes

the character-class deep dive, bestie ๐Ÿ’… this one is *so long and so worth it*

DESCRIPTION

  • The dot
  • Backslash sequences
    • If the /a modifier is in effect .., otherwise .., For code points above 255 .., For code points below 256 .., if locale rules are in effect .., if, instead, Unicode rules are in effect .., otherwise .., If the /a modifier is in effect .., otherwise .., For code points above 255 .., For code points below 256 .., if locale rules are in effect .., if, instead, Unicode rules are in effect .., otherwise .., [1], [2]
  • Bracketed Character Classes
    • [1], [2], [3], [4], [5], [6], [7], If the /a modifier, is in effect .., otherwise .., For code points above 255 .., For code points below 256 .., if locale rules are in effect .., "word", "ascii", "blank", if, instead, Unicode rules are in effect .., otherwise ..

perlreref โ€” Perl Regular Expressions Reference

the cheat sheet. the little card you tape to your monitor. iconic โœจ

DESCRIPTION

  • OPERATORS
  • SYNTAX
  • ESCAPE SEQUENCES
  • CHARACTER CLASSES
  • ANCHORS
  • QUANTIFIERS
  • EXTENDED CONSTRUCTS
  • VARIABLES
  • FUNCTIONS
  • TERMINOLOGY

AUTHOR

SEE ALSO

THANKS


perlref โ€” Perl references and nested data structures

refs!! the thing that makes Perl Perl, fr fr ๐Ÿฆ‹

NOTE

DESCRIPTION

  • Making References
  • Using References
  • Circular References
  • Symbolic references
  • Not-so-symbolic references
  • Pseudo-hashes: Using an array as a hash
  • Function Templates
  • Postfix Dereference Syntax
  • Postfix Reference Slicing
  • Assigning to References
  • Declaring a Reference to a Variable

WARNING: Don't use references as hash keys

SEE ALSO


perlform โ€” Perl formats

the retro one. text fields, numeric fields, all of it ๐ŸŒธ

DESCRIPTION

  • Text Fields
  • Numeric Fields
  • The Field @* for Variable-Width Multi-Line Text
  • The Field ^* for Variable-Width One-line-at-a-time Text
  • Specifying Values
  • Using Fill Mode
  • Suppressing Lines Where All Fields Are Void
  • Repeating Format Lines
  • Top of Form Processing
  • Format Variables

NOTES

  • Footers
  • Accessing Formatting Internals

WARNINGS


perlobj โ€” Perl object reference

OOP but make it Perl. bless yourself, bestie ๐Ÿ‘‘

DESCRIPTION

  • An Object is Simply a Data Structure
  • A Class is Simply a Package
  • A Method is Simply a Subroutine
  • Method Invocation
  • Inheritance
  • Writing Constructors
  • Attributes
  • An Aside About Smarter and Safer Code
  • Method Call Variations
  • Invoking Class Methods
  • "bless", "blessed", and "ref"
  • The UNIVERSAL Class
    • isa($class) , DOES($role) , can($method) , VERSION($need)
  • AUTOLOAD
  • Destructors
  • Non-Hash Objects
  • Inside-Out objects
  • Pseudo-hashes

SEE ALSO


perltie โ€” how to hide an object class in a simple variable

hiding a whole object class inside a plain little variable? the audacity. we love it ๐Ÿ’œ

SYNOPSIS

DESCRIPTION

  • Tying Scalars
    • TIESCALAR classname, LIST , FETCH this , STORE this, value , UNTIE this , DESTROY this
  • Tying Arrays
    • TIEARRAY classname, LIST , FETCH this, index , STORE this, index, value , FETCHSIZE this , STORESIZE this, count , EXTEND this, count , EXISTS this, key , DELETE this, key , CLEAR this , PUSH this, LIST , POP this , SHIFT this , UNSHIFT this, LIST , SPLICE this, offset, length, LIST , UNTIE this , DESTROY this
  • Tying Hashes
    • USER, HOME, CLOBBER, LIST, TIEHASH classname, LIST , FETCH this, key , STORE this, key, value , DELETE this, key , CLEAR this , EXISTS this, key , FIRSTKEY this , NEXTKEY this, lastkey , SCALAR this , UNTIE this , DESTROY this
  • Tying FileHandles
    • TIEHANDLE classname, LIST , WRITE this, LIST , PRINT this, LIST , PRINTF this, LIST , READ this, LIST , READLINE this , GETC this , EOF this , CLOSE this , UNTIE this , DESTROY this
  • UNTIE this
  • The "untie" Gotcha

SEE ALSO

BUGS

AUTHOR


perldbmfilter โ€” Perl DBM Filters

filters for your DBM files. yes, keys and values get their own little glow-up pass ๐Ÿ“

SYNOPSIS

DESCRIPTION

  • filter_store_key, filter_store_value, filter_fetch_key, filter_fetch_value
  • The Filter
  • An Example: the NULL termination problem
  • Another Example: Key is a C int

SEE ALSO

AUTHOR


perlclass โ€” Perl class syntax reference

the new-ish class syntax!! main character energy, no cap โญ

SYNOPSIS

DESCRIPTION

  • History

KEYWORDS

  • class
  • field
  • method

ATTRIBUTES

  • Class attributes
  • Field attributes
  • Method attributes

OBJECT LIFECYCLE

  • Construction
  • Adjustment
  • Lifetime
  • Destruction

TODO

  • Roles, Parameters to ADJUST blocks, ADJUST blocks as true blocks, More accessor generator attributes, Metaprogramming, Extension Customisation

KNOWN BUGS

AUTHORS


perlipc โ€” Perl interprocess communication (signals, fifos, pipes, safe subprocesses, sockets, and semaphores)

the whole IPC buffet, bestie. signals, pipes, sockets, semaphores, everything on one platter ๐Ÿซถ

DESCRIPTION

Signals

  • Handling the SIGHUP Signal in Daemons
  • Deferred Signals (Safe Signals)
    • Long-running opcodes, Interrupting IO, Restartable system calls, Signals as "faults", Signals triggered by operating system state

Named Pipes

Using open() for IPC

  • Filehandles
  • Background Processes
  • Complete Dissociation of Child from Parent
  • Safe Pipe Opens
  • Avoiding Pipe Deadlocks
  • Bidirectional Communication with Another Process
  • Bidirectional Communication with Yourself

Sockets: Client/Server Communication

  • Internet Line Terminators
  • Internet TCP Clients and Servers
  • Unix-Domain TCP Clients and Servers

TCP Clients with IO::Socket

  • A Simple Client
    • "Proto", "PeerAddr", "PeerPort"
  • A Webget Client
  • Interactive Client with IO::Socket

TCP Servers with IO::Socket

  • Proto, LocalPort, Listen, Reuse

UDP: Message Passing

SysV IPC

NOTES

BUGS

AUTHOR

SEE ALSO


perlfork โ€” Perl's fork() emulation

the emulation era. this one has a whole caveat section and it *earned it ๐Ÿ’€*

SYNOPSIS

DESCRIPTION

  • Behavior of other Perl features in forked pseudo-processes
    • $$ or $PROCESS_ID, %ENV, chdir() and all other builtins that accept filenames, wait() and waitpid(), kill(), exec(), exit(), Open handles to files, directories and network sockets
  • Resource limits
  • Killing the parent process
  • Lifetime of the parent process and pseudo-processes

CAVEATS AND LIMITATIONS

  • BEGIN blocks, Open filehandles, Open directory handles, Forking pipe open() not yet implemented, Global state maintained by XSUBs, Interpreter embedded in larger application, Thread-safety of extensions

PORTABILITY CAVEATS

BUGS

AUTHOR

SEE ALSO


perlnumber โ€” semantics of numbers and numeric operations in Perl

numbers!!! how Perl stores them, converts them, and does math on them ๐Ÿ”ฅ

SYNOPSIS

DESCRIPTION

Storing numbers

Numeric operators and numeric conversions

Flavors of Perl numeric operations

  • Arithmetic operators, ++, Arithmetic operators during "use integer", Other mathematical operators, Bitwise operators, Bitwise operators during "use integer", Operators which expect an integer, Operators which expect a string

AUTHOR

SEE ALSO


perlthrtut โ€” Tutorial on threads in Perl

the threads tutorial. big one. buckle up, bestie ๐Ÿงš

DESCRIPTION

What Is A Thread Anyway?

Threaded Program Models

  • Boss/Worker
  • Work Crew
  • Pipeline

What kind of threads are Perl threads?

Thread-Safe Modules

Thread Basics

  • Basic Thread Support
  • A Note about the Examples
  • Creating Threads
  • Waiting For A Thread To Exit
  • Ignoring A Thread
  • Process and Thread Termination

Threads And Data

  • Shared And Unshared Data
  • Thread Pitfalls: Races

Synchronization and control

  • Controlling access: lock()
  • A Thread Pitfall: Deadlocks
  • Queues: Passing Data Around
  • Semaphores: Synchronizing Data Access
  • Basic semaphores
  • Advanced Semaphores
  • Waiting for a Condition
  • Giving up control

General Thread Utility Routines

  • What Thread Am I In?
  • Thread IDs
  • Are These Threads The Same?
  • What Threads Are Running?

A Complete Example

Different implementations of threads

Performance considerations

Process-scope Changes

Thread-Safety of System Libraries

Conclusion

SEE ALSO

Bibliography

  • Introductory Texts
  • OS-Related References
  • Other References

Acknowledgements

AUTHOR

Copyrights


perlport โ€” Writing portable Perl

the "will this run on the weird platform" bible. HUGE. we respect her ๐ŸŒˆ

DESCRIPTION

  • Not all Perl programs have to be portable, Nearly all of Perl already is portable

ISSUES

  • Newlines
  • Numbers endianness and Width
  • Files and Filesystems
  • System Interaction
  • Command names versus file pathnames
  • Networking
  • Interprocess Communication (IPC)
  • External Subroutines (XS)
  • Standard Modules
  • Time and Date
  • Character sets and character encoding
  • Internationalisation
  • System Resources
  • Security
  • Style

CPAN Testers

PLATFORMS

  • Unix
  • DOS and Derivatives
  • VMS
  • VOS
  • EBCDIC Platforms
  • Acorn RISC OS
  • Other perls

FUNCTION IMPLEMENTATIONS

  • Alphabetical Listing of Perl Functions
    • -X, alarm, atan2, binmode, chdir, chmod, chown, chroot, crypt, dbmclose, dbmopen, dump, exec, exit, fcntl, flock, fork, getlogin, getpgrp, getppid, getpriority, getpwnam, getgrnam, getnetbyname, getpwuid, getgrgid, getnetbyaddr, getprotobynumber, getpwent, getgrent, gethostbyname, gethostent, getnetent, getprotoent, getservent, seekdir, sethostent, setnetent, setprotoent, setservent, endpwent, endgrent, endhostent, endnetent, endprotoent, endservent, getsockopt, glob, gmtime, ioctl, kill, link, localtime, lstat, msgctl, msgget, msgsnd, msgrcv, open, readlink, rename, rewinddir, select, semctl, semget, semop, setgrent, setpgrp, setpriority, setpwent, setsockopt, shmctl, shmget, shmread, shmwrite, sleep, socketpair, stat, symlink, syscall, sysopen, system, telldir, times, truncate, umask, utime, wait, waitpid

๐Ÿ’ป Supported Platforms ๐Ÿ’ป

okay bestie, deep breath, here's the entire roster of platforms Perl is out here holding hands with no cap:

  • Linux (x86, ARM, IA64)
  • HP-UX
  • AIX
  • Win32
  • Windows 2000
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008
  • Windows 7
  • Cygwin
  • Solaris (x86, SPARC)
  • OpenVMS
  • Alpha (7.2 and later)
  • I64 (8.2 and later)
  • NetBSD
  • FreeBSD
  • Debian GNU/kFreeBSD
  • Haiku
  • Irix (6.5. What else?)
  • OpenBSD
  • Dragonfly BSD
  • Midnight BSD
  • QNX Neutrino RTOS (6.5.0)
  • MirOS BSD
  • Stratus OpenVOS (17.0 or later)
  • time_t issues that may or may not be fixed ๐Ÿ™ˆ
  • Stratus VOS / OpenVOS
  • AIX (yes again, they said it twice, we don't question it ๐Ÿ’…)
  • Android
  • FreeMINT

that's the whole list, every single one, I'm not skipping anybody, we don't do that here ๐Ÿ’–


๐Ÿชฆ EOL Platforms ๐Ÿชฆ

these ones have left the chat, and the version that dropped them is right there, iconic behaviour:

  • (Perl 5.37.1)
    • Ultrix
  • (Perl 5.36)
    • NetWare, DOS/DJGPP, AT&T UWIN
  • (Perl 5.20)
    • AT&T 3b1
  • (Perl 5.14)
    • Windows 95, Windows 98, Windows ME, Windows NT4
  • (Perl 5.12)
    • Atari MiNT, Apollo Domain/OS, Apple Mac OS 8/9, Tenon Machten

Supported Platforms (Perl 5.8)

like, the historical archive version of the platform list, for the girlies doing archaeology ๐Ÿฆ‹


๐Ÿ”— SEE ALSO

the little cross-reference corner, where you go when you want to know what else to read next ๐ŸŽ€


๐Ÿ‘‘ AUTHORS / CONTRIBUTORS ๐Ÿ‘‘

everybody who touched this and made it what it is icons only


๐ŸŒ perllocale - Perl locale handling (internationalization and localization)

๐Ÿ“– DESCRIPTION

๐Ÿ—บ๏ธ WHAT IS A LOCALE

okay so a locale is basically a vibe check for how your computer formats stuff, and each piece of that vibe has a category name. here's the whole set:

  • Category "LC_NUMERIC": Numeric formatting
  • Category "LC_MONETARY": Formatting of monetary amounts
  • Category "LC_TIME": Date/Time formatting
  • Category "LC_COLLATE": Collation
  • Category "LC_CTYPE": Character Types
  • Category "LC_MESSAGES": Error and other messages
  • Category "LC_TIME": Date/Time formatting (yes bestie, LC_TIME is listed twice, I'm just telling you what the page says ๐Ÿ’€)
  • Category "LC_ALL"
  • Other categories

๐Ÿงฐ PREPARING TO USE LOCALES

the "get your setup cute before you start" section โœจ


๐ŸŽ€ USING LOCALES

โœจ The use locale pragma

Not within the scope of use locale

Lingering effects of use locale

Under "use locale";

The setlocale function

Multi-threaded operation

Finding locales

LOCALE PROBLEMS

The localeconv function

I18N::Langinfo


๐Ÿ—‚๏ธ LOCALE CATEGORIES

Category LC_COLLATE: Collation: Text Comparisons and Sorting

Category LC_CTYPE: Character Types

Category LC_NUMERIC: Numeric Formatting

Category LC_MONETARY: Formatting of monetary amounts

Category LC_TIME: Representation of time

Category LC_MESSAGES: System messages

Other categories


๐Ÿ”’ SECURITY

yes bestie, locales can be a whole security situation, read it before you go wild ๐Ÿซถ


๐ŸŒ ENVIRONMENT

the env vars that get a say in all of this:

  • PERL_SKIP_LOCALE_INIT
  • PERL_BADLANG
  • "LC_ALL"
  • "LANGUAGE"
  • "LC_CTYPE"
  • "LC_COLLATE"
  • "LC_MONETARY"
  • "LC_NUMERIC"
  • "LC_TIME"
  • "LANG"

Examples


๐Ÿ“ NOTES

String eval and LC_NUMERIC

Backward compatibility

I18N:Collate obsolete

Sort speed and memory use impacts

Freely available locale definitions

I18n and l10n

An imperfect standard


๐ŸŒˆ Unicode and UTF-8


๐Ÿ› BUGS

Collation of strings containing embedded NUL characters

"LANGUAGE"

Embedded perls and multi-threaded

Broken systems


๐Ÿ”— SEE ALSO


๐Ÿ“œ HISTORY


๐Ÿฆ‹ perluniintro - Perl Unicode introduction

๐Ÿ“– DESCRIPTION

Unicode

Perl's Unicode Support

Perl's Unicode Model

Unicode and EBCDIC

Creating Unicode

Handling Unicode

Legacy Encodings

Unicode I/O

Displaying Unicode As Text

Special Cases

Advanced Topics

Miscellaneous

Questions With Answers

Hexadecimal Notation

Further Resources


๐Ÿ•ฐ๏ธ UNICODE IN OLDER PERLS


๐Ÿ”— SEE ALSO


๐Ÿ™ ACKNOWLEDGMENTS



๐Ÿ‘‘ perlunicode - Unicode support in Perl

๐Ÿ“– DESCRIPTION

โš ๏ธ Important Caveats

Safest if you use feature 'unicode_strings'

Input and Output Layers

You must convert your non-ASCII, non-UTF-8 Perl scripts to be UTF-8

use utf8 still needed to enable UTF-8 in scripts

UTF-16 scripts autodetected

Byte and Character Semantics

ASCII Rules versus Unicode Rules

When the string has been upgraded to UTF-8

There are additional methods for regular expression patterns

Extended Grapheme Clusters (Logical characters)

Unicode Character Properties

the full property menu, every single one, exactly as written:

  • "\p{All}"
  • "\p{Alnum}"
  • "\p{Any}"
  • "\p{ASCII}"
  • "\p{Assigned}"
  • "\p{Blank}"
  • "\p{Decomposition_Type: Non_Canonical}" (Short: "\p{Dt=NonCanon}")
  • "\p{Graph}"
  • "\p{HorizSpace}"
  • "\p{In=*}"
  • "\p{PerlSpace}"
  • "\p{PerlWord}"
  • "\p{Posix...}"
  • "\p{Present_In: *}" (Short: "\p{In=*}")
  • "\p{Print}"
  • "\p{SpacePerl}"
  • "\p{Title}" and "\p{Titlecase}"
  • "\p{Unicode}"
  • "\p{VertSpace}"
  • "\p{Word}"
  • "\p{XPosix...}"

Comparison of "\N{...}" and "\p{name=...}"

  • [1]
  • [2]
  • [3]
  • [4]
  • [5]

Wildcards in Property Values

User-Defined Character Properties

User-Defined Case Mappings (for serious hackers only)

Character Encodings for Input and Output

Unicode Regular Expression Support Level

okay this next bit is the footnote zone, and I am keeping every single word, so buckle up ๐Ÿซถ

  • [1] "\N{U+...}" and "\x{...}"
  • [2] "\p{...}" "\P{...}". This requirement is for a minimal list of properties. Perl supports these. See R2.7 for other properties
  • [3] (blank in the original bestie, I'm not skipping it, there's just genuinely nothing there ๐Ÿ’€)
  • [4] (also blank, iconic)
  • [5] "\b" "\B" meet most, but not all, the details of this requirement, but "\b{wb}" and "\B{wb}" do, as well as the stricter R2.3
  • [6] (blank again ๐Ÿ’€)
  • [7] (and blank)
  • [8] UTF-8/UTF-EBDDIC used in Perl allows not only "U+10000" to "U+10FFFF" but also beyond "U+10FFFF"
  • [9] Unicode has rewritten this portion of UTS#18 to say that getting canonical equivalence (see UAX#15 "Unicode Normalization Forms" <https://www.unicode.org/reports/tr15>) is basically to be done at the programmer level. Use NFD to write both your regular expressions and text to match them against (you can use Unicode::Normalize)
  • [10] Perl has "\X" and "\b{gcb}". Unicode has retracted their "Grapheme Cluster Mode", and recently added string properties, which Perl does not yet support
  • [11] see UAX#29 "Unicode Text Segmentation" <https://www.unicode.org/reports/tr29>,
  • [12] see "Wildcards in Property Values" in perlunicode above
  • [13] Perl supports all the properties in the Unicode Character Database (UCD). It does not yet support the listed properties that come from other Unicode sources
  • [14] The only optional property that Perl supports is Named Sequence. None of these properties are in the UCD

Unicode Encodings

Noncharacter code points

Beyond Unicode code points

Security Implications of Unicode

Unicode in Perl on EBCDIC

Locales

When Unicode Does Not Happen

The "Unicode Bug"

Forcing Unicode in Perl (Or Unforcing Unicode in Perl)

Using Unicode in XS

Hacking Perl to work on earlier Unicode versions (for very serious hackers only)

Porting code from perl-5.6.X


๐Ÿ› BUGS

Interaction with Extensions

Speed


๐Ÿ”— SEE ALSO


๐Ÿ“ perlunicook - cookbookish examples of handling Unicode in Perl

๐Ÿ“– DESCRIPTION

๐Ÿง EXAMPLES

every recipe in the cookbook, numbered with the little prescription symbol and all, we're not skipping a single one:

  • โ„ž 0: Standard preamble
  • โ„ž 1: Generic Unicode-savvy filter
  • โ„ž 2: Fine-tuning Unicode warnings
  • โ„ž 3: Declare source in utf8 for identifiers and literals
  • โ„ž 4: Characters and their numbers
  • โ„ž 5: Unicode literals by character number
  • โ„ž 6: Get character name by number
  • โ„ž 7: Get character number by name
  • โ„ž 8: Unicode named characters
  • โ„ž 9: Unicode named sequences
  • โ„ž 10: Custom named characters
  • โ„ž 11: Names of CJK codepoints
  • โ„ž 12: Explicit encode/decode
  • โ„ž 13: Decode program arguments as utf8
  • โ„ž 14: Decode program arguments as locale encoding
  • โ„ž 15: Declare STD{IN,OUT,ERR} to be utf8
  • โ„ž 16: Declare STD{IN,OUT,ERR} to be in locale encoding
  • โ„ž 17: Make file I/O default to utf8
  • โ„ž 18: Make all I/O and args default to utf8
  • โ„ž 19: Open file with specific encoding
  • โ„ž 20: Unicode casing
  • โ„ž 21: Unicode case-insensitive comparisons
  • โ„ž 22: Match Unicode linebreak sequence in regex
  • โ„ž 23: Get character category
  • โ„ž 24: Disabling Unicode-awareness in builtin charclasses
  • โ„ž 25: Match Unicode properties in regex with \p, \P
  • โ„ž 26: Custom character properties
  • โ„ž 27: Unicode normalization
  • โ„ž 28: Convert non-ASCII Unicode numerics
  • โ„ž 29: Match Unicode grapheme cluster in regex
  • โ„ž 30: Extract by grapheme instead of by codepoint (regex)
  • โ„ž 31: Extract by grapheme instead of by codepoint (substr)
  • โ„ž 32: Reverse string by grapheme
  • โ„ž 33: String length in graphemes
  • โ„ž 34: Unicode column-width for printing
  • โ„ž 35: Unicode collation
  • โ„ž 36: Case- and accent-insensitive Unicode sort
  • โ„ž 37: Unicode locale collation
  • โ„ž 38: Making "cmp" work on text instead of codepoints
  • โ„ž 39: Case- and accent-insensitive comparisons
  • โ„ž 40: Case- and accent-insensitive locale comparisons
  • โ„ž 41: Unicode linebreaking
  • โ„ž 42: Unicode text in DBM hashes, the tedious way
  • โ„ž 43: Unicode text in DBM hashes, the easy way
  • โ„ž 44: PROGRAM: Demo of Unicode collation and printing

๐Ÿ”— SEE ALSO

the standards girlies, all cited exactly:

  • ยง3.13 Default Case Algorithms, page 113; ยง4.2 Case, pages 120โ€“122; Case Mappings, page 166โ€“172, especially Caseless Matching starting on page 170, UAX #44: Unicode Character Database, UTS #18: Unicode Regular Expressions, UAX #15: Unicode Normalization Forms, UTS #10: Unicode Collation Algorithm, UAX #29: Unicode Text Segmentation, UAX #14: Unicode Line Breaking Algorithm, UAX #11: East Asian Width

โœ๏ธ AUTHOR

๐Ÿ“œ REVISION HISTORY


๐Ÿ’œ perlunifaq - Perl Unicode FAQ

โ“ Q and A

okay the questions, exactly as asked:

  • perlunitut isn't really a Unicode tutorial, is it?
  • What character encodings does Perl support?
  • Which version of perl should I use?
  • What about binary data, like images?
  • When should I decode or encode?
  • What if I don't decode?
  • What if I don't encode?
    • If the string's characters are all code point 255 or lower, Perl outputs bytes that match those code points. This is what happens with encoded strings. It can also, though, happen with unencoded strings that happen to be all code point 255 or lower
    • Otherwise, Perl outputs the string encoded as UTF-8. This only happens with strings you neglected to encode. Since that should not happen, Perl also throws a "wide character" warning in this case
  • Is there a way to automatically decode or encode? โ€” like, does the computer just know? ๐Ÿ˜ญ
  • What if I don't know which encoding was used? โ€” the eternal struggle fr fr
  • Can I use Unicode in my Perl sources? โ€” bestie yes but there's โœจloreโœจ
  • Data::Dumper doesn't restore the UTF8 flag; is it broken? โ€” spoiler: it's giving misunderstood, not broken ๐Ÿ’…
  • Why do regex character classes sometimes match only in the ASCII range? โ€” the betrayal ๐Ÿ˜ฉ
  • Why do some characters not uppercase or lowercase correctly? โ€” they're just built different
  • How can I determine if a string is a text string or a binary string? โ€” vibe check time ๐Ÿฆ‹
  • How do I convert from encoding FOO to encoding BAR? โ€” glow-up pipeline
  • What are "decode_utf8" and "encode_utf8"? โ€” the dynamic duo ๐Ÿซถ
  • What is a "wide character"? โ€” she's big, she's wide, she contains multitudes ๐ŸŒˆ

๐Ÿง  INTERNALS

  • What is "the UTF8 flag"? โ€” the little switch everyone blames for everything
  • What about the "use bytes" pragma? โ€” handle with care, no cap
  • What about the "use encoding" pragma? โ€” oop, we'll get into it
  • What is the difference between ":encoding" and ":utf8"? โ€” not the same thing bestie, do not conflate ๐Ÿ”ฅ
  • What's the difference between "UTF-8" and "utf8"? โ€” one tiny character, massive consequences ๐Ÿ’€
  • I lost track; what encoding is the internal format really? โ€” valid, it's a lot ๐Ÿ˜ตโ€๐Ÿ’ซ

๐Ÿ“ AUTHOR

๐Ÿ”— SEE ALSO


๐Ÿ’– perluniprops โ€” Index of Unicode Version 16.0.0 character properties in Perl

๐ŸŒธ DESCRIPTION

๐ŸŒธ Properties accessible through "\p{}" and "\P{}"

๐ŸŽ€ Single form ("\p{name}") tighter rules:

  • white space adjacent to a non-word character
  • underscores separating digits in numbers

๐ŸŽ€ Compound form ("\p{name=value}" or "\p{name:value}") tighter rules:

  • Stabilized
  • Deprecated
  • Obsolete
  • Discouraged
  • * is a wild-card
  • (\d+) in the info column gives the number of Unicode code points matched by this property
  • D means this is deprecated
  • O means this is obsolete
  • S means this is stabilized
  • T means tighter (stricter) name matching applies
  • X means use of this form is discouraged, and may not be stable

These are, like, legal but they match absolutely nothing. Empty. A void. ๐Ÿ’€

  • \p{Canonical_Combining_Class=Attached_Below_Left}
  • \p{Canonical_Combining_Class=CCC133}
  • \p{Grapheme_Cluster_Break=E_Base}
  • \p{Grapheme_Cluster_Break=E_Base_GAZ}
  • \p{Grapheme_Cluster_Break=E_Modifier}
  • \p{Grapheme_Cluster_Break=Glue_After_Zwj}
  • \p{Word_Break=E_Base}
  • \p{Word_Break=E_Base_GAZ}
  • \p{Word_Break=E_Modifier}
  • \p{Word_Break=Glue_After_Zwj}

๐ŸŒธ Properties accessible through Unicode::UCD

๐ŸŒธ Properties accessible through other means

๐ŸŒธ Unicode character properties that are NOT accepted by Perl

Perl said no thank you to all of these, and here they are, full list, no skips:

  • Expands_On_NFC (XO_NFC)
  • Expands_On_NFD (XO_NFD)
  • Expands_On_NFKC (XO_NFKC)
  • Expands_On_NFKD (XO_NFKD)
  • Grapheme_Link (Gr_Link)
  • Jamo_Short_Name (JSN)
  • Other_Alphabetic (OAlpha)
  • Other_Default_Ignorable_Code_Point (ODI)
  • Other_Grapheme_Extend (OGr_Ext)
  • Other_ID_Continue (OIDC)
  • Other_ID_Start (OIDS)
  • Other_Lowercase (OLower)
  • Other_Math (OMath)
  • Other_Uppercase (OUpper)
  • Script=Katakana_Or_Hiragana (sc=Hrkt)
  • Script_Extensions=Katakana_Or_Hiragana (scx=Hrkt)

๐ŸŒธ Other information in the Unicode data base

Look at this little library of extras, iconic honestly:

  • auxiliary/GraphemeBreakTest.html
  • auxiliary/LineBreakTest.html
  • auxiliary/SentenceBreakTest.html
  • auxiliary/WordBreakTest.html
  • BidiCharacterTest.txt
  • BidiTest.txt
  • CJKRadicals.txt
  • confusables.txt
  • confusablesSummary.txt
  • DoNotEmit.txt
  • intentional.txt
  • emoji/ReadMe.txt
  • ReadMe.txt
  • EmojiSources.txt
  • extracted/DName.txt
  • Index.txt
  • NamedSqProv.txt
  • NamesList.html
  • NamesList.txt
  • NormalizationCorrections.txt
  • NushuSources.txt
  • StandardizedVariants.html
  • StandardizedVariants.txt
  • TangutSources.txt
  • USourceData.txt
  • USourceGlyphs.pdf

๐Ÿ”— SEE ALSO


๐Ÿฆ‹ perlunitut โ€” Perl Unicode Tutorial

๐ŸŒˆ DESCRIPTION

๐ŸŒธ Definitions

๐ŸŒธ Your new toolkit

๐ŸŒธ I/O flow (the actual 5 minute tutorial)

๐ŸŒˆ SUMMARY

๐ŸŒˆ Q and A (or FAQ)

๐ŸŒˆ ACKNOWLEDGEMENTS

๐ŸŒˆ AUTHOR

๐Ÿ”— SEE ALSO


๐Ÿ‘‘ perlebcdic โ€” Considerations for running Perl on EBCDIC platforms

๐Ÿ’œ DESCRIPTION

๐Ÿ’œ COMMON CHARACTER CODE SETS

๐ŸŽ€ ASCII

๐ŸŽ€ ISO 8859

๐ŸŽ€ Latin 1 (ISO 8859-1)

๐ŸŽ€ EBCDIC

  • 0037
  • 1047
  • POSIX-BC

๐ŸŽ€ Unicode code points versus EBCDIC code points

๐ŸŽ€ Unicode and UTF

๐ŸŽ€ Using Encode

๐Ÿ’œ SINGLE OCTET TABLES

The recipes, in order, no skipping: recipe 0, recipe 1, recipe 2, recipe 3, recipe 4, recipe 5, recipe 6

๐ŸŽ€ Table in hex, sorted in 1047 order

๐Ÿ’œ IDENTIFYING CHARACTER CODE SETS

๐Ÿ’œ CONVERSIONS

๐ŸŽ€ utf8::unicode_to_native() and utf8::native_to_unicode()

๐ŸŽ€ tr///

๐ŸŽ€ iconv

๐ŸŽ€ C RTL

๐Ÿ’œ OPERATOR DIFFERENCES

๐Ÿ’œ FUNCTION DIFFERENCES

  • chr()
  • ord()
  • pack()
  • print()
  • printf()
  • sort()
  • sprintf()
  • unpack()

๐Ÿ’œ REGULAR EXPRESSION DIFFERENCES

๐Ÿ’œ SOCKETS

๐Ÿ’œ SORTING

๐ŸŽ€ Ignore ASCII vs. EBCDIC sort differences

๐ŸŽ€ Use a sort helper function

๐ŸŽ€ MONO CASE then sort data (for non-digits, non-underscore)

๐ŸŽ€ Perform sorting on one type of platform only

๐Ÿ’œ TRANSFORMATION FORMATS

๐ŸŽ€ URL decoding and encoding

๐ŸŽ€ uu encoding and decoding

๐ŸŽ€ Quoted-Printable encoding and decoding

๐ŸŽ€ Caesarean ciphers

๐Ÿ’œ Hashing order and checksums

๐Ÿ’œ I18N AND L10N

๐Ÿ’œ MULTI-OCTET CHARACTER SETS

๐Ÿ’œ OS ISSUES

๐ŸŽ€ OS/400

  • PASE
  • IFS access

๐ŸŽ€ OS/390, z/OS

  • "sigaction"
  • "chcp"
  • dataset access
  • "iconv"
  • locales

๐ŸŽ€ POSIX-BC?

๐Ÿ’œ BUGS

๐Ÿ”— SEE ALSO

๐Ÿ’œ REFERENCES

๐Ÿ’œ HISTORY

๐Ÿ’œ AUTHOR


๐Ÿ”ฅ perlsec โ€” Perl security

๐Ÿ›ก๏ธ DESCRIPTION

๐Ÿ›ก๏ธ SECURITY VULNERABILITY CONTACT INFORMATION

๐Ÿ›ก๏ธ SECURITY MECHANISMS AND CONCERNS

๐ŸŽ€ Taint mode

๐ŸŽ€ Laundering and Detecting Tainted Data

๐ŸŽ€ Switches On the "#!" Line

๐ŸŽ€ Taint mode and @INC

๐ŸŽ€ Cleaning Up Your Path

๐ŸŽ€ Shebang Race Condition

๐ŸŽ€ Protecting Your Programs

๐ŸŽ€ Unicode

๐ŸŽ€ Algorithmic Complexity Attacks

  • Hash Seed Randomization
  • Hash Traversal Randomization
  • Bucket Order Perturbance
  • New Default Hash Function
  • Alternative Hash Functions

๐ŸŽ€ Using Sudo

๐Ÿ”— SEE ALSO


๐Ÿ•ต๏ธ perlsecpolicy โ€” Perl security report handling policy

๐Ÿ’œ DESCRIPTION

๐Ÿ’œ REPORTING SECURITY ISSUES IN PERL

๐Ÿ’œ WHAT ARE SECURITY ISSUES

๐ŸŽ€ Software covered by the Perl security team

๐ŸŽ€ Bugs that may qualify as security issues in Perl

๐ŸŽ€ Bugs that do not qualify as security issues in Perl

๐ŸŽ€ Bugs that require special categorization

๐Ÿ’œ HOW WE DEAL WITH SECURITY ISSUES

๐ŸŽ€ Perl's vulnerability remediation workflow

๐ŸŽ€ Publicly known and zero-day security issues

๐ŸŽ€ Vulnerability credit and bounties

๐ŸŽ€ Embargo Period

๐ŸŽ€ Example Release Process


๐Ÿ“ฆ perlmod โ€” Perl modules (packages and symbol tables)

๐ŸŒธ DESCRIPTION

๐ŸŽ€ Is this the document you were after?

  • This doc
  • perlnewmod
  • perlmodstyle

๐ŸŽ€ Packages

๐ŸŽ€ Symbol Tables

๐ŸŽ€ BEGIN, UNITCHECK, CHECK, INIT and END

๐ŸŽ€ Perl Classes

๐ŸŽ€ Perl Modules

๐ŸŽ€ Making your module threadsafe

๐Ÿ”— SEE ALSO


๐Ÿงš perlmodlib โ€” constructing new Perl modules and finding existing ones

๐Ÿ‘‘ THE PERL MODULE LIBRARY

๐ŸŽ€ Pragmatic Modules

Okay bestie, this is the whole squad, everybody gets named, no cap:

  • attributes ๐Ÿ’…
  • autodie
  • autodie::exception
  • autodie::exception::system
  • autodie::hints
  • autodie::skip
  • autouse
  • base
  • bigfloat
  • bigint
  • bignum
  • bigrat
  • blib
  • builtin
  • bytes
  • charnames
  • constant
  • deprecate
  • diagnostics
  • encoding
  • encoding::warnings
  • experimental
  • feature
  • fields
  • filetest
  • if
  • integer
  • less
  • lib
  • locale
  • mro
  • ok
  • open
  • ops
  • overload
  • overloading
  • parent
  • re
  • sigtrap
  • sort
  • source::encoding
  • stable
  • strict
  • subs
  • threads
  • threads::shared
  • utf8
  • vars
  • version
  • vmsish
  • warnings
  • warnings::register

โœจ Standard Modules โœจ

okay bestie, so like, Perl comes with a WHOLE bunch of standard modules, and here's the full list. no cap, it's a lot. but you got this. ๐Ÿ’…

  • Amiga::ARexx
  • Amiga::Exec
  • AnyDBM_File
  • App::Cpan
  • App::Prove
  • App::Prove::State
  • App::Prove::State::Result
  • App::Prove::State::Result::Test
  • Archive::Tar
  • Archive::Tar::File
  • Attribute::Handlers
  • AutoLoader
  • AutoSplit
  • B
  • B::Concise
  • B::Deparse
  • B::Op_private
  • B::Showlex
  • B::Terse
  • B::Xref
  • Benchmark
  • "IO::Socket::IP"
  • "Socket"
  • "Test2::Tools::Refcount"
  • CORE
  • CPAN
  • CPAN::API::HOWTO
  • CPAN::Debug
  • CPAN::Distroprefs
  • CPAN::FirstTime
  • CPAN::HandleConfig
  • CPAN::Kwalify
  • CPAN::Meta
  • CPAN::Meta::Converter
  • CPAN::Meta::Feature
  • CPAN::Meta::History
  • CPAN::Meta::History::Meta_1_0
  • CPAN::Meta::History::Meta_1_1
  • CPAN::Meta::History::Meta_1_2
  • CPAN::Meta::History::Meta_1_3
  • CPAN::Meta::History::Meta_1_4
  • CPAN::Meta::Merge
  • CPAN::Meta::Prereqs
  • CPAN::Meta::Requirements
  • CPAN::Meta::Requirements::Range
  • CPAN::Meta::Spec
  • CPAN::Meta::Validator
  • CPAN::Meta::YAML
  • CPAN::Nox
  • CPAN::Plugin
  • CPAN::Plugin::Specfile
  • CPAN::Queue
  • CPAN::Tarzip
  • CPAN::Version
  • Carp
  • Class::Struct
  • Compress::Raw::Bzip2
  • Compress::Raw::Zlib
  • Compress::Zlib
  • Config
  • Config::Extensions
  • Config::Perl::V
  • Cwd
  • DB
  • DBM_Filter
  • DBM_Filter::compress
  • DBM_Filter::encode
  • DBM_Filter::int32
  • DBM_Filter::null
  • DBM_Filter::utf8
  • DB_File
  • Data::Dumper
  • Devel::PPPort
  • Devel::Peek
  • Devel::SelfStubber
  • Digest
  • Digest::MD5
  • Digest::SHA
  • Digest::base
  • Digest::file
  • DirHandle
  • Dumpvalue
  • DynaLoader
  • Encode
  • Encode::Alias
  • Encode::Byte
  • Encode::CJKConstants
  • Encode::CN
  • Encode::CN::HZ
  • Encode::Config
  • Encode::EBCDIC
  • Encode::Encoder
  • Encode::Encoding
  • Encode::GSM0338
  • Encode::Guess
  • Encode::JP
  • Encode::JP::H2Z
  • Encode::JP::JIS7
  • Encode::KR
  • Encode::KR::2022_KR
  • Encode::MIME::Header
  • Encode::MIME::Name
  • Encode::PerlIO
  • Encode::Supported
  • Encode::Symbol
  • Encode::TW
  • Encode::Unicode
  • Encode::Unicode::UTF7
  • English
  • Env
  • Errno
  • Exporter
  • Exporter::Heavy
  • ExtUtils::CBuilder
  • ExtUtils::CBuilder::Platform::Windows
  • ExtUtils::Command
  • ExtUtils::Command::MM
  • ExtUtils::Constant
  • ExtUtils::Constant::Base
  • ExtUtils::Constant::Utils
  • ExtUtils::Constant::XS
  • ExtUtils::Embed
  • ExtUtils::Install
  • ExtUtils::Installed
  • ExtUtils::Liblist
  • ExtUtils::MM
  • ExtUtils::MM::Utils
  • ExtUtils::MM_AIX
  • ExtUtils::MM_Any
  • ExtUtils::MM_BeOS
  • ExtUtils::MM_Cygwin
  • ExtUtils::MM_DOS
  • ExtUtils::MM_Darwin
  • ExtUtils::MM_MacOS
  • ExtUtils::MM_NW5
  • ExtUtils::MM_OS2
  • ExtUtils::MM_OS390
  • ExtUtils::MM_QNX
  • ExtUtils::MM_UWIN
  • ExtUtils::MM_Unix
  • ExtUtils::MM_VMS
  • ExtUtils::MM_VOS
  • ExtUtils::MM_Win32
  • ExtUtils::MM_Win95
  • ExtUtils::MY
  • ExtUtils::MakeMaker
  • ExtUtils::MakeMaker::Config
  • ExtUtils::MakeMaker::FAQ
  • ExtUtils::MakeMaker::Locale
  • ExtUtils::MakeMaker::Tutorial
  • ExtUtils::Manifest
  • ExtUtils::Miniperl
  • ExtUtils::Mkbootstrap
  • ExtUtils::Mksymlists
  • ExtUtils::PL2Bat
  • ExtUtils::Packlist
  • ExtUtils::ParseXS
  • ExtUtils::ParseXS::Constants
  • ExtUtils::ParseXS::Eval
  • ExtUtils::ParseXS::Node
  • ExtUtils::ParseXS::Utilities
  • ExtUtils::Typemaps
  • ExtUtils::Typemaps::Cmd
  • ExtUtils::Typemaps::InputMap
  • ExtUtils::Typemaps::OutputMap
  • ExtUtils::Typemaps::Type
  • ExtUtils::XSSymSet
  • ExtUtils::testlib
  • Fatal
  • Fcntl
  • File::Basename
  • File::Compare
  • File::Copy
  • File::DosGlob
  • File::Fetch
  • File::Find
  • File::Glob
  • File::GlobMapper
  • File::Path
  • File::Spec
  • File::Spec::AmigaOS
  • File::Spec::Cygwin
  • File::Spec::Epoc
  • File::Spec::Functions
  • File::Spec::Mac
  • File::Spec::OS2
  • File::Spec::Unix
  • File::Spec::VMS
  • File::Spec::Win32
  • File::Temp
  • File::stat
  • FileCache
  • FileHandle
  • Filter::Simple
  • Filter::Util::Call
  • FindBin
  • GDBM_File
  • Getopt::Long
  • Getopt::Long::Parser
  • Getopt::Std
  • HTTP::Tiny
  • Hash::Util
  • Hash::Util::FieldHash
  • I18N::Collate
  • I18N::LangTags
  • I18N::LangTags::Detect
  • I18N::LangTags::List
  • I18N::Langinfo
  • IO
  • IO::Compress
  • IO::Compress::Base
  • IO::Compress::Bzip2
  • IO::Compress::Deflate
  • IO::Compress::FAQ
  • IO::Compress::Gzip
  • IO::Compress::RawDeflate
  • IO::Compress::Zip
  • IO::Dir
  • IO::File
  • IO::Handle
  • IO::Pipe
  • IO::Poll
  • IO::Seekable
  • IO::Select
  • IO::Socket
  • IO::Socket::INET
  • IO::Socket::UNIX
  • IO::Uncompress::AnyInflate
  • IO::Uncompress::AnyUncompress
  • IO::Uncompress::Base
  • IO::Uncompress::Bunzip2
  • IO::Uncompress::Gunzip
  • IO::Uncompress::Inflate
  • IO::Uncompress::RawInflate
  • IO::Uncompress::Unzip
  • IO::Zlib
  • IPC::Cmd
  • IPC::Msg
  • IPC::Open2
  • IPC::Open3
  • IPC::Semaphore
  • IPC::SharedMem
  • IPC::SysV
  • Internals
  • JSON::PP
  • JSON::PP::Boolean
  • List::Util
  • List::Util::XS
  • Locale::Maketext
  • Locale::Maketext::Cookbook
  • Locale::Maketext::Guts
  • Locale::Maketext::GutsLoader
  • Locale::Maketext::Simple
  • Locale::Maketext::TPJ13
  • MIME::Base64
  • MIME::QuotedPrint
  • Math::BigFloat
  • Math::BigInt
  • Math::BigInt::Calc
  • Math::BigInt::FastCalc
  • Math::BigInt::Lib
  • Math::BigRat
  • Math::Complex
  • Math::Trig
  • Memoize
  • Memoize::AnyDBM_File
  • Memoize::Expire
  • Memoize::NDBM_File
  • Memoize::SDBM_File
  • Memoize::Storable
  • Module::CoreList
  • Module::CoreList::Utils
  • Module::Load
  • Module::Load::Conditional
  • Module::Loaded
  • Module::Metadata
  • NDBM_File
  • NEXT
  • Net::Cmd
  • Net::Config
  • Net::Domain
  • Net::FTP
  • Net::FTP::dataconn
  • Net::NNTP
  • Net::Netrc
  • Net::POP3
  • Net::Ping
  • Net::SMTP
  • Net::Time
  • Net::hostent
  • Net::libnetFAQ
  • Net::netent
  • Net::protoent
  • Net::servent
  • O
  • ODBM_File
  • Opcode
  • POSIX
  • Params::Check
  • Parse::CPAN::Meta
  • Perl::OSType
  • PerlIO
  • PerlIO::encoding
  • PerlIO::mmap
  • PerlIO::scalar
  • PerlIO::via
  • PerlIO::via::QuotedPrint
  • Pod::Checker
  • Pod::Escapes
  • Pod::Functions
  • Pod::Html
  • Pod::Html::Util
  • Pod::Man
  • Pod::ParseLink
  • Pod::Perldoc
  • Pod::Perldoc::BaseTo
  • Pod::Perldoc::GetOptsOO
  • Pod::Perldoc::ToANSI
  • Pod::Perldoc::ToChecker
  • Pod::Perldoc::ToMan
  • Pod::Perldoc::ToNroff
  • Pod::Perldoc::ToPod
  • Pod::Perldoc::ToRtf
  • Pod::Perldoc::ToTerm
  • Pod::Perldoc::ToText
  • Pod::Perldoc::ToTk
  • Pod::Perldoc::ToXml
  • Pod::Simple
  • Pod::Simple::Checker
  • Pod::Simple::Debug
  • Pod::Simple::DumpAsText
  • Pod::Simple::DumpAsXML
  • Pod::Simple::HTML
  • Pod::Simple::HTMLBatch
  • Pod::Simple::JustPod
  • Pod::Simple::LinkSection
  • Pod::Simple::Methody
  • Pod::Simple::PullParser
  • Pod::Simple::PullParserEndToken
  • Pod::Simple::PullParserStartToken
  • Pod::Simple::PullParserTextToken
  • Pod::Simple::PullParserToken
  • Pod::Simple::RTF
  • Pod::Simple::Search
  • Pod::Simple::SimpleTree
  • Pod::Simple::Subclassing
  • Pod::Simple::Text
  • Pod::Simple::TextContent
  • Pod::Simple::XHTML
  • Pod::Simple::XMLOutStream
  • Pod::Text
  • Pod::Text::Color
  • Pod::Text::Overstrike
  • Pod::Text::Termcap
  • Pod::Usage
  • SDBM_File
  • Safe
  • Scalar::List::Utils
  • Scalar::Util
  • Search::Dict
  • SelectSaver
  • SelfLoader
  • Storable
  • Sub::Util
  • Symbol
  • Sys::Hostname
  • Sys::Syslog
  • Sys::Syslog::Win32
  • TAP::Base
  • TAP::Formatter::Base
  • TAP::Formatter::Color
  • TAP::Formatter::Console
  • TAP::Formatter::Console::ParallelSession
  • TAP::Formatter::Console::Session
  • TAP::Formatter::File
  • TAP::Formatter::File::Session
  • TAP::Formatter::Session
  • TAP::Harness
  • TAP::Harness::Env
  • TAP::Object
  • TAP::Parser
  • TAP::Parser::Aggregator
  • TAP::Parser::Grammar
  • TAP::Parser::Iterator
  • TAP::Parser::Iterator::Array
  • TAP::Parser::Iterator::Process
  • TAP::Parser::Iterator::Stream
  • TAP::Parser::IteratorFactory
  • TAP::Parser::Multiplexer
  • TAP::Parser::Result
  • TAP::Parser::Result::Bailout
  • TAP::Parser::Result::Comment
  • TAP::Parser::Result::Plan
  • TAP::Parser::Result::Pragma
  • TAP::Parser::Result::Test
  • TAP::Parser::Result::Unknown
  • TAP::Parser::Result::Version
  • TAP::Parser::Result::YAML
  • TAP::Parser::ResultFactory
  • TAP::Parser::Scheduler
  • TAP::Parser::Scheduler::Job
  • TAP::Parser::Scheduler::Spinner
  • TAP::Parser::Source
  • TAP::Parser::SourceHandler
  • TAP::Parser::SourceHandler::Executable
  • TAP::Parser::SourceHandler::File
  • TAP::Parser::SourceHandler::Handle
  • TAP::Parser::SourceHandler::Perl
  • TAP::Parser::SourceHandler::RawTAP
  • TAP::Parser::YAMLish::Reader
  • TAP::Parser::YAMLish::Writer
  • Term::ANSIColor
  • Term::Cap
  • Term::Complete
  • Term::ReadLine
  • Term::Table
  • Term::Table::Cell
  • Term::Table::CellStack
  • Term::Table::HashBase
  • Term::Table::LineBreak
  • Term::Table::Util
  • Test
  • Test2
  • Test2::API
  • Test2::API::Breakage
  • Test2::API::Context
  • Test2::API::Instance
  • Test2::API::InterceptResult
  • Test2::API::InterceptResult::Event
  • Test2::API::InterceptResult::Hub
  • Test2::API::InterceptResult::Squasher
  • Test2::API::Stack
  • Test2::AsyncSubtest
  • Test2::AsyncSubtest::Event::Attach
  • Test2::AsyncSubtest::Event::Detach
  • Test2::AsyncSubtest::Hub
  • Test2::Bundle
  • Test2::Bundle::Extended
  • Test2::Bundle::More
  • Test2::Bundle::Simple
  • Test2::Compare
  • Test2::Compare::Array
  • Test2::Compare::Bag
  • Test2::Compare::Base
  • Test2::Compare::Bool
  • Test2::Compare::Custom
  • Test2::Compare::DeepRef
  • Test2::Compare::Delta
  • Test2::Compare::Event
  • Test2::Compare::EventMeta
  • Test2::Compare::Float
  • Test2::Compare::Hash
  • Test2::Compare::Isa
  • Test2::Compare::Meta
  • Test2::Compare::Negatable
  • Test2::Compare::Number
  • Test2::Compare::Object
  • Test2::Compare::OrderedSubset
  • Test2::Compare::Pattern
  • Test2::Compare::Ref
  • Test2::Compare::Regex
  • Test2::Compare::Scalar
  • Test2::Compare::Set
  • Test2::Compare::String
  • Test2::Compare::Undef
  • Test2::Compare::Wildcard
  • Test2::Env
  • Test2::Event
  • Test2::Event::Bail
  • Test2::Event::Diag
  • Test2::Event::Encoding
  • Test2::Event::Exception
  • Test2::Event::Fail
  • Test2::Event::Generic
  • Test2::Event::Note
  • Test2::Event::Ok
  • Test2::Event::Pass
  • Test2::Event::Plan
  • Test2::Event::Skip
  • Test2::Event::Subtest
  • Test2::Event::TAP::Version
  • Test2::Event::V2
  • Test2::Event::Waiting
  • Test2::EventFacet
  • Test2::EventFacet::About
  • Test2::EventFacet::Amnesty
  • Test2::EventFacet::Assert
  • Test2::EventFacet::Control
  • Test2::EventFacet::Error
  • Test2::EventFacet::Hub

The module list keeps GOING and honestly bestie, it's giving infinite scroll ๐Ÿ’€ but every single one of these is a real doc, so here we are, no skipping:

  • Test2::EventFacet::Info
  • Test2::EventFacet::Info::Table
  • Test2::EventFacet::Meta
  • Test2::EventFacet::Parent
  • Test2::EventFacet::Plan
  • Test2::EventFacet::Render
  • Test2::EventFacet::Trace
  • Test2::Formatter
  • Test2::Formatter::TAP
  • Test2::Hub
  • Test2::Hub::Interceptor
  • Test2::Hub::Interceptor::Terminator
  • Test2::Hub::Subtest
  • Test2::IPC
  • Test2::IPC::Driver
  • Test2::IPC::Driver::Files
  • Test2::Manual
  • Test2::Manual::Anatomy
  • Test2::Manual::Anatomy::API
  • Test2::Manual::Anatomy::Context
  • Test2::Manual::Anatomy::EndToEnd
  • Test2::Manual::Anatomy::Event
  • Test2::Manual::Anatomy::Hubs
  • Test2::Manual::Anatomy::IPC
  • Test2::Manual::Anatomy::Utilities
  • Test2::Manual::Concurrency
  • Test2::Manual::Contributing
  • Test2::Manual::Testing
  • Test2::Manual::Testing::Introduction
  • Test2::Manual::Testing::Migrating
  • Test2::Manual::Testing::Planning
  • Test2::Manual::Testing::Todo
  • Test2::Manual::Tooling
  • Test2::Manual::Tooling::FirstTool
  • Test2::Manual::Tooling::Formatter
  • Test2::Manual::Tooling::Nesting
  • Test2::Manual::Tooling::Plugin::TestExit
  • Test2::Manual::Tooling::Plugin::TestingDone
  • Test2::Manual::Tooling::Plugin::ToolCompletes
  • Test2::Manual::Tooling::Plugin::ToolStarts
  • Test2::Manual::Tooling::Subtest
  • Test2::Manual::Tooling::TestBuilder
  • Test2::Manual::Tooling::Testing
  • Test2::Mock
  • Test2::Plugin
  • Test2::Plugin::BailOnFail
  • Test2::Plugin::DieOnFail
  • Test2::Plugin::ExitSummary
  • Test2::Plugin::SRand
  • Test2::Plugin::Times
  • Test2::Plugin::UTF8
  • Test2::Require
  • Test2::Require::AuthorTesting
  • Test2::Require::AutomatedTesting
  • Test2::Require::EnvVar
  • Test2::Require::ExtendedTesting
  • Test2::Require::Fork
  • Test2::Require::Module
  • Test2::Require::NonInteractiveTesting
  • Test2::Require::Perl
  • Test2::Require::RealFork
  • Test2::Require::ReleaseTesting
  • Test2::Require::Threads
  • Test2::Suite
  • Test2::Todo
  • Test2::Tools
  • Test2::Tools::AsyncSubtest
  • Test2::Tools::Basic
  • Test2::Tools::Class
  • Test2::Tools::ClassicCompare
  • Test2::Tools::Compare
  • Test2::Tools::Defer
  • Test2::Tools::Encoding
  • Test2::Tools::Event
  • Test2::Tools::Exception
  • Test2::Tools::Exports
  • Test2::Tools::GenTemp
  • Test2::Tools::Grab
  • Test2::Tools::Mock
  • Test2::Tools::Ref
  • Test2::Tools::Spec
  • Test2::Tools::Subtest
  • Test2::Tools::Target
  • Test2::Tools::Tester
  • Test2::Tools::Tiny
  • Test2::Tools::Warnings
  • Test2::Transition
  • Test2::Util
  • Test2::Util::ExternalMeta
  • Test2::Util::Facets2Legacy
  • Test2::Util::Grabber
  • Test2::Util::Guard
  • Test2::Util::HashBase
  • Test2::Util::Importer
  • Test2::Util::Ref
  • Test2::Util::Sig
  • Test2::Util::Stash
  • Test2::Util::Sub
  • Test2::Util::Table
  • Test2::Util::Table::LineBreak
  • Test2::Util::Times
  • Test2::Util::Trace
  • Test2::V0
  • Test2::Workflow
  • Test2::Workflow::BlockBase
  • Test2::Workflow::Build
  • Test2::Workflow::Runner
  • Test2::Workflow::Task
  • Test2::Workflow::Task::Action
  • Test2::Workflow::Task::Group
  • Test::Builder
  • Test::Builder::Formatter
  • Test::Builder::Module
  • Test::Builder::Tester
  • Test::Builder::Tester::Color
  • Test::Builder::TodoDiag
  • Test::Harness
  • Test::Harness::Beyond
  • Test::More
  • Test::Simple
  • Test::Tester
  • Test::Tester::Capture
  • Test::Tester::CaptureRunner
  • Test::Tutorial
  • Test::use::ok
  • Text::Abbrev
  • Text::Balanced
  • Text::ParseWords
  • Text::Tabs
  • Text::Wrap
  • Thread
  • Thread::Queue
  • Thread::Semaphore
  • Tie::Array
  • Tie::File
  • Tie::Handle
  • Tie::Hash
  • Tie::Hash::NamedCapture
  • Tie::Memoize
  • Tie::RefHash
  • Tie::Scalar
  • Tie::StdHandle
  • Tie::SubstrHash
  • Time::HiRes
  • Time::Local
  • Time::Piece
  • Time::Seconds
  • Time::gmtime
  • Time::localtime
  • Time::tm
  • UNIVERSAL
  • Unicode::Collate
  • Unicode::Collate::CJK::Big5
  • Unicode::Collate::CJK::GB2312
  • Unicode::Collate::CJK::JISX0208
  • Unicode::Collate::CJK::Korean
  • Unicode::Collate::CJK::Pinyin
  • Unicode::Collate::CJK::Stroke
  • Unicode::Collate::CJK::Zhuyin
  • Unicode::Collate::Locale
  • Unicode::Normalize
  • Unicode::UCD
  • User::grent
  • User::pwent
  • VMS::DCLsym
  • VMS::Filespec
  • VMS::Stdio
  • Win32
  • Win32API::File
  • Win32CORE
  • XS::APItest
  • XS::Typemap
  • XSLoader
  • autodie::Scope::Guard
  • autodie::Scope::GuardStack
  • autodie::Util
  • version::Internals

PHEW. That's the whole list. You made it. Slay. ๐ŸŽ‰๐Ÿ’…


Extension Modules

  • CPAN
  • Modules: Creation, Use, and Abuse
    • Guidelines for Module Creation
    • Guidelines for Converting Perl 4 Library Scripts into Modules
    • Guidelines for Reusing Application Code

NOTE


perlmodstyle - Perl module style guide ๐ŸŽ€

This one's your vibe-check for how to write a module that doesn't make people go "ew." Here's what it covers:

INTRODUCTION

QUICK CHECKLIST

Before you start

The API

Stability

Documentation

Release considerations

BEFORE YOU START WRITING A MODULE

Has it been done before?

Do one thing and do it well

What's in a name?

Get feedback before publishing

DESIGNING AND WRITING YOUR MODULE

To OO or not to OO?

Designing your API

  • Write simple routines to do simple things
  • Separate functionality from output
  • Provide sensible shortcuts and defaults
  • Naming conventions
  • Parameter passing

Strictness and warnings

Backwards compatibility

Error handling and messages

DOCUMENTING YOUR MODULE

POD

README, INSTALL, release notes, changelogs

  • perl Makefile.PL
  • make
  • make test
  • make install
  • perl Build.PL
  • perl Build
  • perl Build test
  • perl Build install

RELEASE CONSIDERATIONS

Version numbering

Pre-requisites

Testing

Packaging

Licensing

COMMON PITFALLS

Reinventing the wheel

Trying to do too much

Inappropriate documentation

SEE ALSO

  • perlstyle
  • perlnewmod
  • perlpod
  • podchecker
  • Packaging Tools
  • Testing tools
  • <https://pause.perl.org/>
  • Any good book on software engineering

AUTHOR


perlmodinstall - Installing CPAN Modules ๐Ÿ“ฆ

DESCRIPTION

PREAMBLE

  • DECOMPRESS the file
  • UNPACK the file into a directory
  • BUILD the module (sometimes unnecessary)
  • INSTALL the module

PORTABILITY

HEY

AUTHOR


perlnewmod - preparing a new module for distribution ๐ŸŒฑ

DESCRIPTION

Warning

What should I make into a module?

Step-by-step: Preparing the ground

  • Look around
  • Check it's new
  • Discuss the need
  • Choose a name
  • Check again

Step-by-step: Making the module

  • Start with module-starter or h2xs
  • Use strict and warnings
  • Use Carp
  • Use Exporter - wisely!
  • Use plain old documentation
  • Write tests
  • Write the README
  • Write Changes

Step-by-step: Distributing your module

  • Get a CPAN user ID
  • Make the tarball
  • Upload the tarball
  • Fix bugs!

AUTHOR

SEE ALSO


perlpragma - how to write a user pragma โœจ

DESCRIPTION

A basic example

Key naming

Implementation details


perlutil - utilities packaged with the Perl distribution ๐Ÿงฐ

DESCRIPTION

LIST OF UTILITIES

Documentation

  • perldoc
  • pod2man
  • pod2text
  • pod2html
  • pod2usage
  • podchecker
  • splain
  • roffitall

Converters

  • pl2pm

Administration

  • libnetcfg
  • perlivp

Development

  • perlbug
  • perlthanks
  • h2ph
  • h2xs
  • enc2xs
  • xsubpp
  • prove
  • corelist

General tools

  • encguess
  • json_pp
  • piconv
  • ptar
  • ptardiff
  • ptargrep
  • shasum
  • streamzip
  • zipdetails

Installation

  • cpan
  • instmodsh

SEE ALSO


perlfilter - Source Filters ๐Ÿ•ต๏ธ

DESCRIPTION

CONCEPTS

USING FILTERS

WRITING A SOURCE FILTER

WRITING A SOURCE FILTER IN C

Decryption Filters

CREATING A SOURCE FILTER AS A SEPARATE EXECUTABLE

WRITING A SOURCE FILTER IN PERL

USING CONTEXT: THE DEBUG FILTER

CONCLUSION

LIMITATIONS

THINGS TO LOOK OUT FOR

Some Filters Clobber the "DATA" Handle

REQUIREMENTS

AUTHOR

Copyrights


perldtrace - Perl's support for DTrace ๐Ÿ”ฌ

SYNOPSIS

DESCRIPTION

HISTORY

PROBES

  • sub-entry(SUBNAME, FILE, LINE, PACKAGE)
  • sub-return(SUBNAME, FILE, LINE, PACKAGE)
  • phase-change(NEWPHASE, OLDPHASE)
  • op-entry(OPNAME)
  • loading-file(FILENAME)
  • loaded-file(FILENAME)

EXAMPLES

  • Most frequently called functions
  • Trace function calls
  • Function calls during interpreter cleanup
  • System calls at compile time
  • Perl functions that execute the most opcodes

REFERENCES

  • DTrace Dynamic Tracing Guide
  • DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD

SEE ALSO

  • Devel::DTrace::Provider

AUTHORS


perlglossary - Perl Glossary ๐Ÿ“–

The big dictionary moment. Alphabetized and everything, periodt.

VERSION

DESCRIPTION

A

accessor methods, actual arguments, address operator, algorithm, alias, alphabetic, alternatives, anonymous, application, architecture, argument, ARGV, arithmetical operator, array, array context, Artistic License, ASCII, assertion, assignment, assignment operator, associative array, associativity, asynchronous, atom, atomic operation, attribute, autogeneration, autoincrement, autoload, autosplit, autovivification, AV, awk

B

backreference, backtracking, backward compatibility, bareword, base class, big-endian, binary, binary operator, bind, bit, bit shift, bit string, bless, block, BLOCK, block buffering, Boolean, Boolean context, breakpoint, broadcast, BSD, bucket, buffer, built-in, bundle, byte, bytecode

C

C, cache, callback, call by reference, call by value, canonical, capture variables, capturing, cargo cult, case, casefolding, casemapping, character, character class, character property, circumfix operator, class, class method, client, closure, cluster, CODE, code generator, codepoint, code subpattern, collating sequence, co-maintainer, combining character, command, command buffering, command-line arguments, command name, comment, compilation unit, compile, compile phase, compiler, compile time, composer, concatenation, conditional, connection, construct, constructor, context, continuation, core dump, CPAN, C preprocessor, cracker, currently selected output channel, current package, current working directory, CV


and bestie the glossary keeps going in the next part, we're literally only at C ๐Ÿ˜ญ ๐Ÿฆ‹

  • D โ€” dangling statement, datagram, data structure, data type, DBM, declaration, declarator, decrement, default, defined, delimiter, dereference, derived class, descriptor, destroy, destructor, device, directive, directory, directory handle, discipline, dispatch, distribution, dual-lived, dweomer, dwimmer, dynamic scoping
  • E โ€” eclectic, element, embedding, empty subclass test, encapsulation, endian, en passant, environment, environment variable, EOF, errno, error, escape sequence, exception, exception handling, exec, executable file, execute, execute bit, exit status, exploit, export, expression, extension
  • F โ€” false, FAQ, fatal error, feeping creaturism, field, FIFO, file, file descriptor, fileglob, filehandle, filename, filesystem, file test operator, filter, first-come, flag, floating point, flush, FMTEYEWTK, foldcase, fork, formal arguments, format, freely available, freely redistributable, freeware, function, funny character
  • G โ€” garbage collection, GID, glob, global, global destruction, glue language, granularity, grapheme, greedy, grep, group, GV
  • H โ€” hacker, handler, hard reference, hash, hash table, header file, here document, hexadecimal, home directory, host, hubris, HV
  • I โ€” identifier, impatience, implementation, import, increment, indexing, indirect filehandle, indirection, indirect object, indirect object slot, infix, inheritance, instance, instance data, instance method, instance variable, integer, interface, interpolation, interpreter, invocant, invocation, I/O, IO, I/O layer, IPA, IP, IPC, is-a, iteration, iterator, IV
  • J โ€” JAPH
  • K โ€” key, keyword
  • L โ€” label, laziness, leftmost longest, left shift, lexeme, lexer, lexical analysis, lexical scoping, lexical variable, library, LIFO, line, linebreak, line buffering, line number, link, LIST, list, list context, list operator, list value, literal, little-endian, local, logical operator, lookahead, lookbehind, loop, loop control statement, loop label, lowercase, lvaluable, lvalue, lvalue modifier
  • M โ€” magic, magical increment, magical variables, Makefile, man, manpage, matching, member data, memory, metacharacter, metasymbol, method, method resolution order, minicpan, minimalism, mode, modifier, module, modulus, mojibake, monger, mortal, mro, multidimensional array, multiple inheritance
  • N โ€” named pipe, namespace, NaN, network address, newline, NFS, normalization, null character, null list, null string, numeric context, numification, NV, nybble
  • O โ€” object, octal, offset, one-liner, open source software, operand, operating system, operator, operator overloading, options, ordinal, overloading, overriding, owner
  • P โ€” package, pad, parameter, parent class, parse tree, parsing, patch, PATH, pathname, pattern, pattern matching, PAUSE, Perl mongers, permission bits, Pern, phaser, pipe, pipeline, platform, pod, pod command, pointer, polymorphism, port, portable, porter, possessive, POSIX, postfix, pp, pragma, precedence, prefix, preprocessing, primary maintainer, procedure, process, program, program generator, progressive matching, property, protocol, prototype, pseudofunction, pseudohash, pseudoliteral, public domain, pumpkin, pumpking, PV
  • Q โ€” qualified, quantifier
  • R โ€” race condition, readable, reaping, record, recursion, reference, referent, regex, regular expression, regular expression modifier, regular file, relational operator, reserved words, return value, RFC, right shift, role, root, RTFM, run phase, runtime, runtime pattern, RV, rvalue
  • S โ€” sandbox, scalar, scalar context, scalar literal, scalar value, scalar variable, scope, scratchpad, script, script kiddie, sed, semaphore, separator, serialization, server, service, setgid, setuid, shared memory, shebang, shell, side effects, sigil, signal, signal handler, single inheritance, slice, slurp, socket, soft reference, source filter, stack, standard, standard error, standard input, standard I/O, Standard Library, standard output, statement, statement modifier, static, static method, static scoping, static variable, stat structure, status, STDERR, STDIN, STDIO, STDOUT, stream, string, string context, stringification, struct, structure, subclass, subpattern, subroutine, subscript, substitution, substring, superclass, superuser, SV, switch, switch cluster, switch statement, symbol, symbolic debugger, symbolic link, symbolic reference, symbol table, synchronous, syntactic sugar, syntax, syntax tree, syscall
  • T โ€” taint checks, tainted, taint mode, TCP, term, terminator, ternary, text, thread, tie, titlecase, TMTOWTDI, token, tokener, tokenizing, toolbox approach, topic, transliterate, trigger, trinary, troff, true, truncating, type, type casting, typedef, typed lexical, typeglob, typemap
  • U โ€” UDP, UID, umask, unary operator, Unicode, Unix, uppercase, UTF-8 string
  • V โ€” value, variable, variable interpolation, variadic, vector, virtual, void context, v-string
  • W โ€” warning, watch expression, weak reference, whitespace, word, working directory, wrapper, WYSIWYG
  • X โ€” XS, XSUB
  • Y โ€” yacc
  • Z โ€” zero width, zombie

and that's the whole glossary index, alphabet done, we ate ๐Ÿ“


(no body under this one in the listing bestie, it's literally just the heading โ€” the credits live in the actual manpage, this is only the table of contents ๐Ÿ’…)


๐Ÿงš perlembed - how to embed perl in your C program

  • DESCRIPTION
    • PREAMBLE
      • Use C from Perl?
      • Use a Unix program from Perl?
      • Use Perl from Perl?
      • Use C from C?
      • Use Perl from C?
    • ROADMAP
    • Compiling your C program
    • Adding a Perl interpreter to your C program
    • Calling a Perl subroutine from your C program
    • Evaluating a Perl statement from your C program
    • Performing Perl pattern matches and substitutions from your C program
    • Fiddling with the Perl stack from your C program
    • Maintaining a persistent interpreter
    • Execution of END blocks
    • $0 assignments
    • Maintaining multiple interpreter instances
    • Using Perl modules, which themselves use C libraries, from your C program
    • Using embedded Perl with POSIX locales
  • Hiding Perl_
  • MORAL
  • AUTHOR
  • COPYRIGHT

๐Ÿฆ‹ perldebguts - Guts of Perl debugging

  • DESCRIPTION
  • Debugger Internals
    • Writing Your Own Debugger
  • Frame Listing Output Examples
  • Debugging Regular Expressions
    • Compile-time Output
      • "anchored" STRING "at" POS, "floating" STRING "at" POS1..POS2, "matching floating/anchored", "minlen", "stclass" TYPE, "noscan", "isall", "GPOS", "plus", "implicit", "with eval", anchored(TYPE)
    • Types of Nodes
    • Run-time Output
  • Debugging Perl Memory Usage
    • Using $ENV{PERL_DEBUG_MSTATS}
      • "buckets SMALLEST(APPROX)..GREATEST(APPROX)", Free/Used, "Total sbrk(): SBRKed/SBRKs:CONTINUOUS", "pad: 0", "heads: 2192", "chain: 0", tail: 6144
  • SEE ALSO

๐ŸŒธ perlxstut - Tutorial for writing XSUBs

  • DESCRIPTION
  • SPECIAL NOTES
    • make
    • Version caveat
    • Dynamic Loading versus Static Loading
    • Threads and PERL_NO_GET_CONTEXT
  • TUTORIAL
    • EXAMPLE 1
    • EXAMPLE 2
    • What has gone on?
    • Writing good test scripts
    • EXAMPLE 3
    • What's new here?
    • Input and Output Parameters
    • The XSUBPP Program
    • The TYPEMAP file
    • Warning about Output Arguments
    • EXAMPLE 4
    • What has happened here?
    • Anatomy of .xs file
    • Getting the fat out of XSUBs
    • More about XSUB arguments
    • The Argument Stack
    • Extending your Extension
    • Documenting your Extension
    • Installing your Extension
    • EXAMPLE 5
    • New Things in this Example
    • EXAMPLE 6
    • New Things in this Example
    • EXAMPLE 7 (Coming Soon)
    • EXAMPLE 8 (Coming Soon)
    • EXAMPLE 9 Passing open files to XSes
    • Troubleshooting these Examples
  • See also
  • Author
    • Last Changed

๐Ÿ‘‘ perlxs - XS language reference manual

  • DESCRIPTION
    • Introduction
    • On The Road
    • The Anatomy of an XSUB
    • The Argument Stack
    • The RETVAL Variable
    • Returning SVs, AVs and HVs through RETVAL
    • The MODULE Keyword
    • The PACKAGE Keyword
    • The PREFIX Keyword
    • The OUTPUT: Keyword
    • The NO_OUTPUT Keyword
    • The CODE: Keyword
    • The INIT: Keyword
    • The NO_INIT Keyword
    • The TYPEMAP: Keyword
    • Initializing Function Parameters
    • Default Parameter Values
    • The PREINIT: Keyword
    • The SCOPE: Keyword
    • The INPUT: Keyword
    • The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords
    • The length(NAME) Keyword
    • Variable-length Parameter Lists
    • The C_ARGS: Keyword
    • The PPCODE: Keyword
    • Returning Undef And Empty Lists
    • The REQUIRE: Keyword
    • The CLEANUP: Keyword
    • The POSTCALL: Keyword
    • The BOOT: Keyword
    • The VERSIONCHECK: Keyword
    • The PROTOTYPES: Keyword
    • The PROTOTYPE: Keyword
    • The ALIAS: Keyword
    • The OVERLOAD: Keyword
    • The FALLBACK: Keyword
    • The INTERFACE: Keyword
    • The INTERFACE_MACRO: Keyword
    • The INCLUDE: Keyword
    • The INCLUDE_COMMAND: Keyword
    • The CASE: Keyword
    • The EXPORT_XSUB_SYMBOLS: Keyword
    • The & Unary Operator
    • Inserting POD, Comments and C Preprocessor Directives
    • Using XS With C++
    • Interface Strategy
    • Perl Objects And C Structures
    • Safely Storing Static Data in XS
      • MY_CXT_KEY, typedef my_cxt_t, START_MY_CXT, MY_CXT_INIT, dMY_CXT, MY_CXT, aMY_CXT/pMY_CXT, MY_CXT_CLONE, MY_CXT_INIT_INTERP(my_perl), dMY_CXT_INTERP(my_perl)
  • EXAMPLES
  • CAVEATS
    • Use of standard C library functions
    • Event loops and control flow
  • XS VERSION
  • AUTHOR DIAGNOSTICS
  • AUTHOR

perlxstypemap โ€” Perl XS C/Perl type mapping ๐Ÿ’…

okay so this is the page that spills how XS maps C types โ†” Perl types, and bestie it is a LOT. buckle up ๐ŸŽ€

DESCRIPTION

  • Anatomy of a typemap ๐Ÿงฌ
  • The Role of the typemap File in Your Distribution
  • Sharing typemaps Between CPAN Distributions โ€” sharing is caring fr fr ๐Ÿซถ
  • Writing typemap Entries โœ๏ธ
  • Full Listing of Core Typemaps โ€” the whole roster, no gatekeeping:
    • T_SV
    • T_SVREF
    • T_SVREF_FIXED
    • T_AVREF
    • T_AVREF_REFCOUNT_FIXED
    • T_HVREF
    • T_HVREF_REFCOUNT_FIXED
    • T_CVREF
    • T_CVREF_REFCOUNT_FIXED
    • T_SYSRET
    • T_UV
    • T_IV
    • T_INT
    • T_ENUM
    • T_BOOL
    • T_U_INT
    • T_SHORT
    • T_U_SHORT
    • T_LONG
    • T_U_LONG
    • T_CHAR
    • T_U_CHAR
    • T_FLOAT
    • T_NV
    • T_DOUBLE
    • T_PV
    • T_PTR
    • T_PTRREF
    • T_PTROBJ
    • T_REF_IV_REF
    • T_REF_IV_PTR
    • T_PTRDESC
    • T_REFREF
    • T_REFOBJ
    • T_OPAQUEPTR
    • T_OPAQUE
    • Implicit array
    • T_PACKED
    • T_PACKEDARRAY
    • T_DATAUNIT
    • T_CALLBACK
    • T_ARRAY
    • T_STDIO
    • T_INOUT
    • T_IN
    • T_OUT

perlclib โ€” Interacting with standard C library functions ๐ŸŒธ

the page that's basically "bestie, pls don't just raw-dog the C library" ๐Ÿ˜ญ

DESCRIPTION

  • libc functions to avoid ๐Ÿšซ
    • Conventions
      • "~"
      • "t"
      • "p"
      • "n"
      • "s"
    • File Operations
    • File Input and Output
    • File Positioning
    • Memory Management and String Handling
    • Character Class Tests
    • stdlib.h functions
    • Miscellaneous functions
  • Dealing with locales ๐ŸŒ
  • Dealing with embedded perls and threads ๐Ÿงต
    • Functions always unsuitable for use under multi-threads
    • Functions which must be called at least once before starting threads
    • Functions that are thread-safe when called with appropriate arguments
    • Functions vulnerable to signals
    • General issues with thread-safety
    • Reentrant equivalent functions
      • For items marked "*"
      • For the remaining items
      • If you #define PERL_REENTRANT
      • If you don't enable automatic substitution
    • Functions that need the environment to be constant
    • Locale-specific issues

SEE ALSO


perlguts โ€” Introduction to the Perl API ๐Ÿ‘‘

this is the big one. the main character of internals docs. it's giving "everything you ever wanted to know about SVs and were too scared to ask" โœจ

DESCRIPTION

Variables

  • Datatypes
  • What is an "IV"?
  • Working with SVs ๐Ÿซถ
    • SvIV(SV*) ("IV") and SvUV(SV*) ("UV")
    • SvNV(SV*) ("double")
    • Strings are a bit complicated:
      • Byte string: "SvPVbyte(SV*, STRLEN len)" or SvPVbyte_nolen(SV*)
      • UTF-8 string: "SvPVutf8(SV*, STRLEN len)" or SvPVutf8_nolen(SV*)
      • You can also use "SvPV(SV*, STRLEN len)" or SvPV_nolen(SV*) to fetch the SV's raw internal buffer. This is tricky, though; if your Perl string is "\xff\xff", then depending on the SV's internal encoding you might get back a 2-byte OR a 4-byte "char*". Moreover, if it's the 4-byte string, that could come from either Perl "\xff\xff" stored UTF-8 encoded, or Perl "\xc3\xbf\xc3\xbf" stored as raw octets. To differentiate between these you MUST look up the SV's UTF8 bit (cf. "SvUTF8") to know whether the source Perl string is 2 characters ("SvUTF8" would be on) or 4 characters ("SvUTF8" would be off) ๐Ÿ’€
  • Offsets
  • What's Really Stored in an SV?
  • Read-Only Values
  • Copy on Write
  • THINKFIRST before writing to a string buffer โš ๏ธ
    • Points to a COW buffer
    • Is READONLY
    • Contains a reference
    • Has some relevant magic assigned
    • SV_CHECK_THINKFIRST(sv) calls sv_force_normal(sv) to copy the string buffer, turning it into a mutable string
    • SV_CHECK_THINKFIRST_COW_DROP(sv) calls "sv_force_normal_flags(sv, SV_COW_DROP_PV)" which drops any string buffer pointed to by "sv". This is usually used to avoid copying any COW string to a new buffer, prior to writing some completely new string to "sv"
  • Working with AVs
    • "av_store_simple", "av_fetch_simple", "av_push_simple", are not magical, are not readonly, are "real" AVs (see next section), have an av_top_index value > -2
    • Every accessible element in the array is either initialized but empty or contains a pointer to a live SV
    • When a SV* is assigned to an array element, the reference count on the SV is incremented. Conversely, when the element is unset, or assigned a different SV*, the reference count of the expelled SV is decremented
  • Working with HVs
  • Hash API Extensions
  • AVs, HVs and undefined values
  • References
  • Blessed References and Class Objects ๐Ÿ‘‘
  • Creating New Variables
    • GV_ADDMULTI
    • GV_ADDWARN
  • Reference Counts and Mortality
  • Stashes and Globs
  • I/O Handles
  • Double-Typed SVs
  • Magic Variables โœจ
  • Assigning Magic
  • Magic Virtual Tables
  • Finding Magic
  • Understanding the Magic of Tied Hashes and Arrays
  • Localizing changes
    • "SAVEINT(int i)"
    • "SAVEIV(IV i)"
    • "SAVEI32(I32 i)"
    • "SAVEI8(I8 i)"
    • "SAVEI16(I16 i)"
    • "SAVEBOOL(int i)"
    • "SAVESTRLEN(STRLEN i)"
    • SAVESPTR(s)
    • SAVEPPTR(p)
    • "SAVERCPV(char **ppv)"
    • "SAVEGENERICSV(SV **psv)"
    • "SAVEFREESV(SV *sv)"
    • "SAVEMORTALIZESV(SV *sv)"
    • "SAVEFREEOP(OP *op)"
    • SAVEFREEPV(p)
    • "SAVEFREERCPV(char *pv)"
    • "SAVECLEARSV(SV *sv)"
    • "SAVEDELETE(HV *hv, char *key, I32 length)"
    • "SAVEDESTRUCTOR(DESTRUCTORFUNC_NOCONTEXT_t f, void *p)"
    • "SAVEDESTRUCTOR_X(DESTRUCTORFUNC_t f, void *p)"
    • "MORTALSVFUNC_X(SVFUNC_t f, SV *sv)"
    • "MORTALDESTRUCTOR_SV(SV *coderef, SV *args)"
    • SAVESTACK_POS()
    • "SV* save_scalar(GV *gv)"
    • "AV* save_ary(GV *gv)"
    • "HV* save_hash(GV *gv)"
    • "void save_item(SV *item)"
    • "SV* save_svref(SV **sptr)"
    • "void save_aptr(AV **aptr)"
    • "void save_hptr(HV **hptr)"

Subroutines

  • XSUBs and the Argument Stack
  • Autoloading with XSUBs
  • Calling Perl Routines from within C Programs
  • Putting a C value on Perl stack
  • Scratchpads
  • Scratchpads and recursion

Memory Allocation

  • Allocation
  • Reallocation
  • Moving

PerlIO

Compiled code

  • Code tree
  • Examining the tree
  • Compile pass 1: check routines
  • Compile pass 1a: constant folding
  • Compile pass 2: context propagation
  • Compile pass 3: peephole optimization
  • Pluggable runops
  • Compile-time scope hooks
    • "void bhk_start(pTHX_ int full)"
    • "void bhk_pre_end(pTHX_ OP **o)"
    • "void bhk_post_end(pTHX_ OP **o)"
    • "void bhk_eval(pTHX_ OP *const o)"

Examining internal data structures with the "dump" functions

How multiple interpreters and concurrency are supported

  • Background and MULTIPLICITY
  • So what happened to dTHR?
  • How do I use all this in extensions?
  • Should I do anything special if I call perl from multiple threads?
  • Future Plans and PERL_IMPLICIT_SYS

Internal Functions

  • Formatted Printing of IVs, UVs, and NVs
  • Formatted Printing of SVs
  • Formatted Printing of Strings

Formatted Printing of "Size_t" and "SSize_t"

Formatted Printing of "Ptrdiff_t", "intmax_t", "short" and other special sizes

Pointer-To-Integer and Integer-To-Pointer

Exception Handling

Source Documentation

Backwards compatibility

Unicode Support ๐ŸŒˆ

  • What is Unicode, anyway?
  • How can I recognise a UTF-8 string?
  • How does UTF-8 represent Unicode characters?
  • How does Perl store UTF-8 strings?
  • How do I pass a Perl string to a C library?
    • bytes: 0x64 0x78 0x8c
    • UTF-8: 0x64 0x78 0xc2 0x8c
  • How do I convert a string to UTF-8?
  • How do I compare strings?
  • Is there anything else I need to know?

Custom Operators

  • xop_name
  • xop_desc
  • xop_class
  • OA_BASEOP
  • OA_UNOP
  • OA_BINOP
  • OA_LOGOP
  • OA_LISTOP
  • OA_PMOP
  • OA_SVOP
  • OA_PADOP
  • OA_PVOP_OR_SVOP
  • OA_LOOP
  • OA_COP
  • xop_peep
  • xop_dump

Stacks

  • Value Stack
  • Mark Stack
  • Temporaries Stack
  • Save Stack
  • Scope Stack

Dynamic Scope and the Context Stack

  • Introduction to the context stack
  • Pushing contexts
  • Popping contexts
  • Redoing contexts

Reference-counted argument stack

  • Introduction
  • Reference counted stack states
    • not reference-counted
    • fully reference-counted
    • partially reference-counted (split)
  • Wrapping
  • (Re)writing a PP function using the rpp_() API

Slab-based operator allocation

AUTHORS

SEE ALSO


perlcall โ€” Perl calling conventions from C ๐Ÿ“ž

calling Perl from C. the whole vibe. let's go ๐Ÿฆ‹

DESCRIPTION

  • An Error Handler
  • An Event-Driven Program

THE CALL_ FUNCTIONS

  • call_sv, call_pv, call_method, call_argv

FLAG VALUES

  • G_VOID
  • G_SCALAR
  • G_LIST
  • G_DISCARD
  • G_NOARGS
  • G_EVAL
  • G_KEEPERR
  • Determining the Context

EXAMPLES

  • No Parameters, Nothing Returned
  • Passing Parameters
  • Returning a Scalar
  • Returning a List of Values
  • Returning a List in Scalar Context
  • Returning Data from Perl via the Parameter List
  • Using G_EVAL
  • Using G_KEEPERR
  • Using call_sv
  • Using call_argv
  • Using call_method
  • Using GIMME_V
  • Using Perl to Dispose of Temporaries
  • Strategies for Storing Callback Context Information
    • 1. Ignore the problem - Allow only 1 callback
    • 2. Create a sequence of callbacks - hard wired limit
    • 3. Use a parameter to map to the Perl callback
  • Alternate Stack Manipulation
  • Creating and Calling an Anonymous Subroutine in C

LIGHTWEIGHT CALLBACKS

SEE ALSO

AUTHOR

DATE


perlmroapi โ€” Perl method resolution plugin interface ๐Ÿงš

plug into method resolution. yes, that's a thing, and yes it slaps ๐Ÿ’œ

DESCRIPTION

  • resolve
  • name
  • length
  • kflags
  • hash

Callbacks

Caching

Examples

AUTHORS


perlreapi โ€” Perl regular expression plugin interface ๐Ÿ”ฅ

regex engines, but make it pluggable. iconic behavior honestly ๐Ÿ’…

DESCRIPTION

Callbacks

  • comp
    • "/m" - RXf_PMf_MULTILINE
    • "/s" - RXf_PMf_SINGLELINE
    • "/i" - RXf_PMf_FOLD
    • "/x" - RXf_PMf_EXTENDED
    • "/p" - RXf_PMf_KEEPCOPY
    • Character set
    • RXf_SPLIT
    • RXf_SKIPWHITE
    • RXf_START_ONLY
    • RXf_WHITE
    • RXf_NULL
    • RXf_NO_INPLACE_SUBST
  • exec
    • rx
    • sv
    • strbeg
    • strend
    • stringarg
    • minend
    • data
    • flags
  • intuit
  • checkstr
  • free
  • Numbered capture callbacks
  • Named capture callbacks
  • qr_package
  • dupe
  • op_comp

The REGEXP structure

  • "engine"
  • "mother_re"
  • "extflags"
  • "minlen" "minlenret"
  • "gofs"
  • "substrs"
  • "nparens", "logical_nparens"
  • "logical_to_parno", "parno_to_logical", "parno_to_logical_next"
  • "lastparen", and "lastcloseparen"
  • "intflags"
  • "pprivate"
  • "offs"
  • "RX_PRECOMP" "RX_PRELEN"
  • "paren_names"
  • "substrs"
  • "subbeg" "sublen" "saved_copy" "suboffset" "subcoffset"
  • "RX_WRAPPED" "RX_WRAPLEN"
  • RX_REFCNT()

HISTORY

AUTHORS

LICENSE

Compilation

  • anchored fixed strings
  • floating fixed strings
  • minimum and maximum length requirements
  • start class
  • Beginning/End of line positions

Execution


MISCELLANEOUS

Unicode and Localisation Support

Base Structures

  • regstclass
  • data
  • code_blocks
  • proglen
  • name_list_idx
  • program

SEE ALSO

AUTHOR

LICENCE

REFERENCES


perlclassguts โ€” the internals of how feature 'class' and class syntax works ๐Ÿ‘‘

DESCRIPTION

DATA STORAGE

  • Classes
  • Fields
  • Methods
  • Instances

API

  • Class Manipulation
  • Field Manipulation
  • Method Manipulation
  • Object Instances

OPCODES

  • OP_METHSTART
  • OP_INITFIELD

COMPILE-TIME BEHAVIOUR

  • "ADJUST" Phasers
  • Attributes
  • Field Initializing Expressions

RUNTIME BEHAVIOUR

  • Constructor
  • $self Access During Methods

AUTHORS


perlapi โ€” autogenerated documentation for the perl public API โœจ

DESCRIPTION

Bestie, this is literally the whole index of the public API, all cross-referenced and everything. Every one of these points at its own section "in perlapi":

  • "AV Handling" in perlapi, "Callback Functions" in perlapi, "Casting" in perlapi, "Character case changing" in perlapi, "Character classification" in perlapi, "Compiler and Preprocessor information" in perlapi, "Compiler directives" in perlapi, "Compile-time scope hooks" in perlapi, "Concurrency" in perlapi, "COPs and Hint Hashes" in perlapi, "Custom Operators" in perlapi, "CV Handling" in perlapi, "Debugging" in perlapi, "Display functions" in perlapi, "Embedding, Threads, and Interpreter Cloning" in perlapi, "Errno" in perlapi, "Exception Handling (simple) Macros" in perlapi, "Filesystem configuration values" in perlapi, "Floating point" in perlapi, "General Configuration" in perlapi, "Global Variables" in perlapi, "GV Handling and Stashes" in perlapi, "Hook manipulation" in perlapi, "HV Handling" in perlapi, "Input/Output" in perlapi, "Integer" in perlapi, "I/O Formats" in perlapi, "Lexer interface" in perlapi, "Locales" in perlapi, "Magic" in perlapi, "Memory Management" in perlapi, "MRO" in perlapi, "Multicall Functions" in perlapi, "Numeric Functions" in perlapi, "Optrees" in perlapi, "Pack and Unpack" in perlapi, "Pad Data Structures" in perlapi, "Password and Group access" in perlapi, "Paths to system commands" in perlapi, "Prototype information" in perlapi, "Reference-counted stack manipulation" in perlapi, "REGEXP Functions" in perlapi, "Reports and Formats" in perlapi, "Signals" in perlapi, "Site configuration" in perlapi, "Sockets configuration values" in perlapi, "Source Filters" in perlapi, "Stack Manipulation Macros" in perlapi, "String Handling" in perlapi, "SV Flags" in perlapi, "SV Handling" in perlapi, "Tainting" in perlapi, "Time" in perlapi, "Typedef names" in perlapi, "Unicode Support" in perlapi, "Utility Functions" in perlapi, "Versioning" in perlapi, "Warning and Dieing" in perlapi, "XS" in perlapi, "Undocumented elements" in perlapi

AV Handling ๐ŸŒˆ

  • AV, av_clear, av_count, av_create_and_push, av_create_and_unshift_one, av_delete, av_exists, av_extend, av_fetch, av_fill, av_len*, av_make, av_pop, av_push, av_push_simple, av_shift, av_store, av_top_index, av_tindex, AvFILL, av_len, av_undef, av_unshift, AvALLOC, AvARRAY, AvFILL*, AvREFCNT_inc, AvREFCNT_inc_simple, AvREFCNT_inc_simple_NN, get_av, newAV, newAV_mortal, newAV_alloc_x, newAV_alloc_xz, newAV form, newAV_mortal form, newAV_alloc_x form, newAV_alloc_xz form, newAVav, newAVhv, Nullav

Callback Functions ๐Ÿ’–

  • call_argv, call_method, call_pv, call_sv, DESTRUCTORFUNC_NOCONTEXT_t, DESTRUCTORFUNC_t, ENTER, ENTER_with_name, eval_pv, eval_sv, FREETMPS, G_DISCARD, G_EVAL, G_KEEPERR, G_LIST, G_NOARGS, G_SCALAR, G_VOID, GIMME, GIMME_V, is_lvalue_sub, LEAVE, LEAVE_with_name, mortal_destructor_sv, MORTALDESTRUCTOR_SV, MORTALSVFUNC_X, PL_errgv, save_aelem, save_aelem_flags, save_aptr, save_ary, save_hash, save_helem, save_helem_flags, save_hptr, save_item, save_scalar, save_svref, SAVEBOOL, SAVEDELETE, SAVEDESTRUCTOR, SAVEDESTRUCTOR_X, SAVEFREEOP, SAVEFREEPV, SAVEFREERCPV, SAVEFREESV, SAVEGENERICSV, SAVEINT, SAVEIV, SAVEI8, SAVEI16, SAVEI32, SAVEMORTALIZESV, SAVEPPTR, SAVERCPV, SAVESPTR, SAVESTACK_POS, SAVESTRLEN, SAVETMPS

Casting ๐ŸŽ€

  • cBOOL, I_V, I_32, INT2PTR, PTRV, PTR2IV, PTR2nat, PTR2NV, PTR2ul, PTR2UV, U_V, U_32

Character case changing ๐Ÿฆ‹

  • toFOLD, toFOLD_A, toFOLD_utf8, toFOLD_utf8_safe, toFOLD_uvchr, toLOWER, toLOWER_A, toLOWER_LATIN1, toLOWER_LC, toLOWER_L1, toLOWER_utf8, toLOWER_utf8_safe, toLOWER_uvchr
  • toTITLE, toTITLE_A, toTITLE_utf8, toTITLE_utf8_safe, toTITLE_uvchr, toUPPER, toUPPER_A, toUPPER_utf8, toUPPER_utf8_safe, toUPPER_uvchr

Character classification ๐Ÿ’…

Ok this one is long bestie, but every single one matters, no skipping:

  • isALNUM, isALNUM_A, isALNUM_LC, isALNUM_LC_uvchr, isALNUMC, isALNUMC_A, isALNUMC_LC, isALNUMC_LC_uvchr, isALNUMC_L1, isALPHA, isALPHA_A, isALPHA_LC, isALPHA_LC_utf8_safe, isALPHA_LC_uvchr, isALPHA_L1, isALPHA_utf8, isALPHA_utf8_safe, isALPHA_uvchr
  • isALPHANUMERIC, isALPHANUMERIC_A, isALPHANUMERIC_LC, isALPHANUMERIC_LC_utf8_safe, isALPHANUMERIC_LC_uvchr, isALPHANUMERIC_L1, isALPHANUMERIC_utf8, isALPHANUMERIC_utf8_safe, isALPHANUMERIC_uvchr
  • isASCII, isASCII_A, isASCII_LC, isASCII_LC_utf8_safe, isASCII_LC_uvchr, isASCII_L1, isASCII_utf8, isASCII_utf8_safe, isASCII_uvchr
  • isBLANK, isBLANK_A, isBLANK_LC, isBLANK_LC_utf8_safe, isBLANK_LC_uvchr, isBLANK_L1, isBLANK_utf8, isBLANK_utf8_safe, isBLANK_uvchr
  • isCNTRL, isCNTRL_A, isCNTRL_LC, isCNTRL_LC_utf8_safe, isCNTRL_LC_uvchr, isCNTRL_L1, isCNTRL_utf8, isCNTRL_utf8_safe, isCNTRL_uvchr
  • isDIGIT, isDIGIT_A, isDIGIT_LC, isDIGIT_LC_utf8_safe, isDIGIT_LC_uvchr, isDIGIT_L1, isDIGIT_utf8, isDIGIT_utf8_safe, isDIGIT_uvchr
  • isGRAPH, isGRAPH_A, isGRAPH_LC, isGRAPH_LC_utf8_safe, isGRAPH_LC_uvchr, isGRAPH_L1, isGRAPH_utf8, isGRAPH_utf8_safe, isGRAPH_uvchr
  • isIDCONT, isIDCONT_A, isIDCONT_LC, isIDCONT_LC_utf8_safe, isIDCONT_LC_uvchr, isIDCONT_L1, isIDCONT_utf8, isIDCONT_utf8_safe, isIDCONT_uvchr
  • isIDFIRST, isIDFIRST_A, isIDFIRST_LC, isIDFIRST_LC_utf8_safe, isIDFIRST_LC_uvchr, isIDFIRST_L1, isIDFIRST_utf8, isIDFIRST_utf8_safe, isIDFIRST_uvchr
  • isLOWER, isLOWER_A, isLOWER_LC, isLOWER_LC_utf8_safe, isLOWER_LC_uvchr, isLOWER_L1, isLOWER_utf8, isLOWER_utf8_safe, isLOWER_uvchr
  • isOCTAL, isOCTAL_A, isOCTAL_L1, isPRINT, isPRINT_A, isPRINT_LC, isPRINT_LC_utf8_safe, isPRINT_LC_uvchr, isPRINT_L1, isPRINT_utf8, isPRINT_utf8_safe, isPRINT_uvchr
  • isPSXSPC, isPSXSPC_A, isPSXSPC_LC, isPSXSPC_LC_utf8_safe, isPSXSPC_LC_uvchr, isPSXSPC_L1, isPSXSPC_utf8, isPSXSPC_utf8_safe, isPSXSPC_uvchr
  • isPUNCT, isPUNCT_A, isPUNCT_LC, isPUNCT_LC_utf8_safe, isPUNCT_LC_uvchr, isPUNCT_L1, isPUNCT_utf8, isPUNCT_utf8_safe, isPUNCT_uvchr
  • isSPACE, isSPACE_A, isSPACE_LC, isSPACE_LC_utf8_safe, isSPACE_LC_uvchr, isSPACE_L1, isSPACE_utf8, isSPACE_utf8_safe, isSPACE_uvchr
  • isUPPER, isUPPER_A, isUPPER_LC, isUPPER_LC_utf8_safe, isUPPER_LC_uvchr, isUPPER_L1, isUPPER_utf8, isUPPER_utf8_safe, isUPPER_uvchr
  • isWORDCHAR, isWORDCHAR_A, isWORDCHAR_LC, isWORDCHAR_LC_utf8_safe, isWORDCHAR_LC_uvchr, isWORDCHAR_L1, isWORDCHAR_utf8, isWORDCHAR_utf8_safe, isWORDCHAR_uvchr
  • isXDIGIT, isXDIGIT_A, isXDIGIT_LC, isXDIGIT_LC_utf8_safe, isXDIGIT_LC_uvchr, isXDIGIT_L1, isXDIGIT_utf8, isXDIGIT_utf8_safe, isXDIGIT_uvchr

Compiler and Preprocessor information ๐Ÿงš

  • CPPLAST, CPPMINUS, CPPRUN, CPPSTDIN, HAS_BUILTIN_ADD_OVERFLOW, HAS_BUILTIN_CHOOSE_EXPR, HAS_BUILTIN_EXPECT, HAS_BUILTIN_MUL_OVERFLOW, HAS_BUILTIN_SUB_OVERFLOW, HAS_C99_VARIADIC_MACROS, HAS_STATIC_INLINE, HASATTRIBUTE_ALWAYS_INLINE, HASATTRIBUTE_DEPRECATED, HASATTRIBUTE_FORMAT, HASATTRIBUTE_NONNULL, HASATTRIBUTE_NORETURN, HASATTRIBUTE_PURE, HASATTRIBUTE_UNUSED, HASATTRIBUTE_VISIBILITY, HASATTRIBUTE_WARN_UNUSED_RESULT, MEM_ALIGNBYTES, PERL_STATIC_INLINE, PERL_THREAD_LOCAL, U32_ALIGNMENT_REQUIRED

Compiler directives ๐Ÿ“

  • __ASSERT_, ASSUME, dNOOP, END_EXTERN_C, EXTERN_C, LIKELY, NOOP, PERL_UNUSED_ARG, PERL_UNUSED_CONTEXT, PERL_UNUSED_DECL, PERL_UNUSED_RESULT, PERL_UNUSED_VAR, START_EXTERN_C, STATIC, STMT_START, STMT_END, UNLIKELY

Compile-time scope hooks ๐ŸŽ€

  • BhkDISABLE, BhkENABLE, BhkENTRY_set, blockhook_register

Concurrency ๐Ÿ”ฅ

  • aTHX, aTHX_, CPERLscope, dTHR, dTHX, dTHXa, dTHXoa, dVAR, GETENV_PRESERVES_OTHER_THREAD, HAS_PTHREAD_ATFORK, HAS_PTHREAD_ATTR_SETSCOPE, HAS_PTHREAD_YIELD, HAS_SCHED_YIELD, I_MACH_CTHREADS, I_PTHREAD, MULTIPLICITY, OLD_PTHREAD_CREATE_JOINABLE, OLD_PTHREADS_API, PERL_IMPLICIT_CONTEXT, PERL_NO_GET_CONTEXT, pTHX, pTHX_, SCHED_YIELD

COPs and Hint Hashes ๐Ÿ’œ

  • cop_fetch_label, cop_hints_exists_pv, cop_hints_exists_pvn, cop_hints_exists_pvs, cop_hints_exists_sv
  • cop_hints_fetch_pv, cop_hints_fetch_pvn, cop_hints_fetch_pvs, cop_hints_fetch_sv

...and bestie the roll call literally just keeps going ๐Ÿ˜ญ no cap, here's the tail end of that list:

  • cop_hints_2hv
  • cop_store_label
  • CopFILE
  • CopFILE_copy
  • CopFILE_free
  • CopFILE_LEN
  • CopFILE_set
  • CopFILE_setn
  • CopFILEAV
  • CopFILEAVn
  • CopFILEGV
  • CopFILEGV_set
  • CopFILESV
  • cophh_copy
  • cophh_delete_pv
  • cophh_delete_pvn
  • cophh_delete_pvs
  • cophh_delete_sv
  • cophh_exists_pvn
  • cophh_fetch_pv
  • cophh_fetch_pvn
  • cophh_fetch_pvs
  • cophh_fetch_sv
  • cophh_free
  • cophh_new_empty
  • cophh_store_pv
  • cophh_store_pvn
  • cophh_store_pvs
  • cophh_store_sv
  • cophh_2hv
  • CopLABEL
  • CopLABEL_len
  • CopLABEL_len_flags
  • CopLINE
  • CopSTASH
  • CopSTASH_eq
  • CopSTASH_set
  • CopSTASHPV
  • CopSTASHPV_set
  • PERL_SI
  • PL_curcop
  • RCPV_LEN
  • RCPV_REFCNT_dec
  • RCPV_REFCNT_inc
  • RCPV_REFCOUNT
  • RCPVx

โœจ Custom Operators โœจ

making your own little operators, iconic behaviour honestly ๐Ÿ’… here's who's on the list:

  • custom_op_register
  • Perl_custom_op_xop
  • XopDISABLE
  • XopENABLE
  • XopENTRY
  • XopENTRY_set
  • XopENTRYCUSTOM
  • XopFLAGS

โœจ CV Handling โœจ

the CV squad, main character energy fr ๐Ÿฆ‹

  • caller_cx
  • CvDEPTH
  • CvGV
  • CvREFCNT_inc
  • CvREFCNT_inc_simple
  • CvREFCNT_inc_simple_NN
  • CvSTASH
  • find_runcv
  • get_cv
  • get_cvn_flags
  • get_cvs
  • Nullcv

โœจ Debugging โœจ

when something is lowkey broken and you need the receipts ๐Ÿ” this whole section is your forensics kit:

  • av_dump
  • deb
  • deb_nocontext
  • vdeb
  • debstack
  • dump_all
  • dump_c_backtrace
  • dump_eval
  • dump_form
  • dump_packsubs
  • dump_sub
  • get_c_backtrace_dump
  • gv_dump
  • HAS_BACKTRACE
  • hv_dump
  • magic_dump
  • op_class
  • op_dump
  • opdump_printf
  • PL_op
  • PL_runops
  • PL_sv_serial
  • pmop_dump
  • sv_dump
  • sv_dump_depth
  • vdeb*

โœจ Display functions โœจ

the pretty-printing besties โœจ say hi:

  • form
  • form_nocontext
  • vform
  • mess
  • mess_nocontext
  • vmess
  • mess_sv
  • pv_display
  • pv_escape
  • pv_pretty
  • vform*
  • vmess*

โœจ Embedding, Threads, and Interpreter Cloning โœจ

okay this one is the big one, it's giving whole-interpreter energy ๐Ÿซถ interpreter girlies stay winning:

  • call_atexit
  • cv_clone
  • cv_name
  • cv_undef
  • find_rundefsv
  • get_op_descs
  • get_op_names
  • HAS_SKIP_LOCALE_INIT
  • intro_my
  • load_module
  • load_module_nocontext
  • my_exit
  • my_failure_exit
  • newPADNAMELIST
  • newPADNAMEouter
  • newPADNAMEpvn
  • nothreadhook
  • pad_add_anon
  • pad_add_name_pv
  • pad_add_name_pvn
  • pad_add_name_sv
  • pad_alloc
  • pad_findmy_pv
  • pad_findmy_pvn
  • pad_findmy_pvs
  • pad_findmy_sv
  • pad_tidy
  • padnamelist_fetch
  • padnamelist_store
  • perl_alloc
  • PERL_ASYNC_CHECK
  • perl_clone
  • perl_construct
  • perl_destruct
  • perl_free
  • PERL_GET_CONTEXT
  • perl_parse
  • perl_run
  • PERL_SET_CONTEXT
  • PERL_SYS_INIT
  • PERL_SYS_INIT3
  • PERL_SYS_TERM
  • PerlInterpreter
  • PL_exit_flags
  • PERL_EXIT_DESTRUCT_END
  • PERL_EXIT_ABORT
  • PERL_EXIT_WARN
  • PERL_EXIT_EXPECTED
  • PL_origalen
  • PL_perl_destruct_level
    • 0 - none
    • 1 - full
    • 2 or greater - full with checks
  • ptr_table_fetch
  • ptr_table_free
  • ptr_table_new
  • ptr_table_split
  • ptr_table_store
  • require_pv
  • vload_module

โœจ Errno โœจ

just the one entry, and she ate ๐Ÿ’…

  • sv_string_from_errnum

โœจ Exception Handling (simple) Macros โœจ

catch it or yeet it, no in-between ๐Ÿ˜ญ

  • dXCPT
  • JMPENV_JUMP
  • JMPENV_PUSH
  • PL_restartop
  • XCPT_CATCH
  • XCPT_RETHROW
  • XCPT_TRY_END
  • XCPT_TRY_START

โœจ Filesystem configuration values โœจ

a whole closet of filesystem config symbols, obsessed with the sheer volume fr fr ๐ŸŽ€

  • DIRNAMLEN
  • DOSUID
  • EOF_NONBLOCK
  • FCNTL_CAN_LOCK
  • FFLUSH_ALL
  • FFLUSH_NULL
  • FILE_base
  • FILE_bufsiz
  • FILE_cnt
  • FILE_ptr
  • FLEXFILENAMES
  • HAS_DIR_DD_FD
  • HAS_DUP2
  • HAS_DUP3
  • HAS_FAST_STDIO
  • HAS_FCHDIR
  • HAS_FCNTL
  • HAS_FDCLOSE
  • HAS_FDOPENDIR
  • HAS_FPATHCONF
  • HAS_FPOS64_T
  • HAS_FSTATFS
  • HAS_FSTATVFS
  • HAS_GETFSSTAT
  • HAS_GETMNT
  • HAS_GETMNTENT
  • HAS_HASMNTOPT
  • HAS_LSEEK_PROTO
  • HAS_MKDIR
  • HAS_OFF64_T
  • HAS_OPENAT
  • HAS_OPEN3
  • HAS_POLL
  • HAS_READDIR
  • HAS_READDIR64_R
  • HAS_REWINDDIR
  • HAS_RMDIR
  • HAS_SEEKDIR
  • HAS_SELECT
  • HAS_SETVBUF
  • HAS_STDIO_STREAM_ARRAY
  • HAS_STRUCT_FS_DATA
  • HAS_STRUCT_STATFS
  • HAS_STRUCT_STATFS_F_FLAGS
  • HAS_TELLDIR
  • HAS_USTAT
  • I_FCNTL
  • I_SYS_DIR
  • I_SYS_FILE
  • I_SYS_NDIR
  • I_SYS_STATFS
  • LSEEKSIZE
  • RD_NODATA
  • READDIR64_R_PROTO
  • ST_INO_SIGN
  • ST_INO_SIZE
  • STDCHAR
  • STDIO_CNT_LVALUE
  • STDIO_PTR_LVAL_NOCHANGE_CNT
  • STDIO_PTR_LVAL_SETS_CNT
  • STDIO_PTR_LVALUE
  • STDIO_STREAM_ARRAY
  • VAL_EAGAIN
  • VAL_O_NONBLOCK
  • VOID_CLOSEDIR

โœจ Floating point โœจ

floats!! numbers with โœจvibesโœจ โ€” brace yourself, this list is long ๐Ÿ˜ญ

  • CASTFLAGS
  • CASTNEGFLOAT
  • DOUBLE_HAS_INF
  • DOUBLE_HAS_NAN
  • DOUBLE_HAS_NEGATIVE_ZERO
  • DOUBLE_HAS_SUBNORMALS
  • DOUBLE_STYLE_CRAY
  • DOUBLE_STYLE_IBM
  • DOUBLE_STYLE_IEEE
  • DOUBLE_STYLE_VAX
  • DOUBLEINFBYTES
  • DOUBLEKIND
  • DOUBLEMANTBITS
  • DOUBLENANBYTES
  • DOUBLESIZE
  • Gconvert
  • HAS_ATOLF
  • HAS_CLASS
  • HAS_FINITE
  • HAS_FINITEL
  • HAS_FP_CLASS
  • HAS_FP_CLASSIFY
  • HAS_FP_CLASSL
  • HAS_FPCLASS
  • HAS_FPCLASSIFY
  • HAS_FPCLASSL
  • HAS_FPGETROUND
  • HAS_FREXPL
  • HAS_ILOGB
  • HAS_ISFINITE
  • HAS_ISFINITEL
  • HAS_ISINF
  • HAS_ISINFL
  • HAS_ISNAN
  • HAS_ISNANL
  • HAS_ISNORMAL
  • HAS_J0
  • HAS_J0L
  • HAS_LDBL_DIG
  • HAS_LDEXPL
  • HAS_LLRINT
  • HAS_LLRINTL
  • HAS_LLROUNDL
  • HAS_LONG_DOUBLE
  • HAS_LRINT
  • HAS_LRINTL
  • HAS_LROUNDL
  • HAS_MODFL
  • HAS_NAN
  • HAS_NEXTTOWARD
  • HAS_REMAINDER
  • HAS_SCALBN
  • HAS_SIGNBIT
  • HAS_SQRTL
  • HAS_STRTOD_L
  • HAS_STRTOLD
  • HAS_STRTOLD_L
  • HAS_TRUNC
  • HAS_UNORDERED
  • I_FENV
  • I_QUADMATH
  • LONG_DOUBLE_STYLE_IEEE
  • LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE
  • LONG_DOUBLE_STYLE_IEEE_EXTENDED
  • LONG_DOUBLE_STYLE_IEEE_STD
  • LONG_DOUBLE_STYLE_VAX
  • LONG_DOUBLEKIND
  • LONG_DOUBLESIZE
  • LONGDBLINFBYTES
  • LONGDBLMANTBITS
  • LONGDBLNANBYTES
  • NV
  • NV_OVERFLOWS_INTEGERS_AT
  • NV_PRESERVES_UV
  • NV_PRESERVES_UV_BITS
  • NV_ZERO_IS_ALLBITS_ZERO
  • NVMANTBITS
  • NVSIZE
  • NVTYPE

โœจ General Configuration โœจ

the everything-else pile, we love a miscellaneous era ๐ŸŽ€

  • ASCIIish
  • BYTEORDER
  • CAT2
  • CHARBITS
  • DB_VERSION_MAJOR_CFG
  • DB_VERSION_MINOR_CFG
  • DB_VERSION_PATCH_CFG
  • DEFAULT_INC_EXCLUDES_DOT
  • DLSYM_NEEDS_UNDERSCORE
  • Drand01
  • EBCDIC
  • HAS_CSH
  • HAS_GETHOSTNAME
  • HAS_GNULIBC
  • HAS_LGAMMA
  • HAS_LGAMMA_R
  • HAS_NON_INT_BITFIELDS
  • HAS_PRCTL_SET_NAME
  • HAS_PROCSELFEXE
  • HAS_PSEUDOFORK
  • HAS_REGCOMP
  • HAS_SETPGID
  • HAS_SIGSETJMP
  • HAS_STRUCT_CMSGHDR
  • HAS_STRUCT_MSGHDR
  • HAS_TGAMMA
  • HAS_UNAME
  • HAS_UNION_SEMUN
  • I_DIRENT
  • I_POLL
  • I_SYS_RESOURCE
  • LIBM_LIB_VERSION
  • NEED_VA_COPY
  • OSNAME
  • OSVERS
  • PERL_USE_GCC_BRACE_GROUPS
  • PHOSTNAME
  • PROCSELFEXE_PATH
  • PTRSIZE
  • RANDBITS
  • seedDrand01
  • SELECT_MIN_BITS
  • SETUID_SCRIPTS_ARE_SECURE_NOW
  • ST_DEV_SIGN
  • ST_DEV_SIZE
  • STRINGIFY

๐ŸŒˆ List of capability HAS_foo symbols ๐ŸŒˆ

and yeah, that's a whole separate index of the <code>HAS_foo</code> crew โ€” she gets her own list ๐Ÿ’œ

๐ŸŒˆ List of #include needed symbols ๐ŸŒˆ

plus a dedicated list of the #include symbols you need, because of course she does โœจ

โœจ Global Variables โœจ

the globals, the moment, the icons ๐Ÿ‘‘

  • PL_check
  • PL_infix_plugin
  • PL_keyword_plugin
  • PL_phase

โœจ GV Handling and Stashes โœจ

glob and stash central, this one is packed bestie ๐Ÿ˜ญ

  • amagic_call
  • AMGf_noleft
  • AMGf_noright
  • AMGf_unary
  • AMGf_assign
  • amagic_deref_call
  • gv_add_by_type
  • Gv_AMupdate โ€” 1 on success and there is some overload, 0 if there is no overload, -1 if some error occurred and it couldn't croak (because "destructing" is true)
  • gv_autoload_pv
  • gv_autoload_pvn
  • gv_autoload_sv
  • gv_autoload4
  • gv_AVadd
  • gv_HVadd
  • gv_IOadd
  • gv_SVadd
  • gv_const_sv
  • gv_efullname3
  • gv_efullname4
  • gv_fullname3
  • gv_fullname4
  • gv_fetchfile
  • gv_fetchfile_flags
  • gv_fetchmeth
  • gv_fetchmeth_autoload
  • gv_fetchmeth_pv
  • gv_fetchmeth_pv_autoload
  • gv_fetchmeth_pvn
  • gv_fetchmeth_pvn_autoload
  • gv_fetchmeth_sv
  • gv_fetchmeth_sv_autoload
  • If -1
  • If 0
  • gv_fetchmethod
  • gv_fetchmethod_autoload
  • gv_fetchpv
  • gv_fetchpvn
  • gv_fetchpvn_flags
  • gv_fetchpvs
  • gv_fetchsv
  • gv_fetchsv_nomg
  • gv_fullname3*
  • gv_fullname4*
  • gv_HVadd*
  • gv_init
  • gv_init_pv
  • gv_init_pvn
  • gv_init_sv
  • gv_IOadd*
  • gv_name_set
  • gv_stashpv
  • gv_stashpvn
  • gv_stashpvs
  • gv_stashsv
  • gv_SVadd*
  • GvAV
  • GvCV
  • GvHV
  • GvREFCNT_inc
  • GvREFCNT_inc_simple
  • GvREFCNT_inc_simple_NN
  • GvSV
  • GvSVn
  • newGVgen
  • newGVgen_flags
  • PL_curstash
  • PL_defgv
  • PL_defoutgv
  • PL_defstash
  • save_gp
  • setdefout

โœจ Hook manipulation โœจ

hooks! little grabby bits โœจ

  • rcpv_copy
  • rcpv_free
  • rcpv_new
  • wrap_op_checker

โœจ HV Handling โœจ

hash values, the whole dang family, and yes we are listing every single one ๐Ÿซถ

  • get_hv
  • HE
  • HEf_SVKEY
  • HeHASH
  • HeKEY
  • HeKLEN
  • HePV
  • HeSVKEY
  • HeSVKEY_force
  • HeSVKEY_set
  • HeUTF8
  • HeVAL
  • HV
  • hv_assert
  • hv_bucket_ratio
  • hv_clear
  • hv_clear_placeholders
  • hv_copy_hints_hv
  • hv_delete
  • hv_deletes
  • hv_delete_ent
  • hv_exists
  • hv_existss
  • hv_exists_ent
  • hv_fetch
  • hv_fetchs
  • hv_fetch_ent
  • hv_fetchs*
  • hv_iterinit
  • hv_iterkey
  • hv_iterkeysv
  • hv_iternext
  • hv_iternext_flags
  • hv_iternextsv
  • hv_iterval
  • hv_ksplit
  • hv_magic
  • hv_name_set
  • hv_name_sets
  • hv_scalar
  • hv_store
  • hv_stores
  • hv_store_ent
  • hv_stores*
  • hv_undef
  • HvENAME
  • HvENAMELEN
  • HvENAMEUTF8
  • HvFILL
  • HvHasAUX
  • HvNAME
  • HvNAMELEN
  • HvNAMEUTF8
  • HvREFCNT_inc
  • HvREFCNT_inc_simple
  • HvREFCNT_inc_simple_NN
  • newHV
  • newHVhv
  • Nullhv
  • PERL_HASH
  • PL_modglobal

and we are still going bestie, this index literally does not stop ๐Ÿ’…โœจ

๐Ÿฆ‹ Input/Output ๐Ÿฆ‹

okay bestie, buckle UP, because this is the entire I/O corner of perlapi and it is not short ๐Ÿ’… every single name, flag and macro, right here, no skips, no "etc." โ€” periodt.

  • the filehandle-struct squad: do_close, IoDIRP, IOf_FLUSH, IOf_UNTAINT, IoFLAGS, IoIFP, IoOFP, IoTYPE, my_chsize, my_dirfd, my_pclose, my_popen, newIO, PERL_FLUSHALL_FOR_CHILD
  • the layer gang: PerlIO_apply_layers, PerlIO_binmode, PerlIO_canset_cnt, PerlIO_clearerr, PerlIO_close, PerlIO_debug, PerlIO_eof, PerlIO_error, PerlIO_exportFILE, PerlIO_fast_gets, PerlIO_fdopen, PerlIO_fileno, PerlIO_fill, PerlIO_findFILE, PerlIO_flush, PerlIO_get_base, PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_get_ptr, PerlIO_getc, PerlIO_getpos, PerlIO_has_base, PerlIO_has_cntptr, PerlIO_importFILE, PerlIO_open, PerlIO_printf, PerlIO_putc, PerlIO_puts, PerlIO_read, PerlIO_releaseFILE, PerlIO_reopen, PerlIO_rewind, PerlIO_seek, PerlIO_set_cnt, PerlIO_set_ptrcnt, PerlIO_setlinebuf, PerlIO_setpos, PerlIO_stderr, PerlIO_stdin, PerlIO_stdout, PerlIO_stdoutf, PerlIO_tell, PerlIO_ungetc, PerlIO_unread, PerlIO_vprintf, PerlIO_write
  • the flag girlies: PERLIO_F_APPEND, PERLIO_F_CANREAD, PERLIO_F_CANWRITE, PERLIO_F_CRLF, PERLIO_F_EOF, PERLIO_F_ERROR, PERLIO_F_FASTGETS, PERLIO_F_LINEBUF, PERLIO_F_OPEN, PERLIO_F_RDBUF, PERLIO_F_TEMP, PERLIO_F_TRUNCATE, PERLIO_F_UNBUF, PERLIO_F_UTF8, PERLIO_F_WRBUF
  • and the starred reprises, because yes they come around twice: PerlIO_fast_gets*, PerlIO_fdopen*, PerlIO_fileno*, PerlIO_fill*, PerlIO_findFILE*, PerlIO_flush*, PERLIO_FUNCS_CAST, PERLIO_FUNCS_DECL, PerlIO_get_base*, PerlIO_get_bufsiz*, PerlIO_get_cnt*, PerlIO_get_ptr*, PerlIO_getc*, PerlIO_getpos*, PerlIO_has_base*, PerlIO_has_cntptr*, PerlIO_importFILE*
  • the K-constants + friends: PERLIO_K_BUFFERED, PERLIO_K_CANCRLF, PERLIO_K_FASTGETS, PERLIO_K_MULTIARG, PERLIO_K_RAW, PERLIO_NOT_STDIO
  • more starred faves: PerlIO_open*, PerlIO_printf*, PerlIO_putc*, PerlIO_puts*, PerlIO_read*, PerlIO_releaseFILE*, PerlIO_reopen*, PerlIO_rewind*, PerlIO_seek*, PerlIO_set_cnt*, PerlIO_set_ptrcnt*, PerlIO_setlinebuf*, PerlIO_setpos*, PerlIO_stderr*, PerlIO_stdin*, PerlIO_stdout*, PerlIO_stdoutf*, PerlIO_tell*, PerlIO_ungetc*, PerlIO_unread*, PerlIO_vprintf*, PerlIO_write*
  • and to close the section out: PL_maxsysfd, repeatcpy, SvVSTRING, USE_STDIO

๐Ÿ”ข Integer ๐Ÿ”ข

the whole numeric-type menu, bestie. sizes, maxes, mins, typedefs, the works. โœจ

  • CASTI32, HAS_INT64_T, HAS_LONG_LONG, HAS_QUAD, INTMAX_C, INTSIZE, INT16_C, INT32_C, INT64_C, IV
  • the I-family: I8, I16, I32, I64, IV_MAX, IV_MIN, IVSIZE, IVTYPE
  • starred/typed I-crew: I8*, I8SIZE, I8TYPE, I16*, I16SIZE, I16TYPE, I32*, I32df, I32SIZE, I32TYPE, I64*, I64SIZE, I64TYPE
  • line_t, LONGLONGSIZE, LONGSIZE, memzero, PERL_INT_FAST8_T, PERL_INT_FAST16_T, PERL_UINT_FAST8_T, PERL_UINT_FAST16_T
  • the limit list, all of it: PERL_INT_MAX, PERL_INT_MIN, PERL_LONG_MAX, PERL_LONG_MIN, PERL_QUAD_MAX, PERL_QUAD_MIN, PERL_SHORT_MAX, PERL_SHORT_MIN, PERL_UCHAR_MAX, PERL_UCHAR_MIN, PERL_UINT_MAX, PERL_UINT_MIN, PERL_ULONG_MAX, PERL_ULONG_MIN, PERL_UQUAD_MAX, PERL_UQUAD_MIN, PERL_USHORT_MAX, PERL_USHORT_MIN
  • and the fast-uint reprises: PERL_UINT_FAST8_T*, PERL_UINT_FAST16_T*, SHORTSIZE, UINTMAX_C, UINT16_C, UINT32_C, UINT64_C
  • the U-family, unsigned edition: UV, U8, U16, U32, U64, UV_MAX, UV_MIN, UVSIZE, UVTYPE
  • starred/typed U-crew: U8*, U8SIZE, U8TYPE, U16*, U16SIZE, U16TYPE, U32*, U32of, U32SIZE, U32TYPE, U32uf, U32Xf, U32xf, U64*, U64SIZE, U64TYPE
  • and finally WIDEST_UTYPE, the widest of them all, iconic ๐Ÿ’œ

๐Ÿ–จ๏ธ I/O Formats ๐Ÿ–จ๏ธ

printf/sprintf format macros so your C and your Perl agree on what a thing even is when you print it. ๐ŸŒธ

  • HvNAMEf, HvNAMEf_QUOTEDPREFIX, IVdf, NVef, NVff, NVgf
  • the long-double trio + scanner: PERL_PRIeldbl, PERL_PRIfldbl, PERL_PRIgldbl, PERL_SCNfldbl
  • PRINTF_FORMAT_NULL_OK, SVf, SVf_QUOTEDPREFIX, SVfARG, UTF8f, UTF8f_QUOTEDPREFIX, UTF8fARG
  • and the UV set: UVf, UVof, UVuf, UVXf, UVxf โœจ

๐Ÿงš Lexer interface ๐Ÿงš

the lexer/parser backend. this is where Perl's own guts read your source code character by character, lowkey iconic ๐Ÿซถ

  • BHK, lex_bufutf8, lex_discard_to, lex_grow_linestr, lex_next_chunk, lex_peek_unichar, lex_read_space, lex_read_to, lex_read_unichar, lex_start
  • the stuffing crew: lex_stuff_pv, lex_stuff_pvn, lex_stuff_pvs, lex_stuff_sv, lex_unstuff
  • parse this: parse_arithexpr, parse_barestmt, parse_block, parse_fullexpr, parse_fullstmt, parse_label, parse_listexpr, parse_stmtseq, parse_subsignature, parse_termexpr
  • PL_parser, plus its fields: PL_parser->bufend, PL_parser->bufptr, PL_parser->linestart, PL_parser->linestr
  • resume_compcv_and_save, resume_compcv_final, suspend_compcv
  • identifier checks: valid_identifier_pve, valid_identifier_pvn, valid_identifier_sv
  • plugin hooks: wrap_infix_plugin, wrap_keyword_plugin ๐Ÿ’…

๐ŸŒ Locales ๐ŸŒ

locale stuff, aka the "wait why is my number formatted like that" section. every macro, every helper, every tiny letter, all of it. ๐Ÿ˜ญ

  • DECLARATION_FOR_LC_NUMERIC_MANIPULATION, HAS_DUPLOCALE, HAS_FREELOCALE, HAS_LC_MONETARY_2008, HAS_LOCALECONV, HAS_LOCALECONV_L, HAS_NEWLOCALE, HAS_NL_LANGINFO, HAS_NL_LANGINFO_L, HAS_QUERYLOCALE, HAS_SETLOCALE, HAS_SETLOCALE_R, HAS_USELOCALE
  • I_LANGINFO, I_LOCALE, I_XLOCALE, IN_LOCALE, IN_LOCALE_COMPILETIME, IN_LOCALE_RUNTIME, NEED_XLOCALE_H
  • Perl_langinfo*, Perl_langinfo8*, PERL_LC_ALL_CATEGORY_POSITIONS_INIT, PERL_LC_ALL_SEPARATOR, PERL_LC_ALL_USES_NAME_VALUE_PAIRS, Perl_localeconv, Perl_setlocale
  • RESTORE_LC_NUMERIC, SETLOCALE_ACCEPTS_ANY_LOCALE_NAME, STORE_LC_NUMERIC_FORCE_TO_UNDERLYING, STORE_LC_NUMERIC_SET_TO_NEEDED, STORE_LC_NUMERIC_SET_TO_NEEDED_IN
  • sv_langinfo, Perl_langinfo, Perl_langinfo8
  • and thenโ€ฆ yeah: a, b, c, d, e โ€” literally just the letters, that's what the index says, I don't make the rules ๐Ÿ™ˆ
  • switch_to_global_locale, POSIX::localeconv, I18N::Langinfo, items "CRNCYSTR" and "THOUSEP", "sv_langinfo" in perlapi, items "CRNCYSTR" and "THOUSEP"
  • sync_locale, WITH_LC_NUMERIC_SET_TO_NEEDED, WITH_LC_NUMERIC_SET_TO_NEEDED_IN ๐Ÿ’œ

๐Ÿ”ฎ Magic ๐Ÿ”ฎ

magic!! the invisible little gremlins that live inside your SVs and do things when you touch them. absolutely main character energy. ๐Ÿ‘‘

  • mg_clear, mg_copy, mg_find, mg_findext, mg_free, mg_free_type, mg_freeext, mg_get, mg_magical, mg_set
  • the MGf flags + table: MGf_COPY, MGf_DUP, MGf_LOCAL, MGVTBL
  • the whole PERL_MAGIC catalogue, in order: PERL_MAGIC_arylen, PERL_MAGIC_arylen_p, PERL_MAGIC_backref, PERL_MAGIC_bm, PERL_MAGIC_checkcall, PERL_MAGIC_collxfrm, PERL_MAGIC_dbfile, PERL_MAGIC_dbline, PERL_MAGIC_debugvar, PERL_MAGIC_defelem, PERL_MAGIC_destruct, PERL_MAGIC_env, PERL_MAGIC_envelem, PERL_MAGIC_ext, PERL_MAGIC_extvalue, PERL_MAGIC_fm, PERL_MAGIC_hints, PERL_MAGIC_hintselem, PERL_MAGIC_hook, PERL_MAGIC_hookelem, PERL_MAGIC_isa, PERL_MAGIC_isaelem, PERL_MAGIC_lvref, PERL_MAGIC_nkeys, PERL_MAGIC_nonelem, PERL_MAGIC_overload_table, PERL_MAGIC_pos, PERL_MAGIC_qr, PERL_MAGIC_regdata, PERL_MAGIC_regdatum, PERL_MAGIC_regex_global, PERL_MAGIC_rhash, PERL_MAGIC_shared, PERL_MAGIC_shared_scalar, PERL_MAGIC_sig, PERL_MAGIC_sigelem, PERL_MAGIC_substr, PERL_MAGIC_sv, PERL_MAGIC_symtab, PERL_MAGIC_taint, PERL_MAGIC_tied, PERL_MAGIC_tiedelem, PERL_MAGIC_tiedscalar, PERL_MAGIC_utf8, PERL_MAGIC_uvar, PERL_MAGIC_uvar_elem, PERL_MAGIC_vec, PERL_MAGIC_vstring
  • and SvTIED_obj to finish it off ๐ŸŽ€

๐Ÿง  Memory Management ๐Ÿง 

allocating and freeing, the eternal cycle. here's every macro and helper in the section, fr fr.

  • dump_mstats, HAS_MALLOC_GOOD_SIZE, HAS_MALLOC_SIZE, HASATTRIBUTE_MALLOC, I_MALLOCMALLOC, MYMALLOC
  • the New-squad: Newx, safemalloc, Newxc, Newxz, safecalloc, PERL_MALLOC_WRAP
  • renew + free: Renew, saferealloc, Renewc, safecalloc*, Safefree, safemalloc*, saferealloc*
  • the sys variants: safesyscalloc, safesysfree, safesysmalloc, safesysrealloc โœจ

๐ŸŒˆ MRO ๐ŸŒˆ

method resolution order โ€” aka "which parent's method even wins here". the girlies that keep inheritance from descending into chaos. ๐Ÿซถ

  • HvMROMETA, mro_get_from_name, mro_get_linear_isa, MRO_GET_PRIVATE_DATA, mro_method_changed_in, mro_register, mro_set_mro, mro_set_private_data

๐Ÿ“ž Multicall Functions ๐Ÿ“ž

calling multiple subs off one stack setup. here's the four, bestie:

  • dMULTICALL, MULTICALL, POP_MULTICALL, PUSH_MULTICALL

๐Ÿงฎ Numeric Functions ๐Ÿงฎ

the whole math + number-parsing arsenal. every trig girlie, every base-grokker, every strtod variant. ๐Ÿ’…

  • the grokkers: Atof*, grok_atoUV, grok_bin, grok_hex, grok_infnan, grok_number, grok_number_flags, grok_numeric_radix, GROK_NUMERIC_RADIX, grok_oct, isinfnan
  • atof/strtod set: my_atof, Atof, my_strtod, Strtod
  • PERL_ABS, Perl_acos, Perl_asin, Perl_atan, Perl_atan2, Perl_ceil, Perl_cos, Perl_cosh, Perl_exp, Perl_floor, Perl_fmod, Perl_frexp, Perl_isfinite, Perl_isinf, Perl_isnan, Perl_ldexp, Perl_log, Perl_log10, Perl_modf, Perl_pow, Perl_sin, Perl_sinh, Perl_sqrt, Perl_tan, Perl_tanh
  • Perl_signbit, and the starred reprises: Perl_sin*, Perl_sinh*, Perl_sqrt*, Perl_tan*, Perl_tanh*
  • PL_hexdigit, READ_XDIGIT, scan_bin, scan_hex, scan_oct
  • Strtod*, Strtol, Strtoul ๐Ÿ”ฅ

๐ŸŒณ Optrees ๐ŸŒณ

optree construction, manipulation, and the whole OP-type ecosystem. this is the deep lore section, iykyk. ๐ŸŒฒ

  • alloccopstash, BINOP, block_end, block_start
  • call-checker crew: ck_entersub_args_list, ck_entersub_args_proto, ck_entersub_args_proto_or_list, cv_const_sv, cv_get_call_checker, cv_get_call_checker_flags, cv_set_call_checker, cv_set_call_checker_flags
  • finalize_optree, forbid_outofblock_ops, LINKLIST, LISTOP, LOGOP, LOOP
  • the new*-list, part one: newANONATTRSUB, newANONHASH, newANONLIST, newANONSUB, newARGDEFELEMOP, newASSIGNOP, newATTRSUB, newAVREF, newBINOP, newCONDOP, newCONSTSUB, newCONSTSUB_flags, newCVREF, newDEFEROP, newDEFSVOP, newFOROP, newGIVENOP, newGVOP, newGVREF, newHVREF
  • the new*-list, part two: newLISTOP, newLISTOPn, newLOGOP, newLOOPEX, newLOOPOP, newMETHOP, newMETHOP_named, newNULLLIST, newOP, newPADOP, newPMOP, newPVOP, newRANGE, newSLICEOP, newSTATEOP, newSUB, newSVOP, newSVREF, newTRYCATCHOP, newUNOP, newUNOP_AUX, newWHENOP, newWHILEOP, newXS
  • the OA_* flags: OA_BASEOP, OA_BINOP, OA_COP, OA_LISTOP, OA_LOGOP, OA_LOOP, OA_PADOP, OA_PMOP, OA_PVOP_OR_SVOP, OA_SVOP, OA_UNOP
  • OP, op_append_elem, op_append_list, OP_CLASS, op_contextualize, op_convert_list, OP_DESC, op_force_list, op_free, op_linklist, op_lvalue, OP_NAME, op_null, op_parent, op_prepend_elem, op_scope, op_sibling_splice, OP_TYPE_IS, OP_TYPE_IS_OR_WAS, op_wrap_finally, opcode
  • sibling macros: OpHAS_SIBLING, OpLASTSIB_set, OpMAYBESIB_set, OpMORESIB_set, OpSIBLING
  • optimize_optree, peep_t, Perl_cpeep_t, PL_opfreehook, PL_peepp, PL_rpeepp, PMOP, rv2cv_op_cv, UNOP, XOP ๐Ÿ‘‘

๐Ÿ“ฆ Pack and Unpack ๐Ÿ“ฆ

just two, but they do a lot:

  • packlist, unpackstring

โœจ Pad Data Structures โœจ

okay bestie, these are the pad data structure things you're gonna wanna know about, periodt ๐Ÿ’…: CvPADLIST, pad_add_name_pvs, pad_new, PadARRAY, PadlistARRAY, PadlistMAX, PadlistNAMES, PadlistNAMESARRAY, PadlistNAMESMAX, PadlistREFCNT, PadMAX, PadnameLEN, PadnamelistARRAY, PadnamelistMAX, PadnamelistREFCNT, PadnamelistREFCNT_dec, PadnamePV, PadnameREFCNT, PadnameREFCNT_dec, PadnameREFCNT_inc, PadnameSV, PadnameUTF8, PL_comppad, PL_comppad_name, PL_curpad, SVs_PADMY, SVs_PADTMP.


๐Ÿ” Password and Group access ๐Ÿ”

bestie, these are the password and group access vibes, no cap: GRPASSWD, HAS_ENDGRENT, HAS_ENDGRENT_R, HAS_ENDPWENT, HAS_ENDPWENT_R, HAS_GETGRENT, HAS_GETGRENT_R, HAS_GETPWENT, HAS_GETPWENT_R, HAS_SETGRENT, HAS_SETGRENT_R, HAS_SETPWENT, HAS_SETPWENT_R, PWAGE, PWCHANGE, PWCLASS, PWCOMMENT, PWEXPIRE, PWGECOS, PWPASSWD, PWQUOTA.


๐Ÿ›ฃ๏ธ Paths to system commands ๐Ÿ›ฃ๏ธ

okay so these are the paths to system commands, lowkey important: CSH, LOC_SED, SH_PATH.


๐Ÿงฌ Prototype information ๐Ÿงฌ

this list is giving big brain energy, fr fr: CRYPT_R_PROTO, CTERMID_R_PROTO, DRAND48_R_PROTO, ENDGRENT_R_PROTO, ENDHOSTENT_R_PROTO, ENDNETENT_R_PROTO, ENDPROTOENT_R_PROTO, ENDPWENT_R_PROTO, ENDSERVENT_R_PROTO, GDBM_NDBM_H_USES_PROTOTYPES, GDBMNDBM_H_USES_PROTOTYPES, GETGRENT_R_PROTO, GETGRGID_R_PROTO, GETGRNAM_R_PROTO, GETHOSTBYADDR_R_PROTO, GETHOSTBYNAME_R_PROTO, GETHOSTENT_R_PROTO, GETLOGIN_R_PROTO, GETNETBYADDR_R_PROTO, GETNETBYNAME_R_PROTO, GETNETENT_R_PROTO, GETPROTOBYNAME_R_PROTO, GETPROTOBYNUMBER_R_PROTO, GETPROTOENT_R_PROTO, GETPWENT_R_PROTO, GETPWNAM_R_PROTO, GETPWUID_R_PROTO, GETSERVBYNAME_R_PROTO, GETSERVBYPORT_R_PROTO, GETSERVENT_R_PROTO, GETSPNAM_R_PROTO, HAS_DBMINIT_PROTO, HAS_DRAND48_PROTO, HAS_FLOCK_PROTO, HAS_GETHOST_PROTOS, HAS_GETNET_PROTOS, HAS_GETPROTO_PROTOS, HAS_GETSERV_PROTOS, HAS_MODFL_PROTO, HAS_SBRK_PROTO, HAS_SETRESGID_PROTO, HAS_SETRESUID_PROTO, HAS_SHMAT_PROTOTYPE, HAS_SOCKATMARK_PROTO, HAS_SYSCALL_PROTO, HAS_TELLDIR_PROTO, NDBM_H_USES_PROTOTYPES, RANDOM_R_PROTO, READDIR_R_PROTO, SETGRENT_R_PROTO, SETHOSTENT_R_PROTO, SETLOCALE_R_PROTO, SETNETENT_R_PROTO, SETPROTOENT_R_PROTO, SETPWENT_R_PROTO, SETSERVENT_R_PROTO, SRANDOM_R_PROTO, SRAND48_R_PROTO, STRERROR_R_PROTO, TMPNAM_R_PROTO, TTYNAME_R_PROTO.


๐Ÿงต Reference-counted stack manipulation ๐Ÿงต

okay bestie, this is the reference-counted stack manipulation squad, and yes it's a lot, but you got this ๐Ÿ’ช: rpp_context, rpp_extend, rpp_invoke_xs, rpp_is_lone, rpp_pop_1_norc, rpp_popfree_to, rpp_popfree_to_NN, rpp_popfree_1, rpp_popfree_1_NN, rpp_popfree_2, rpp_popfree_2_NN, rpp_push_1, rpp_push_IMM, rpp_push_2, rpp_xpush_1, rpp_xpush_IMM, rpp_xpush_2, rpp_push_1_norc, rpp_push_2*, rpp_replace_at, rpp_replace_at_NN, rpp_replace_at_norc, rpp_replace_at_norc_NN, rpp_replace_1_1, rpp_replace_1_1_NN, rpp_replace_1_IMM_NN, rpp_replace_2_1, rpp_replace_2_1_NN, rpp_replace_2_IMM_NN, rpp_stack_is_rc, rpp_try_AMAGIC_1, rpp_try_AMAGIC_2, rpp_xpush_IMM*, rpp_xpush_1*, rpp_xpush_2*, XSPP_wrapped.


๐Ÿงฉ REGEXP Functions ๐Ÿงฉ

these regexp functions are iconic, periodt: pregcomp, pregexec, re_compile, re_dup_guts, REGEX_LOCALE_CHARSET, REGEXP, regexp, regexp_engine, regexp_paren_pair, regmatch_info, REXEC_COPY_SKIP_POST, REXEC_COPY_SKIP_PRE, REXEC_COPY_STR, RX_BUFF_IDX_CARET_FULLMATCH, RX_BUFF_IDX_CARET_POSTMATCH, RX_BUFF_IDX_CARET_PREMATCH, RX_BUFF_IDX_FULLMATCH, RX_BUFF_IDX_POSTMATCH, RX_BUFF_IDX_PREMATCH, RX_MATCH_COPIED, RXapif_ALL, RXapif_CLEAR, RXapif_DELETE, RXapif_EXISTS, RXapif_FETCH, RXapif_FIRSTKEY, RXapif_NEXTKEY, RXapif_ONE, RXapif_REGNAME, RXapif_REGNAMES, RXapif_REGNAMES_COUNT, RXapif_SCALAR, RXapif_STORE, RXf_NO_INPLACE_SUBST, RXf_NULL, RXf_SKIPWHITE, RXf_SPLIT, RXf_START_ONLY, RXf_WHITE, RXf_PMf_EXTENDED, RXf_PMf_FOLD, RXf_PMf_KEEPCOPY, RXf_PMf_MULTILINE, RXf_PMf_SINGLELINE, RXf_SKIPWHITE*, RXf_SPLIT*, RXf_START_ONLY*, RXf_WHITE*, struct regexp, SV_SAVED_COPY, SvRX, SvRXOK.


๐Ÿ“Š Reports and Formats ๐Ÿ“Š

here's the reports and formats crew: IoBOTTOM_GV, IoBOTTOM_NAME, IoFMT_GV, IoFMT_NAME, IoLINES, IoLINES_LEFT, IoPAGE, IoPAGE_LEN, IoTOP_GV, IoTOP_NAME.


๐Ÿšจ Signals ๐Ÿšจ

signals, bestie, they're giving drama: HAS_SIGINFO_SI_ADDR, HAS_SIGINFO_SI_BAND, HAS_SIGINFO_SI_ERRNO, HAS_SIGINFO_SI_PID, HAS_SIGINFO_SI_STATUS, HAS_SIGINFO_SI_UID, HAS_SIGINFO_SI_VALUE, PERL_SIGNALS_UNSAFE_FLAG, rsignal, rsignal_state, SIG_NAME, SIG_NUM, SIG_SIZE, Sigjmp_buf, Siglongjmp, Sigsetjmp, whichsig, whichsig_pv, whichsig_pvn, whichsig_sv.


โš™๏ธ Site configuration โš™๏ธ

site configuration, the main character energy of setup: ARCHLIB, ARCHLIB_EXP, ARCHNAME, BIN, BIN_EXP, INSTALL_USR_BIN_PERL, MULTIARCH, PERL_INC_VERSION_LIST, PERL_OTHERLIBDIRS, PERL_RELOCATABLE_INC, PERL_TARGETARCH, PERL_USE_DEVEL, PERL_VENDORARCH, PERL_VENDORARCH_EXP, PERL_VENDORLIB_EXP, PERL_VENDORLIB_STEM, PRIVLIB, PRIVLIB_EXP, SITEARCH, SITEARCH_EXP, SITELIB, SITELIB_EXP, SITELIB_STEM, STARTPERL, USE_BSD_GETPGRP, USE_BSD_SETPGRP, USE_C_BACKTRACE, USE_CPLUSPLUS, USE_CROSS_COMPILE, USE_DTRACE, USE_DYNAMIC_LOADING, USE_FAST_STDIO, USE_ITHREADS, USE_KERN_PROC_PATHNAME, USE_LARGE_FILES, USE_LONG_DOUBLE, USE_MORE_BITS, USE_NSGETEXECUTABLEPATH, USE_PERLIO, USE_QUADMATH, USE_REENTRANT_API, USE_SEMCTL_SEMID_DS, USE_SEMCTL_SEMUN, USE_SITECUSTOMIZE, USE_SOCKS, USE_STAT_BLOCKS, USE_STDIO_BASE, USE_STDIO_PTR, USE_STRICT_BY_DEFAULT, USE_THREADS, USE_64_BIT_ALL, USE_64_BIT_INT.


๐ŸŒ Sockets configuration values ๐ŸŒ

sockets config, let's go: HAS_SOCKADDR_IN6, HAS_SOCKADDR_SA_LEN, HAS_SOCKADDR_STORAGE, HAS_SOCKATMARK, HAS_SOCKET, HAS_SOCKETPAIR, HAS_SOCKS5_INIT, I_SOCKS, I_SYS_SOCKIO.


๐ŸŽ›๏ธ Source Filters ๐ŸŽ›๏ธ

source filters, the vibe is real: apply_builtin_cv_attributes, filter_add, filter_del, filter_read, scan_vstring, start_subparse.


๐Ÿฅž Stack Manipulation Macros ๐Ÿฅž

stack manipulation macros, this list is long but slay: dMARK, dORIGMARK, dSP, dTARGET, EXTEND, MARK, mPUSHi, mPUSHn, mPUSHp, mPUSHpvs, mPUSHs, mPUSHu, mXPUSHi, mXPUSHn, mXPUSHp, mXPUSHpvs, mXPUSHs, mXPUSHu, newXSproto, ORIGMARK, PL_markstack, PL_markstack_ptr, PL_savestack, PL_savestack_ix, PL_scopestack, PL_scopestack_ix, PL_scopestack_name, PL_stack_base, PL_stack_sp, PL_tmps_floor, PL_tmps_ix, PL_tmps_stack, POPi, POPl, POPn, POPp, POPpx, POPpbytex, POPpx*, POPs, POPu, POPul, PUSHi, PUSHMARK, PUSHmortal, PUSHn, PUSHp, PUSHpvs, PUSHs, PUSHu, PUTBACK, SAVEt_INT, SP, SPAGAIN, SSNEW, SSNEWa, SSNEWat, SSNEWt, SSPTR, SSPTRt, TARG, TOPs, XPUSHi, XPUSHmortal, XPUSHn, XPUSHp, XPUSHpvs, XPUSHs, XPUSHu, XS_APIVERSION_BOOTCHECK, XS_VERSION, XS_VERSION_BOOTCHECK, XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_UV, XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV, XST_mPV, XST_mUNDEF, XST_mUV, XST_mYES.


๐Ÿงต String Handling ๐Ÿงต

string handling, bestie, these are the string vibes: Copy, CopyD, delimcpy, do_join, do_sprintf, fbm_compile, fbm_instr, foldEQ, foldEQ_locale, ibcmp, ibcmp_locale, ibcmp_utf8, instr, memCHRs, memEQ, memEQs, memNE, memNEs, Move, MoveD, my_snprintf, my_sprintf, my_strlcat, my_strlcpy, my_strnlen, my_vsnprintf, NewCopy, ninstr, Nullch, PL_na, rninstr, savepv, savepvn, savepvs, savesvpv, savesharedpv, savesharedpvn, savesharedpvs, savesharedsvpv, STR_WITH_LEN, strEQ, strGE, strGT, strLE, STRLEN, strLT, strNE, strnEQ, strnNE, Zero, ZeroD.


๐Ÿท๏ธ SV Flags ๐Ÿท๏ธ

SV flags, iconic: SVt_IV, SVt_NULL, SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVFM, SVt_PVGV, SVt_PVHV, SVt_PVIO, SVt_PVIV, SVt_PVLV, SVt_PVMG, SVt_PVNV, SVt_PVOBJ, SVt_REGEXP, svtype.


โœจ SV Handling โœจ

okay bestie, this is the big one, the SV handling motherlode, no cap. We're listing every single one because that's the vibe: AV_FROM_REF, CV_FROM_REF, GV_FROM_REF, HV_FROM_REF, BOOL_INTERNALS_sv_isbool, BOOL_INTERNALS_sv_isbool_false, BOOL_INTERNALS_sv_isbool_true, boolSV, croak_xs_usage, CV_FROM_REF*, DEFSV, DEFSV_set, get_sv, GV_FROM_REF*, HV_FROM_REF*, isGV_with_GP, looks_like_number, MUTABLE_AV, MUTABLE_CV, MUTABLE_GV, MUTABLE_HV, MUTABLE_IO, MUTABLE_PTR, MUTABLE_SV, newRV, newRV_inc, newRV_noinc, newSV, newSV_false, newSV_true, newSV_type, newSV_type_mortal, newSVbool, newSVhek, newSVhek_mortal, newSViv, newSVnv, newSVpadname, newSVpv, newSVpv_share, newSVpvf, newSVpvf_nocontext, newSVpvn, newSVpvn_flags, newSVpvn_share, newSVpvn_utf8, newSVpvs, newSVpvs_flags, newSVpvs_share, newSVpvz, newSVrv, newSVsv, newSVsv_flags, newSVsv_nomg, newSVuv, Nullsv, PL_sv_no, PL_sv_undef, PL_sv_yes, PL_sv_zero, SAVE_DEFSV, sortsv, sortsv_flags, SV, sv_backoff, sv_bless, sv_catpv, sv_catpv_flags, sv_catpv_mg, sv_catpv_nomg, sv_catpvn, sv_catpvn_flags, sv_catpvn_mg, sv_catpvn_nomg, sv_catpvn_nomg_maybeutf8, sv_catpvs, sv_catpvs_flags, sv_catpvs_mg, sv_catpvs_nomg, sv_catpvf, sv_catpvf_nocontext, sv_catpvf_mg, sv_catpvf_mg_nocontext, sv_vcatpvf, sv_vcatpvf_mg, sv_vcatpvfn, sv_vcatpvfn_flags, sv_catpvn*, sv_catpvn_flags*, sv_catpvn_mg*, sv_catpvn_nomg*, sv_catpvn_nomg_maybeutf8*, sv_catpvs*, sv_catpvs_flags*, sv_catpvs_mg*, sv_catpvs_nomg*, sv_catsv, sv_catsv_flags, sv_catsv_mg, sv_catsv_nomg, SV_CHECK_THINKFIRST, SV_CHECK_THINKFIRST_COW_DROP, sv_chop, sv_clear, sv_cmp, sv_cmp_flags, sv_cmp_locale, sv_cmp_locale_flags, sv_collxfrm, sv_collxfrm_flags, sv_copypv, sv_copypv_flags, sv_copypv_nomg, sv_dec, sv_dec_nomg, sv_derived_from, sv_derived_from_hv, sv_derived_from_pv, sv_derived_from_pvn, sv_derived_from_sv.

...and bestie, the list just keeps going, because of course it does ๐Ÿ’…. Here's the rest of the SV crew:

  • sv_does, sv_does_pv, sv_does_pvn, sv_does_sv, sv_eq, sv_eq_flags, sv_force_normal, sv_force_normal_flags, if the PV is a shared string, if we're a ref, if we're a glob, if we're a copy-on-write scalar, if this is a vstring, in sv_force_normal_flags if SV_COW_DROP_PV is set in flags, sv_free, sv_get_backrefs, sv_gets, sv_inc, sv_inc_nomg, sv_insert, sv_insert_flags, sv_isa, sv_isa_sv, sv_isobject, sv_len, sv_len_utf8, sv_len_utf8_nomg, sv_magic, sv_magicext, sv_mortalcopy, sv_mortalcopy_flags, sv_newmortal, sv_nolocking, sv_nounlocking, sv_numeq, sv_numeq_flags, sv_pos_b2u, sv_pos_b2u_flags, sv_pos_u2b, sv_pos_u2b_flags, sv_pvn_force_flags, sv_ref, sv_reftype, sv_replace, sv_report_used, sv_reset, sv_rvunweaken, sv_rvweaken, sv_set_bool, sv_set_false, sv_set_true, sv_set_undef, sv_setbool, sv_setbool_mg, sv_setiv, sv_setiv_mg, sv_setnv, sv_setnv_mg, sv_setpv, sv_setpv_mg, sv_setpvn, sv_setpvn_fresh, sv_setpvn_mg, sv_setpvs, sv_setpvs_mg
  • sv_setpv_bufsize, sv_setpv_mg*, sv_setpvf, sv_setpvf_mg, sv_setpvf_mg_nocontext, sv_setpvf_nocontext, sv_setpvn*, sv_setpvn_fresh*, sv_setpvn_mg*, sv_setpvs*, sv_setpvs_mg*, sv_setref_iv, sv_setref_nv, sv_setref_pv, sv_setref_pvn, sv_setref_pvs, sv_setref_uv, sv_setrv_inc, sv_setrv_inc_mg, sv_setrv_noinc, sv_setrv_noinc_mg, sv_setsv, sv_setsv_flags, sv_setsv_mg, sv_setsv_nomg, sv_setuv, sv_setuv_mg, sv_streq, sv_streq_flags, sv_unmagic, sv_unmagicext, sv_unref, sv_unref_flags, sv_upgrade, sv_usepvn, sv_usepvn_flags, sv_usepvn_mg, sv_utf8_decode, sv_utf8_downgrade, sv_utf8_downgrade_flags, sv_utf8_downgrade_nomg, sv_utf8_encode, sv_utf8_upgrade, sv_utf8_upgrade_flags, sv_utf8_upgrade_flags_grow, sv_utf8_upgrade_nomg
  • sv_vcatpvf*, sv_vcatpvf_mg*, sv_vcatpvfn*, sv_vcatpvfn_flags*, sv_vsetpvf, sv_vsetpvf_mg, sv_vsetpvfn, sv_2cv, sv_2io, sv_2iv_flags, sv_2mortal, sv_2nv_flags, sv_2pv, sv_2pv_flags, sv_2pvbyte, sv_2pvbyte_flags, sv_2pvutf8, sv_2pvutf8_flags, sv_2uv_flags, SvAMAGIC, SvAMAGIC_off, SvAMAGIC_on, SvBoolFlagsOK, SvCUR, SvCUR_set, SvEND, SvGAMAGIC, SvGETMAGIC, SvGROW, SvIandPOK, SvIandPOK_off, SvIandPOK_on, SvIOK, SvIOK_notUV, SvIOK_off, SvIOK_on, SvIOK_only, SvIOK_only_UV, SvIOK_UV, SvIOKp, SvIsBOOL, SvIsCOW, SvIsCOW_shared_hash, SvIV, SvIV_nomg, SvIVx, SvIV_set, SvIVX, SvIVx*, SvLEN, SvLEN_set, SvLOCK, SvMAGIC_set, SvNIOK, SvNIOK_off, SvNIOKp, SvNOK, SvNOK_off, SvNOK_on, SvNOK_only, SvNOKp, SvNV, SvNV_nomg, SvNVx, SvNV_set, SvNVX, SvNVx*, SvOK, SvOOK, SvOOK_off, SvOOK_offset, SvPOK, SvPOK_off, SvPOK_on, SvPOK_only, SvPOK_only_UTF8, SvPOKp, SvPV, SvPV_const, SvPV_flags, SvPV_flags_const, SvPV_flags_mutable, SvPV_mutable, SvPV_nolen, SvPV_nolen_const, SvPV_nomg, SvPV_nomg_const, SvPV_nomg_const_nolen, SvPV_nomg_nolen, SvPVbyte, SvPVbyte_nolen, SvPVbyte_nomg, SvPVbyte_or_null, SvPVbyte_or_null_nomg, SvPVbytex, SvPVbytex_nolen, SvPVutf8, SvPVutf8_nolen, SvPVutf8_nomg, SvPVutf8_or_null, SvPVutf8_or_null_nomg, SvPVutf8x, SvPVx, SvPVx_const, SvPVx_nolen, SvPVx_nolen_const
  • SvPV_force, SvPV_force_flags, SvPV_force_flags_mutable, SvPV_force_flags_nolen, SvPV_force_mutable, SvPV_force_nolen, SvPV_force_nomg, SvPV_force_nomg_nolen, SvPVbyte_force, SvPVbytex_force, SvPVutf8_force, SvPVutf8x_force, SvPVx_force
  • SvPV_free, SvPV_mutable*, SvPV_nolen*, SvPV_nolen_const*, SvPV_nomg*, SvPV_nomg_const*, SvPV_nomg_const_nolen*, SvPV_nomg_nolen*, SvPV_renew, SvPV_set, SvPV_shrink_to_cur, SvPVbyte*, SvPVbyte_force*, SvPVbyte_nolen*, SvPVbyte_nomg*, SvPVbyte_or_null*, SvPVbyte_or_null_nomg*, SvPVbytex*, SvPVbytex_force*, SvPVbytex_nolen*, SvPVCLEAR, SvPVCLEAR_FRESH, SvPVutf8*, SvPVutf8_force*, SvPVutf8_nolen*, SvPVutf8_nomg*, SvPVutf8_or_null*, SvPVutf8_or_null_nomg*, SvPVutf8x*, SvPVutf8x_force*, SvPVX, SvPVX_const, SvPVX_mutable, SvPVXx, SvPVx*, SvPVx_const*, SvPVx_force*, SvPVx_nolen*, SvPVx_nolen_const*, SvPVXtrue, SvPVXx*, SvREADONLY, SvREADONLY_off, SvREADONLY_on, SvREFCNT, SvREFCNT_dec, SvREFCNT_dec_set_NULL, SvREFCNT_dec_ret_NULL, SvREFCNT_dec_NN
  • SvREFCNT_inc, SvREFCNT_inc_NN, SvREFCNT_inc_simple, SvREFCNT_inc_simple_NN, SvREFCNT_inc_simple_void, SvREFCNT_inc_simple_void_NN, SvREFCNT_inc_void, SvREFCNT_inc_void_NN
  • SvROK, SvROK_off, SvROK_on, SvRV, SvRV_set, SvSETMAGIC, SvSetMagicSV, SvSetMagicSV_nosteal, SvSetSV, SvSetSV_nosteal, SvSHARE, SvSHARED_HASH, SvSTASH, SvSTASH_set, SvTRUE, SvTRUE_NN, SvTRUE_nomg, SvTRUE_nomg_NN, SvTRUEx, SvTYPE, SvUNLOCK, SvUOK, SvUPGRADE, SvUTF8, SvUTF8_off, SvUTF8_on, SvUV, SvUV_nomg, SvUVx, SvUV_set, SvUVX, SvUVx*, SvUVXx, SvVOK, SvVSTRING_mg, uiv_2buf, vnewSVpvf

โœจ Tainting โœจ

  • SvTAINT, SvTAINTED, SvTAINTED_off, SvTAINTED_on

๐Ÿ•ฐ๏ธ Time ๐Ÿ•ฐ๏ธ

  • ASCTIME_R_PROTO, CTIME_R_PROTO, GMTIME_MAX, GMTIME_MIN, GMTIME_R_PROTO, HAS_ASCTIME_R, HAS_ASCTIME64, HAS_CTIME_R, HAS_CTIME64, HAS_DIFFTIME, HAS_DIFFTIME64, HAS_FUTIMES, HAS_GETITIMER, HAS_GETTIMEOFDAY, HAS_GMTIME_R, HAS_GMTIME64, HAS_LOCALTIME_R, HAS_LOCALTIME64, HAS_MKTIME, HAS_MKTIME64, HAS_NANOSLEEP, HAS_SETITIMER, HAS_STRFTIME, HAS_TIME, HAS_TIMEGM, HAS_TIMES, HAS_TM_TM_GMTOFF, HAS_TM_TM_ZONE, HAS_TZNAME, HAS_USLEEP, HAS_USLEEP_PROTO, I_TIME, I_UTIME, L_R_TZSET, LOCALTIME_MAX, LOCALTIME_MIN, LOCALTIME_R_NEEDS_TZSET, LOCALTIME_R_PROTO, mini_mktime, sv_strftime_ints, sv_strftime_tm, my_strftime, is_dist is 0, is_dist is >0, is_dist is <0

๐Ÿท๏ธ Typedef names ๐Ÿท๏ธ

  • DB_Hash_t, DB_Prefix_t, Direntry_t, Fpos_t, Free_t, Gid_t, Gid_t_f, Gid_t_sign, Gid_t_size, Groups_t, Malloc_t, Mmap_t, Mode_t, Netdb_hlen_t, Netdb_host_t, Netdb_name_t, Netdb_net_t, Off_t, Off_t_size, Pid_t, Rand_seed_t, Select_fd_set_t, Shmat_t, Signal_t, Size_t, Size_t_size, Sock_size_t, SSize_t, Time_t, Uid_t, Uid_t_f, Uid_t_sign, Uid_t_size

๐ŸŒˆ Unicode Support ๐ŸŒˆ

okay this section is giving maximalist, we love a Unicode queen ๐Ÿ‘‘

  • BOM_UTF8, bytes_cmp_utf8, bytes_from_utf8*, bytes_to_utf8, bytes_to_utf8_free_me, bytes_to_utf8_temp_pv, c9strict_utf8_to_uv*, DO_UTF8, extended_utf8_to_uv*, foldEQ_utf8, is_ascii_string*, is_c9strict_utf8_string*, is_c9strict_utf8_string_loc*, is_c9strict_utf8_string_loclen*, is_invariant_string*, is_strict_utf8_string*, is_strict_utf8_string_loc*, is_strict_utf8_string_loclen*, is_utf8_char_buf*, is_utf8_fixed_width_buf_flags, is_utf8_fixed_width_buf_loc_flags, is_utf8_fixed_width_buf_loclen_flags
  • is_utf8_invariant_string, is_utf8_invariant_string_loc, is_ascii_string, is_invariant_string
  • is_utf8_string, is_utf8_string_loc, is_utf8_string_loclen, is_strict_utf8_string, is_strict_utf8_string_loc, is_strict_utf8_string_loclen, is_c9strict_utf8_string, is_c9strict_utf8_string_loc, is_c9strict_utf8_string_loclen, is_utf8_string_flags, is_utf8_string_loc_flags, is_utf8_string_loclen_flags
  • is_utf8_valid_partial_char, is_utf8_valid_partial_char_flags, isUTF8_CHAR, isSTRICT_UTF8_CHAR, isC9_STRICT_UTF8_CHAR, isUTF8_CHAR_flags, is_utf8_char_buf
  • LATIN1_TO_NATIVE, NATIVE_TO_LATIN1, NATIVE_TO_UNI, pv_uni_display, UNI_DISPLAY_ISPRINT, UNI_DISPLAY_BACKSLASH, UNI_DISPLAY_BACKSPACE, UNI_DISPLAY_REGEX, UNI_DISPLAY_QQ, REPLACEMENT_CHARACTER_UTF8, strict_utf8_to_uv*, sv_cat_decode, sv_recode_to_utf8, sv_uni_display, UNI_TO_NATIVE, UNICODE_IS_NONCHAR, UNICODE_IS_REPLACEMENT, UNICODE_IS_SUPER, UNICODE_IS_SURROGATE, UNICODE_REPLACEMENT, UTF8_CHK_SKIP*, utf8_distance, utf8_hop, utf8_hop_back, utf8_hop_back_overshoot, utf8_hop_forward, utf8_hop_forward_overshoot, utf8_hop_safe, utf8_hop_overshoot, UTF8_IS_INVARIANT, UTF8_IS_NONCHAR, UTF8_IS_REPLACEMENT, UTF8_IS_SUPER, UTF8_IS_SURROGATE, utf8_length, UTF8_MAXBYTES, UTF8_MAXBYTES_CASE, UTF8_SAFE_SKIP*, UTF8_SKIP*, utf8_to_bytes_overwrite, utf8_to_bytes_new_pv, utf8_to_bytes_temp_pv, utf8_to_bytes, bytes_from_utf8
  • utf8_to_bytes_overwrite, utf8_to_bytes_new_pv, utf8_to_bytes_temp_pv, The input turned out to already be in bytes form, The input was successfully converted, For utf8_to_bytes_overwrite, For utf8_to_bytes_new_pv and utf8_to_bytes_temp_pv, utf8_to_bytes, If the conversion was a noop, If the conversion was successful, If the conversion failed, bytes_from_utf8, utf8_to_uv, extended_utf8_to_uv, strict_utf8_to_uv, c9strict_utf8_to_uv, utf8_to_uv_or_die, utf8_to_uvchr_buf, utf8_to_uvchr
  • utf8_to_uv forms, strict_utf8_to_uv, c9strict_utf8_to_uv, utf8_to_uv, utf8_to_uv_or die, utf8_to_uvchr forms, If 'utf8' warnings are disabled, If 'utf8' warnings are enabled, utf8_to_uv_errors*, utf8_to_uv_flags, utf8n_to_uvchr, UTF8_CHECK_ONLY, UTF8_FORCE_WARN_IF_MALFORMED, UTF8_DISALLOW_SURROGATE, UTF8_WARN_SURROGATE, UTF8_DISALLOW_NONCHAR, UTF8_WARN_NONCHAR, UTF8_DISALLOW_SUPER, UTF8_WARN_SUPER, UTF8_DISALLOW_ILLEGAL_INTERCHANGE, UTF8_WARN_ILLEGAL_INTERCHANGE, UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE, UTF8_WARN_ILLEGAL_C9_INTERCHANGE, UTF8_DISALLOW_PERL_EXTENDED, UTF8_WARN_PERL_EXTENDED, UTF8_ALLOW_ANY and kin, UTF8_DIE_IF_MALFORMED, utf8_to_uv_msgs, utf8n_to_uvchr_msgs, utf8_to_uv_errors, utf8n_to_uvchr_error

okay bestie we're still in the TOC trenches and these are the rest of the UTF-8-ish goodies โ€” every one of these is a real, listed thing, so here we go ๐Ÿ’…

  • "UTF8_GOT_CONTINUATION"
  • "UTF8_GOT_EMPTY"
  • "UTF8_GOT_LONG"
  • "UTF8_GOT_NONCHAR"
  • "UTF8_GOT_NON_CONTINUATION"
  • "UTF8_GOT_OVERFLOW"
  • "UTF8_GOT_PERL_EXTENDED"
  • "UTF8_GOT_SHORT"
  • "UTF8_GOT_SUPER"
  • "UTF8_GOT_SURROGATE"
  • "text"
  • "warn_categories"
  • "flag"
  • "utf8_to_uv_or_die*"
  • "utf8_to_uvchr*"
  • "utf8_to_uvchr_buf*"
  • "utf8n_to_uvchr*"
  • "utf8ness_t"
  • "UTF8NESS_YES"
  • "UTF8NESS_NO"
  • "UTF8NESS_IMMATERIAL"
  • "UTF8NESS_UNKNOWN"
  • "0 <= enum value <= UTF8NESS_IMMATERIAL"
  • "UTF8NESS_IMMATERIAL <= <enum value"
  • "UTF8SKIP"
  • "UTF8_SKIP"
  • "UTF8_CHK_SKIP"
  • "UTF8_SAFE_SKIP"
  • ""UTF8_SAFE_SKIP" in perlapi" if you know the maximum ending pointer in the buffer pointed to by "s"
  • ""UTF8_CHK_SKIP" in perlapi" if you don't know the maximum ending pointer
  • "uv_to_utf8"
  • "uv_to_utf8_flags"
  • "uvchr_to_utf8"
  • "uvchr_to_utf8_flags"
  • "uv_to_utf8_msgs"
  • "uvchr_to_utf8_flags_msgs"
  • "text"
  • "warn_categories"
  • "flag_bit"
  • "UNICODE_GOT_SURROGATE"
  • "UNICODE_GOT_NONCHAR"
  • "UNICODE_GOT_SUPER"
  • "UNICODE_GOT_PERL_EXTENDED"
  • "UVCHR_IS_INVARIANT"
  • "UVCHR_SKIP"
  • "uvchr_to_utf8*"
  • "uvchr_to_utf8_flags*"
  • "uvchr_to_utf8_flags_msgs*"

๐Ÿงฐ Utility Functions

the little helpers that just Do Things for you, no drama:

  • "C_ARRAY_END"
  • "C_ARRAY_LENGTH"
  • "getcwd_sv"
  • "IN_PERL_COMPILETIME"
  • "IN_PERL_RUNTIME"
  • "IS_SAFE_SYSCALL"
  • "is_safe_syscall"
  • "my_setenv"
  • "newPADxVOP"
  • "phase_name"
  • "PoisonFree"
  • "Poison"
  • "PoisonNew"
  • "PoisonWith"
  • "StructCopy"
  • "sv_destroyable"
  • "sv_nosharing"

๐ŸŽ€ Versioning

version numbers, but make it a whole personality:

  • "new_version"
  • "PERL_REVISION"
  • "PERL_SUBVERSION"
  • "PERL_VERSION"
  • "PERL_VERSION_EQ"
  • "PERL_VERSION_GE"
  • "PERL_VERSION_GT"
  • "PERL_VERSION_LE"
  • "PERL_VERSION_LT"
  • "PERL_VERSION_NE"
  • "prescan_version"
  • "scan_version"
  • "upg_version"
  • "vcmp"
  • "vnormal"
  • "vnumify"
  • "vstringify"
  • "vverify"
  • The SV is an HV or a reference to an HV
  • The hash contains a "version" key
  • The "version" key has a reference to an AV as its value

๐Ÿ˜ญ Warning and Dieing

screaming (politely) is a whole API โ€” here's every entry:

  • "ck_warner", "ck_warner_d"
  • "ckWARN", "ckWARN2", "ckWARN3", "ckWARN4"
  • "ckWARN_d", "ckWARN2_d", "ckWARN3_d", "ckWARN4_d"
  • "ckWARN2*", "ckWARN3*", "ckWARN4*"
  • "CLEAR_ERRSV"
  • "croak"
  • "croak_nocontext"
  • "croak_no_modify"
  • "croak_nocontext*"
  • "croak_sv"
  • "die"
  • "die_nocontext"
  • "die_sv"
  • "ERRSV"
  • "fatal_warner"
  • "packWARN", "packWARN2", "packWARN3", "packWARN4"
  • "SANE_ERRSV"
  • "sv_regex_global_pos_clear"
  • "sv_regex_global_pos_get"
  • "sv_regex_global_pos_set"
  • "sv_vstring_get"
  • "vcroak"
  • "vfatal_warner"
  • "vwarn"
  • "vwarner"
  • "warn"
  • "warn_nocontext"
  • "warn_sv"
  • "warner"
  • "warner_nocontext"

๐Ÿฆ‹ XS

the classic XS macro lineup, iconic as always:

  • "aMY_CXT"
  • "aMY_CXT_"
  • "_aMY_CXT"
  • "ax"
  • "CLASS"
  • "dAX"
  • "dAXMARK"
  • "dITEMS"
  • "dMY_CXT"
  • "dMY_CXT_SV"
  • "dUNDERBAR"
  • "dXSARGS"
  • "dXSI32"
  • "items"
  • "ix"
  • "MY_CXT"
  • "MY_CXT_CLONE"
  • "MY_CXT_INIT"
  • "pMY_CXT"
  • "pMY_CXT_"
  • "_pMY_CXT"
  • "RETVAL"
  • "ST"
  • "START_MY_CXT"
  • "THIS"
  • "UNDERBAR"
  • "XS"
  • "XS_EXTERNAL"
  • "XS_INTERNAL"
  • "XSPROTO"

๐Ÿซถ Undocumented elements

yes bestie, the TOC literally has a section for the vibes it won't explain. mysterious queen behavior โœจ

๐Ÿ‘‘ AUTHORS

๐ŸŒˆ SEE ALSO


๐Ÿงš perlintern โ€” autogenerated documentation of purely internal Perl functions

okay so this one is the internal lore. not for the public, purely backstage ๐Ÿ’…

โœจ DESCRIPTION

๐Ÿ—‚๏ธ AV Handling

  • "av_fetch_simple"
  • "av_new_alloc"
  • "av_store_simple"
  • "AvFILLp"

๐ŸŽ€ Callback Functions

  • "dowantarray"
  • "leave_scope"
  • "magic_freedestruct"
  • "mortal_svfunc_x"
  • "pop_scope"
  • "push_scope"
  • "save_adelete"
  • "save_freercpv"
  • "save_generic_pvref"
  • "save_generic_svref"
  • "save_hdelete"
  • "save_hints"
  • "save_op"
  • "save_padsv_and_mortalize"
  • "save_pushptr"
  • "save_rcpv"
  • "save_scalar_at"
  • "save_set_svflags"
  • "save_shared_pvref"
  • "save_vptr"

๐Ÿ’œ Casting

๐Ÿ’œ Character case changing

๐Ÿ’œ Character classification

๐Ÿ’œ Compiler and Preprocessor information

๐Ÿ’œ Compiler directives

๐Ÿ’œ Compile-time scope hooks

  • "BhkENTRY"
  • "BhkFLAGS"
  • "CALL_BLOCK_HOOKS"

๐Ÿ’œ Concurrency

  • "CVf_SLABBED"
  • "CvROOT"
  • "CvSTART"
  • "CX_CUR"
  • "CX_LEAVE_SCOPE"
  • "CX_POP"
  • "cx_type"
  • "CXINC"
  • "cxstack"
  • "cxstack_ix"
  • "CXt_BLOCK"
  • "CXt_EVAL"
  • "CXt_FORMAT"
  • "CXt_GIVEN"
  • "CXt_LOOP_ARY"
  • "CXt_LOOP_LAZYIV"
  • "CXt_LOOP_LAZYSV"
  • "CXt_LOOP_LIST"
  • "CXt_LOOP_PLAIN"
  • "CXt_NULL"
  • "CXt_SUB"
  • "CXt_SUBST"
  • "CXt_WHEN"
  • "dounwind"
  • "my_fork"
  • "PERL_CONTEXT"

๐Ÿ’œ COPs and Hint Hashes

๐Ÿ’œ Custom Operators

  • "core_prototype"

๐Ÿ’œ CV Handling

  • "CvREFCOUNTED_ANYSV"
  • "CvREFCOUNTED_ANYSV_off"
  • "CvREFCOUNTED_ANYSV_on"
  • "CvWEAKOUTSIDE"
  • "docatch"

๐Ÿ’œ Debugging

  • "comma_aDEPTH"
  • "comma_pDEPTH"
  • "debop"
  • "debprof"
  • "debprofdump"
  • "debug_aDEPTH"
  • "debug_pDEPTH"
  • "free_c_backtrace"
  • "get_c_backtrace"
  • "PL_DBsingle"
  • "PL_DBsub"
  • "PL_DBtrace"
  • "runops_debug"
  • "runops_standard"

๐Ÿ’œ Display functions

  • "sv_peek"

๐Ÿ’œ Embedding, Threads, and Interpreter Cloning

  • "cv_dump"
  • "cv_forget_slab"
  • "do_dump_pad"
  • "get_context"
  • "noshutdownhook"
  • "pad_alloc_name"
  • "pad_block_start"
  • "pad_check_dup"
  • "pad_findlex"
  • "pad_fixup_inner_anons"
  • "pad_free"
  • "pad_leavemy"
  • "pad_push"
  • "pad_reset"
  • "pad_setsv"
  • "pad_sv"
  • "pad_swipe"
  • "padlist_dup"
  • "padname_dup"
  • "padnamelist_dup"
  • "set_context"
  • "si_dup"
  • "ss_dup"

๐Ÿ’œ Errno

  • "dSAVE_ERRNO"
  • "dSAVEDERRNO"
  • "RESTORE_ERRNO"
  • "SAVE_ERRNO"
  • "SETERRNO"

๐Ÿ’œ Exception Handling (simple) Macros

๐Ÿ’œ Filesystem configuration values

๐Ÿ’œ Floating point

๐Ÿ’œ General Configuration

๐Ÿ’œ Global Variables

๐Ÿ’œ GV Handling and Stashes

  • "amagic_applies"
  • "gp_dup"
  • "gv_handler"
  • "gv_stashsvpvn_cached"
  • "gv_try_downgrade"

๐Ÿ’œ Hook manipulation

๐Ÿ’œ HV Handling

  • "hv_eiter_p"
  • "hv_eiter_set"
  • "hv_ename_add"
  • "hv_ename_delete"
  • "hv_fill"
  • "hv_placeholders_get"
  • "hv_placeholders_set"
  • "hv_riter_p"
  • "hv_riter_set"
  • "refcounted_he_chain_2hv"
  • "refcounted_he_fetch_pv"
  • "refcounted_he_fetch_pvn"
  • "refcounted_he_fetch_pvs"
  • "refcounted_he_fetch_sv"
  • "refcounted_he_free"
  • "refcounted_he_inc"
  • "refcounted_he_new_pv"
  • "refcounted_he_new_pvn"
  • "refcounted_he_new_pvs"
  • "refcounted_he_new_sv"
  • "unsharepvn"

๐Ÿ’œ Input/Output

  • "dirp_dup"
  • "fp_dup"
  • "my_fflush_all"
  • "my_mkostemp"
  • "my_mkstemp"
  • "PL_last_in_gv"
  • "PL_ofsgv"
  • "PL_rs"
  • "start_glob"

๐Ÿ’œ Integer

  • "ABS_IV_MIN"
  • "NEGATE_2IV"
  • "NEGATE_2UV"

๐Ÿ’œ I/O Formats

๐Ÿ’œ Lexer interface

  • "validate_proto"

๐Ÿ’œ Locales

๐Ÿ’œ Magic

  • "magic_clearhint"
  • "magic_clearhints"
  • "magic_methcall"
  • "magic_sethint"
  • "mg_dup"
  • "mg_localize"

๐Ÿ’œ Memory Management

  • "calloc"
  • "malloc"
  • "mfree"
  • "realloc"

๐Ÿ’œ MRO

  • "mro_get_linear_isa_dfs"
  • "mro_isa_changed_in"
  • "mro_package_moved"

๐Ÿ’œ Multicall Functions

๐Ÿ’œ Numeric Functions

  • "isinfnansv"
  • "S_perl_hash_siphash_1_3"
  • "S_perl_hash_siphash_1_3_with_state"
  • "S_perl_hash_siphash_1_3_with_state_64"
  • "S_perl_hash_siphash_1_3_64"
  • "S_perl_hash_siphash_2_4"
  • "S_perl_hash_siphash_2_4_with_state"
  • "S_perl_hash_siphash_2_4_with_state_64"
  • "S_perl_hash_siphash_2_4_64"
  • "S_perl_siphash_seed_state"

๐Ÿ’œ Optrees

  • "newATTRSUB_x"
  • "newMYSUB"
  • "newXS_len_flags"
  • "op_refcnt_lock"
  • "op_refcnt_unlock"
  • "traverse_op_tree"

๐Ÿ’œ Pack and Unpack

๐Ÿ’œ Pad Data Structures

  • "CX_CURPAD_SAVE"
  • "CX_CURPAD_SV"
  • "PAD_BASE_SV"
  • "PAD_CLONE_VARS"
  • "PAD_COMPNAME_FLAGS"
  • "PAD_COMPNAME_GEN"
  • "PAD_COMPNAME_GEN_set"
  • "PAD_COMPNAME_OURSTASH"
  • "PAD_COMPNAME_PV"
  • "PAD_COMPNAME_TYPE"
  • "PAD_RESTORE_LOCAL"
  • "PAD_SAVE_LOCAL"
  • "PAD_SAVE_SETNULLPAD"
  • "PAD_SET_CUR"
  • "PAD_SET_CUR_NOSAVE"
  • "PAD_SETSV"
  • "PAD_SV"
  • "PAD_SVl"
  • "PadnameIsFIELD"
  • "PadnameIsOUR"
  • "PadnameIsSTATE"
  • "PadnameOURSTASH"
  • "PadnameOUTER"
  • "PadnameTYPE"
  • "SAVECLEARSV"
  • "SAVECOMPPAD"
  • "SAVEPADSV"

๐Ÿ’œ Password and Group access

๐Ÿ’œ Paths to system commands

๐Ÿ’œ Prototype information

๐Ÿ’œ Reference-counted stack manipulation

๐Ÿ’œ REGEXP Functions

  • "regnode"

๐Ÿ’œ Reports and Formats

๐Ÿ’œ Signals

๐Ÿ’œ Site configuration

๐Ÿ’œ Sockets configuration values

๐Ÿ’œ Source Filters

๐Ÿ’œ Stack Manipulation Macros

  • "djSP"
  • "LVRET"
  • "save_alloc"

๐Ÿ’œ String Handling

  • "delimcpy_no_escape"
  • "quadmath_format_needed"
  • "quadmath_format_valid"

๐Ÿ’œ SV Flags

  • "SVt_INVLIST"

๐Ÿ’œ SV Handling

  • "PL_Sv"
  • "sv_add_arena"
  • "sv_clean_all"
  • "sv_clean_objs"
  • "sv_free_arenas"
  • "sv_grow"
  • "sv_grow_fresh"
  • "sv_newref"
  • "sv_pv"
  • "sv_pvbyte"
  • "sv_pvbyten_force"
  • "sv_pvn_force"
  • "sv_pvutf8"
  • "sv_pvutf8n_force"
  • "sv_tainted"
  • "sv_true"
  • "sv_untaint"
  • "sv_2bool"
  • "sv_2bool_flags"
  • "sv_2num"
  • "sv_2pv_nolen"
  • "sv_2pvbyte_nolen"
  • "sv_2pvutf8_nolen"
  • "SvTHINKFIRST"

๐Ÿ’œ Tainting

  • "sv_taint"
  • "TAINT"
  • "TAINT_ENV"
  • "taint_env"
  • "TAINT_get"
  • "TAINT_IF"
  • "TAINT_NOT"
  • "TAINT_PROPER"
  • "taint_proper"
  • "TAINT_set"
  • "TAINT_WARN_get"
  • "TAINT_WARN_set"
  • "TAINTING_get"
  • "TAINTING_set"

๐Ÿ’œ Time

๐Ÿ’œ Typedef names

๐Ÿ’œ Unicode Support

  • "is_utf8_non_invariant_string"
  • "isSCRIPT_RUN"
  • "utf8_to_uvuni"
  • "utf8n_to_uvuni"
  • "uvoffuni_to_utf8_flags"
  • "valid_utf8_to_uvchr"
  • "variant_under_utf8_count"

๐Ÿ’œ Utility Functions

  • "my_popen_list"
  • "my_socketpair"

๐Ÿ’œ Versioning

๐Ÿ’œ Warning and Dieing

  • "deprecate"
  • "deprecate_disappears_in"
  • "deprecate_fatal_in"
  • "find_uninit_var"
  • "PL_dowarn"
  • "report_uninit"

๐Ÿ’œ XS

  • "my_cxt_init"

๐Ÿซถ Undocumented elements

๐Ÿ‘‘ AUTHORS

๐ŸŒˆ SEE ALSO


๐Ÿš perliol โ€” C API for Perl's implementation of IO in Layers.

this one is about Perl's IO situation, and bestie it has layers ๐Ÿ’…

โœจ SYNOPSIS

๐ŸŒธ DESCRIPTION

๐ŸŽ€ History and Background

๐ŸŽ€ Basic Structure

๐ŸŽ€ Layers vs Disciplines

๐ŸŽ€ Data Structures

๐ŸŽ€ Functions and Attributes

๐ŸŽ€ Per-instance Data

๐ŸŽ€ Layers in action

๐ŸŽ€ Per-instance flag bits

  • PERLIO_F_EOF, PERLIO_F_CANWRITE, PERLIO_F_CANREAD, PERLIO_F_ERROR, PERLIO_F_TRUNCATE, PERLIO_F_APPEND, PERLIO_F_CRLF, PERLIO_F_UTF8, PERLIO_F_UNBUF, PERLIO_F_WRBUF, PERLIO_F_RDBUF, PERLIO_F_LINEBUF, PERLIO_F_TEMP, PERLIO_F_OPEN, PERLIO_F_FASTGETS

๐ŸŽ€ Methods in Detail

  • fsize, name, size, kind, PERLIO_K_BUFFERED, PERLIO_K_RAW, PERLIO_K_CANCRLF, PERLIO_K_FASTGETS, PERLIO_K_MULTIARG, Pushed, Popped, Open, Binmode, Getarg, Fileno, Dup, Read, Write, Seek, Tell, Close, Flush, Fill, Eof, Error, Clearerr, Setlinebuf, Get_base, Get_bufsiz, Get_ptr, Get_cnt, Set_ptrcnt

๐ŸŽ€ Utilities

๐ŸŽ€ Implementing PerlIO Layers

  • C implementations, Perl implementations

๐ŸŽ€ Core Layers

  • "unix"
  • "perlio"
  • "stdio"
  • "crlf"
  • "mmap"
  • "pending"
  • "raw"
  • "utf8"

๐ŸŽ€ Extension Layers

  • ":encoding"
  • ":scalar"
  • ":via"

๐Ÿฆ‹ TODO

perlapio - perl's IO abstraction interface.

SYNOPSIS

DESCRIPTION โœจ

okay so this is the entire IO abstraction interface, and bestie we are listing every single one of them, no skipping, no cap ๐Ÿ’…

  1. USE_STDIO
  2. USE_PERLIO

then the functions themselves, all of them, here we go:

  • PerlIO_stdin()
  • PerlIO_stdout()
  • PerlIO_stderr()
  • PerlIO_open(path, mode)
  • PerlIO_fdopen(fd,mode)
  • PerlIO_reopen(path,mode,f)
  • PerlIO_printf(f,fmt,...)
  • PerlIO_vprintf(f,fmt,a)
  • PerlIO_stdoutf(fmt,...)
  • PerlIO_read(f,buf,count)
  • PerlIO_write(f,buf,count)
  • PerlIO_fill(f)
  • PerlIO_close(f)
  • PerlIO_puts(f,s)
  • PerlIO_putc(f,c)
  • PerlIO_ungetc(f,c)
  • PerlIO_unread(f,buf,count)
  • PerlIO_getc(f)
  • PerlIO_eof(f)
  • PerlIO_error(f)
  • PerlIO_fileno(f)
  • PerlIO_clearerr(f)
  • PerlIO_flush(f)
  • PerlIO_seek(f,offset,whence)
  • PerlIO_tell(f)
  • PerlIO_getpos(f,p)
  • PerlIO_setpos(f,p)
  • PerlIO_rewind(f)
  • PerlIO_tmpfile()
  • PerlIO_setlinebuf(f)

Co-existence with stdio ๐Ÿซถ

  • PerlIO_importFILE(f,mode)
  • PerlIO_exportFILE(f,mode)
  • PerlIO_releaseFILE(p,f)
  • PerlIO_findFILE(f)

"Fast gets" Functions ๐ŸŽ๏ธ

  • PerlIO_fast_gets(f)
  • PerlIO_has_cntptr(f)
  • PerlIO_get_cnt(f)
  • PerlIO_get_ptr(f)
  • PerlIO_set_ptrcnt(f,p,c)
  • PerlIO_canset_cnt(f)
  • PerlIO_set_cnt(f,c)
  • PerlIO_has_base(f)
  • PerlIO_get_base(f)
  • PerlIO_get_bufsiz(f)

Other Functions ๐ŸŒธ

  • PerlIO_apply_layers(aTHX_ f,mode,layers)
  • PerlIO_binmode(aTHX_ f,ptype,imode,layers)
  • '<' read
  • '>' write
  • '+' read/write
  • PerlIO_debug(fmt,...)

perlhack - How to hack on Perl

DESCRIPTION

SUPER QUICK PATCH GUIDE โšก

literally the speedrun route, in order, go:

  • Check out the source repository
  • Ensure you're following the latest advice
  • Create a branch for your change
  • Make your change
  • Test your change
  • Commit your change
  • Send your change to the Perl issue tracker
  • Thank you
  • Acknowledgement
  • Next time

BUG REPORTING ๐Ÿ›

PERL 5 PORTERS ๐Ÿ‘‘

  • perl-changes mailing list
  • #p5p on IRC

GETTING THE PERL SOURCE ๐Ÿ“ฅ

  • Read access via Git
  • Read access via the web
  • Write access via git

PATCHING PERL ๐Ÿฉน

  • Submitting patches
  • Getting your patch accepted
    • Why, What, How
  • Patching a core module
  • Updating perldelta
  • What makes for a good patch?

TESTING ๐Ÿงช

  • t/base, t/comp and t/opbasic
  • All other subdirectories of t/
  • Test files not found under t/
  • Special "make test" targets
    • test_porting
    • minitest
    • test.valgrind check.valgrind
    • test_harness
    • test-notty test_notty
  • Parallel tests
  • Running tests by hand
  • Using t/harness for testing
    • -v
    • -torture
    • -re=PATTERN
    • -re LIST OF PATTERNS
    • PERL_CORE=1
    • PERL_DESTRUCT_LEVEL=2
    • PERL
    • PERL_SKIP_TTY_TEST
    • PERL_TEST_Net_Ping
    • PERL_TEST_NOVREXX
    • PERL_TEST_NUMCONVERTS
    • PERL_TEST_MEMORY
  • Performance testing
  • Building perl at older commits

MORE READING FOR GUTS HACKERS ๐Ÿ“š

  • perlsource, perlinterp, perlhacktut, perlhacktips, perlguts, perlxstut and perlxs, perlapi, Porting/pumpkin.pod

CPAN TESTERS AND PERL SMOKERS ๐Ÿ’จ

WHAT NEXT? ๐Ÿฆ‹

  • "The Road goes ever on and on, down from the door where it began."
  • Metaphoric Quotations

AUTHOR


perlsource - A guide to the Perl source tree

DESCRIPTION

FINDING YOUR WAY AROUND ๐Ÿ—บ๏ธ

  • C code
  • Core modules
    • lib/, ext/, dist/, cpan/
  • Tests
    • Module tests, t/base/, t/cmd/, t/comp/, t/io/, t/mro/, t/op/, t/opbasic/, t/re/, t/run/, t/uni/, t/win32/, t/porting/, t/lib/
  • Documentation
  • Hacking tools and documentation
    • check*, Maintainers, Maintainers.pl, and Maintainers.pm, podtidy
  • Build system
  • AUTHORS
  • MANIFEST

perlinterp - An overview of the Perl interpreter

DESCRIPTION

ELEMENTS OF THE INTERPRETER ๐Ÿงฉ

  • Startup
  • Parsing
  • Optimization
  • Running
  • Exception handing
    • level 2: perl-level exit() and internals my_exit()
    • level 3: perl-level die() and internals croak()
    • level 1: unused
    • level 0: normal return

INTERNAL VARIABLE TYPES

OP TREES ๐ŸŒณ

STACKS ๐Ÿ“š

  • Argument stack
  • Mark stack
  • Save stack

MILLIONS OF MACROS ๐Ÿ˜ญ

FURTHER READING


perlhacktut - Walk through the creation of a simple C code patch

DESCRIPTION

EXAMPLE OF A SIMPLE PATCH โœจ

  • Writing the patch
  • Testing the patch
  • Documenting the patch
  • Submit

AUTHOR


perlhacktips - Tips for Perl core C code hacking

DESCRIPTION

COMMON PROBLEMS ๐Ÿ’€

  • Perl environment problems
  • C99 AIX, HP/UX, Solaris
  • Symbol Names and Namespace Pollution
    • Don't begin a file-level symbol name with an underscore; (e.g., don't use: "_FOOBAR")
    • Don't use two consecutive underscores in a symbol name; (e.g., don't use "FOO__BAR")
  • Writing safer macros
  • Portability problems
  • Problematic System Interfaces

DEBUGGING ๐Ÿ”

  • Poking at Perl
  • Using a source-level debugger
    • run [args]
    • break function_name
    • break source.c:xxx
    • step
    • next
    • continue
    • finish
    • 'enter'
    • ptype
    • print
  • gdb macro support
  • Dumping Perl Data Structures
  • Using gdb to look at specific parts of a program
  • Using gdb to look at what the parser/lexer are doing

SOURCE CODE STATIC ANALYSIS ๐Ÿ”ฌ

  • lint
  • Coverity
  • HP-UX cadvise (Code Advisor)
  • cpd (cut-and-paste detector)
  • gcc warnings
  • Warnings of other C compilers

MEMORY DEBUGGERS ๐Ÿง 

  • valgrind
  • AddressSanitizer
    • -Dcc=clang
    • -Accflags=-fsanitize=address
    • -Aldflags=-fsanitize=address
    • -Alddlflags=-shared\ -fsanitize=address
    • -fsanitize-blacklist=pwd/asan_ignore
  • Dr Memory

PROFILING ๐Ÿ“Š

  • Gprof Profiling
    • -a
    • -b
    • -e routine
    • -f routine
    • -s
    • -z
  • GCC gcov Profiling
  • callgrind profiling
    • --threshold
    • --auto
  • "profiler" profiling (Cygwin)
  • Visual Studio Profiling

MISCELLANEOUS TRICKS ๐ŸŽ€

  • PERL_DESTRUCT_LEVEL
  • Leaked SV spotting: sv_mark_arenas() and sv_sweep_arenas()
  • PERL_MEM_LOG
  • DDD over gdb
  • C backtrace
    • Linux, OS X, get_c_backtrace, free_c_backtrace, get_c_backtrace_dump, dump_c_backtrace
  • Poison
  • Read-only optrees
  • When is a bool not a bool?
  • Finding unsafe truncations
  • The .i Targets

AUTHOR


DESCRIPTION

GOVERNANCE ๐Ÿ›๏ธ

  • Perl 5 Porters

MAINTENANCE AND SUPPORT ๐Ÿ› ๏ธ

BACKWARD COMPATIBILITY AND DEPRECATION โณ

  • Terminology
    • experimental
    • deprecated
    • discouraged
    • removed

MAINTENANCE BRANCHES ๐ŸŒฟ

  • Getting changes into a maint branch

CONTRIBUTED MODULES ๐ŸŽ

  • A Social Contract about Artistic Control

DOCUMENTATION

STANDARDS OF CONDUCT ๐Ÿค

CREDITS


perlgov - Perl Rules of Governance

PREAMBLE

Mandate

Definitions ๐Ÿ“–

  • "Core Team"
  • "Steering Council"
  • "Vote Administrator"
  • The Core Team
  • The Steering Council
  • The Vote Administrator

Steering Council and Core Team Members

Steering Council Members ๐Ÿ‘‘

  • Aristotle Pagaltzis, Graham Knop, Philippe Bruhat

Core Team Members

  • Active Members ๐Ÿ’–
    • Aristotle Pagaltzis <pagaltzis@gmx.de>
    • Chad Granum <exodist7@gmail.com>
    • Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
    • Craig Berry <craigberry@mac.com>
    • Dagfinn Ilmari Mannsรฅker <ilmari@ilmari.org>
    • David Mitchell <davem@iabyn.com>
    • Graham Knop <haarg@haarg.org>
    • H. Merijn Brand <perl5@tux.freedom.nl>
    • Hugo van der Sanden <hv@crypt.org>
    • James E Keenan <jkeenan@cpan.org>
    • Karen Etheridge <ether@cpan.org>
    • Karl Williamson <khw@cpan.org>
    • Leon Timmermans <fawaka@gmail.com>
    • Matthew Horsfall <wolfsage@gmail.com>
    • Max Maischein <cpan@corion.net>
    • Neil Bowers <neilb@neilb.org>
    • Nicholas Clark <nick@ccl4.org>
    • Nicolas R <atoomic@cpan.org>
    • Paul "LeoNerd" Evans <leonerd@leonerd.org.uk>
    • Philippe "BooK" Bruhat <book@cpan.org>
    • Ricardo Signes <rjbs@semiotic.systems>
    • Steve Hay <steve.m.hay@googlemail.com>
    • Stuart Mackintosh <stuart@perlfoundation.org>
    • Todd Rinaldo <toddr@cpanel.net>
    • Tony Cook <tony@develop-help.com>
    • Yves Orton <demerphq@gmail.com>
  • Inactive Members ๐Ÿ’ค
    • Abhijit Menon-Sen <ams@toroid.org>
    • Andy Dougherty <doughera@lafayette.edu>
    • David Golden <xdg@xdg.me>
    • Jan Dubois <jan@jandubois.com>
    • Jason McIntosh <jmac@jmac.org>
    • Jesse Vincent <jesse@fsck.com>

perlgit - Detailed information about git and the Perl repository

DESCRIPTION

CLONING THE REPOSITORY ๐Ÿงฌ

WORKING WITH THE REPOSITORY ๐ŸŒˆ

  • Finding out your status
  • Patch workflow
  • A note on derived files
  • Cleaning a working directory
  • Bisecting
  • Topic branches and rewriting history
  • Grafts

WRITE ACCESS TO THE GIT REPOSITORY ๐Ÿ”‘

  • Working with GitHub pull requests
  • Accepting a patch
  • Committing to blead
  • On merging and rebasing
  • Committing to maintenance versions
  • Using a smoke-me branch to test changes

perlhist - the Perl history records

DESCRIPTION

INTRODUCTION

THE KEEPERS OF THE PUMPKIN ๐ŸŽƒ

  • PUMPKIN?

THE RECORDS ๐Ÿ“œ

  • SELECTED RELEASE SIZES
  • SELECTED PATCH SIZES

THE KEEPERS OF THE RECORDS


perldelta - what is new for perl v5.42.3

DESCRIPTION

Security ๐Ÿ”’

  • CVE-2026-8376 - Buffer overflow in Perl_study_chunk
  • CVE-2026-57432 - Buffer overflow in S_measure_struct
  • CVE-2026-13221 - Regex trie 16-bit field overflow

Incompatible Changes โš ๏ธ

Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

Documentation ๐Ÿ“

  • Changes to Existing Documentation

Diagnostics ๐Ÿฉบ

  • New Diagnostics

Testing ๐Ÿงช

Acknowledgements ๐Ÿ’–

Reporting Bugs ๐Ÿ›

Give Thanks ๐Ÿ™

SEE ALSO


perl5423delta, perldelta - what is new for perl v5.42.3

DESCRIPTION

Security ๐Ÿ”’

  • CVE-2026-8376 - Buffer overflow in Perl_study_chunk
  • CVE-2026-57432 - Buffer overflow in S_measure_struct
  • CVE-2026-13221 - Regex trie 16-bit field overflow

Incompatible Changes โš ๏ธ

Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

Documentation ๐Ÿ“

  • Changes to Existing Documentation

Diagnostics ๐Ÿฉบ

  • New Diagnostics

Testing ๐Ÿงช

Acknowledgements ๐Ÿ’–

Reporting Bugs ๐Ÿ›

Give Thanks ๐Ÿ™

SEE ALSO


perl5422delta - what is new for perl v5.42.2

DESCRIPTION

Security ๐Ÿ”’

  • [CVE-2026-4176] Vulnerability in Compress::Raw::Zlib

Incompatible Changes โš ๏ธ

Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

Documentation ๐Ÿ“

  • Changes to Existing Documentation
  • Testing
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5421delta โ€” what is new for perl v5.42.1

  • DESCRIPTION
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Platform-Specific Notes
      • AIX, Win32
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5420delta โ€” what is new for perl v5.42.0

  • DESCRIPTION
  • Core Enhancements
    • More CORE:: subs โœจ
    • New pragma "source::encoding" slay
    • New ":writer" attribute on field variables
    • New "any" and "all" operators
    • Apostrophe as a global name separator can be disabled
    • Lexical method declaration using "my method"
    • Lexical method invocation operator "->&"
    • Switch and Smart Match operator kept, behind a feature
    • Unicode 16.0 supported iconic
    • Assigning logical xor "^^=" operator
  • Security
    • [CVE-2024-56406] Heap buffer overflow vulnerability with tr//
    • [CVE-2025-40909] Perl threads have a working directory race condition where file operations may target unintended paths bestie this one is serious
  • Incompatible Changes
    • Removed containing function references for functions without eval
  • Performance Enhancements
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Utility Changes
    • Porting/test-dist-modules.pl
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Platform-Specific Notes
      • arm64 Darwin, Android, Cygwin, MacOS (Darwin)
  • Internal Changes
  • Selected Bug Fixes
  • Obituaries
    • Abe Timmerman ๐Ÿ•ฏ๏ธ
    • Andrew Main
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5404delta โ€” what is new for perl v5.40.4

  • DESCRIPTION
  • Security
    • [CVE-2026-4176] Vulnerability in Compress::Raw::Zlib yikes
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Testing
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5403delta โ€” what is new for perl v5.40.3

  • DESCRIPTION
  • Security
    • [CVE-2025-40909] Perl threads have a working directory race condition where file operations may target unintended paths
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Testing
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5402delta โ€” what is new for perl v5.40.2

  • DESCRIPTION
  • Security
    • [CVE-2024-56406] Heap buffer overflow vulnerability with tr//
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5401delta โ€” what is new for perl v5.40.1

  • DESCRIPTION
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Configuration and Compilation
  • Testing
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5400delta โ€” what is new for perl v5.40.0

  • DESCRIPTION
  • Core Enhancements
    • New "__CLASS__" Keyword
    • ":reader" attribute for field variables
    • Permit a space in "-M" command-line option
    • Restrictions to "use VERSION" declarations
    • New "builtin::inf" and "builtin::nan" functions (experimental)
    • New "^^" logical xor operator
    • "try"/"catch" feature is no longer experimental
    • "for" iterating over multiple values at a time is no longer experimental finally
    • "builtin" module is no longer experimental
    • The ":5.40" feature bundle adds "try"
    • "use v5.40;" imports builtin functions
  • Security
    • CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
    • CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
  • Incompatible Changes
    • reset EXPR now calls set-magic on scalars
    • Calling the import method of an unknown package produces a warning
    • "return" no longer allows an indirect object
    • Class barewords no longer resolved as file handles in method calls under "no feature "bareword_filehandles""
  • Deprecations
  • Performance Enhancements
  • Modules and Pragmata
    • New Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Configuration and Compilation
  • Testing
  • Platform Support
    • New Platforms
      • Serenity OS <butterfly>๐Ÿฆ‹</butterfly>
    • Platform-Specific Notes
      • Windows, Linux, MacOS/Darwin, VMS, Oracle Developer Studio (Solaris, Oracle Linux)
  • Internal Changes
  • Selected Bug Fixes
  • Known Problems
    • perlivp is missing streamzip on Windows
  • Errata From Previous Releases
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5385delta โ€” what is new for perl v5.38.5

  • DESCRIPTION
  • Security
    • [CVE-2025-40909] Perl threads have a working directory race condition where file operations may target unintended paths
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Testing
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5384delta โ€” what is new for perl v5.38.4

  • DESCRIPTION
  • Security
    • [CVE-2024-56406] Heap buffer overflow vulnerability with tr//
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5383delta โ€” what is new for perl v5.38.3

  • DESCRIPTION
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Testing
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5382delta โ€” what is new for perl v5.38.2

  • DESCRIPTION
  • Security
    • CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
    • CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5381delta โ€” what is new for perl v5.38.1

  • DESCRIPTION
  • Security
    • CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
    • CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5380delta โ€” what is new for perl v5.38.0

  • DESCRIPTION
  • Core Enhancements
    • New "class" Feature <sparkles>โœจ</sparkles>
    • Unicode 15.0 is supported
    • Deprecation warnings now have specific subcategories
    • %{^HOOK} API introduced
    • PERL_RAND_SEED
    • Defined-or and logical-or assignment default expressions in signatures
    • @INC Hook Enhancements and $INC and INCDIR
    • Forbidden control flow out of "defer" or "finally" now detected at compile-time
    • Optimistic Eval in Patterns
    • REG_INF has been raised from 65,536 to 2,147,483,647 numbersss
    • New API functions optimize_optree and finalize_optree
    • Some "goto"s are now permitted in "defer" and "finally" blocks
    • New regexp variable ${^LAST_SUCCESSFUL_PATTERN}
    • Locale category LC_NAME now supported on participating platforms
  • Incompatible Changes
    • readline() no longer clears the stream error and eof flags
    • "INIT" blocks no longer run after an exit() in "BEGIN"
    • Syntax errors no longer produce "phantom error messages"
    • utf8::upgrade()
    • Changes to "thread-safe" locales
  • Deprecations
    • Use of "'" as a package name separator is deprecated
    • Switch and Smart Match operator
  • Performance Enhancements
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • New Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Discontinued Platforms
      • Ultrix
    • Platform-Specific Notes
      • DragonflyBSD, FreeBSD, Solaris, Synology, Windows
  • Internal Changes
    • "newSVbool(const bool bool_val)", newSV_true(), newSV_false(), "sv_set_true(SV *sv)", "sv_set_false(SV *sv)", "sv_set_bool(SV *sv, const bool bool_val)", SvIandPOK(sv), SvIandPOK_off(sv), "SvIandPOK_on", I32df -- Like %d, U32of -- Like %o, U32uf -- Like %u, U32xf -- Like %x, U32Xf -- Like %X
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5363delta โ€” what is new for perl v5.36.3

  • DESCRIPTION
  • Security
    • CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
    • CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5362delta โ€” what is new for perl v5.36.2

  • DESCRIPTION
  • Security
    • CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
    • CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5361delta โ€” what is new for perl v5.36.1

  • DESCRIPTION
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Configuration and Compilation
  • Testing
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5360delta โ€” what is new for perl v5.36.0

  • DESCRIPTION
  • Core Enhancements
    • "use v5.36"
    • -g command-line flag
    • Unicode 14.0 is supported
    • regex sets are no longer considered experimental
    • Variable length lookbehind is mostly no longer considered experimental
    • SIGFPE no longer deferred
    • Stable boolean tracking fr fr
    • iterating over multiple values at a time (experimental)
    • builtin functions (experimental)
      • builtin::trim, builtin::indexed, builtin::true, builtin::false, builtin::is_bool, builtin::weaken, builtin::unweaken, builtin::is_weak, builtin::blessed, builtin::refaddr, builtin::reftype, builtin::ceil, builtin::floor ๐Ÿ’œ

...and we're still in the changelog zone bestie ๐Ÿซถ this is literally the tail end of the previous delta โ€” the last little crumbs before the next set of release notes kicks in:

  • "defer" blocks (experimental)
  • try/catch can now have a "finally" block (experimental)`
  • non-ASCII delimiters for quote-like operators (experimental)
  • @_ is now experimental within signatured subs

not the entire list being tagged (experimental) ๐Ÿ˜ญ the devs really said "vibe check first, stability later." then the regular sections roll up:

  • Incompatible Changes
    • A physically empty sort is now a compile-time error
  • Deprecations
    • "use VERSION" (where VERSION is below v5.11) after "use v5.11" is deprecated
  • Performance Enhancements
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • New Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Windows
    • VMS "keys %ENV" on VMS returns consistent results
    • Discontinued Platforms
      • AT&T UWIN, DOS/DJGPP, NetWare
    • Platform-Specific Notes
      • z/OS
  • Internal Changes
  • Selected Bug Fixes
  • Errata From Previous Releases
  • Obituaries
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐ŸŒธ perl5343delta - what is new for perl v5.34.3 ๐ŸŒธ

a lil maintenance-drop, very "quiet luxury" energy โœจ here's the menu:

  • DESCRIPTION
  • Security
    • CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
    • CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐Ÿฆ‹ perl5342delta - what is new for perl v5.34.2 ๐Ÿฆ‹

same energy, different patch number, no cap:

  • DESCRIPTION
  • Security
    • CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
    • CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐ŸŽ€ perl5341delta - what is new for perl v5.34.1 ๐ŸŽ€

a little patch, a lot of polish:

  • DESCRIPTION
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Testing
    • Platform-Specific Notes
      • Windows
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐Ÿ‘‘ perl5340delta - what is new for perl v5.34.0 ๐Ÿ‘‘

oh this one is stacked โ€” the big v5.34 feature drop ๐Ÿ’…

  • DESCRIPTION
  • Core Enhancements
    • Experimental Try/Catch Syntax
    • "qr/{,n}/" is now accepted
  • Blanks freely allowed within but adjacent to curly braces
  • New octal syntax "0oddddd"
  • Performance Enhancements
  • Modules and Pragmata
    • New Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • New Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Utility Changes
    • perl5db.pl (the debugger)
      • New option: "HistItemMinLength", Fix to "i" and "l" commands
  • Configuration and Compilation
    • stadtx hash support has been removed, Configure, "-Dusedefaultstrict"
  • Testing
  • Platform Support
    • New Platforms
      • 9front
    • Updated Platforms
      • Plan9, MacOS (Darwin)
    • Discontinued Platforms
      • Symbian
    • Platform-Specific Notes
      • DragonFlyBSD, Mac OS X, Windows, z/OS
  • Internal Changes
  • Selected Bug Fixes
    • pack/unpack format 'D' now works on all systems that could support it
  • Known Problems
  • Errata From Previous Releases
  • Obituary
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐ŸŒˆ perl5321delta - what is new for perl v5.32.1 ๐ŸŒˆ

a tidy lil maintenance patch, we love to see it:

  • DESCRIPTION
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • New Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • Changes to Existing Diagnostics
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Platform-Specific Notes
      • MacOS (Darwin), Minix
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐Ÿ’œ perl5320delta - what is new for perl v5.32.0 ๐Ÿ’œ

okay this one is long โ€” grab a snack bestie, we're going in ๐Ÿ“

  • DESCRIPTION
  • Core Enhancements
    • The isa Operator
    • Unicode 13.0 is supported
    • Chained comparisons capability
    • New Unicode properties "Identifier_Status" and "Identifier_Type" supported
    • It is now possible to write "qr/\p{Name=...}/", or "qr!\p{na=/(SMILING|GRINNING) FACE/}!"
    • Improvement of POSIX::mblen(), "mbtowc", and "wctomb"
    • Alpha assertions are no longer experimental
    • Script runs are no longer experimental
    • Feature checks are now faster
    • Perl is now developed on GitHub
    • Compiled patterns can now be dumped before optimization
  • Security
    • [CVE-2020-10543] Buffer overflow caused by a crafted regular expression
    • [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression
    • [CVE-2020-12723] Buffer overflow caused by a crafted regular expression
    • Additional Note
  • Incompatible Changes
    • Certain pattern matching features are now prohibited in compiling Unicode property value wildcard subpatterns
    • Unused functions "POSIX::mbstowcs" and "POSIX::wcstombs" are removed
    • A bug fix for "(?[...])" may have caused some patterns to no longer compile
    • "\p{user-defined}" properties now always override official Unicode ones
    • Modifiable variables are no longer permitted in constants
    • Use of "vec" on strings with code points above 0xFF is forbidden
    • Use of code points over 0xFF in string bitwise operators
    • Sys::Hostname::hostname() does not accept arguments
    • Plain "0" string now treated as a number for range operator
    • "\K" now disallowed in look-ahead and look-behind assertions
  • Performance Enhancements
  • Modules and Pragmata
    • Updated Modules and Pragmata
    • Removed Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
      • "caller", "__FILE__", "__LINE__", "return", "open"
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Utility Changes
    • perlbug
      • The bug tracker homepage URL now points to GitHub
    • streamzip
  • Configuration and Compilation
    • Configure
  • Testing
  • Platform Support
    • Discontinued Platforms
      • Windows CE
    • Platform-Specific Notes
      • Linux, NetBSD 8.0, Windows, Solaris, VMS, z/OS
  • Internal Changes
  • Selected Bug Fixes
  • Obituary
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐Ÿงš perl5303delta - what is new for perl v5.30.3 ๐Ÿงš

the security-patch trio is back again โ€” same three CVEs, same "Additional Note" lil footnote:

  • DESCRIPTION
  • Security
    • [CVE-2020-10543] Buffer overflow caused by a crafted regular expression
    • [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression
    • [CVE-2020-12723] Buffer overflow caused by a crafted regular expression
    • Additional Note
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Testing
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

โญ perl5302delta - what is new for perl v5.30.2 โญ

  • DESCRIPTION
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Platform-Specific Notes
      • Windows
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐ŸŒธ perl5301delta - what is new for perl v5.30.1 ๐ŸŒธ

  • DESCRIPTION
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Platform-Specific Notes
      • Win32
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐Ÿ”ฅ perl5300delta - what is new for perl v5.30.0 ๐Ÿ”ฅ

v5.30.0 said "let me cook" and cooked ๐Ÿณ look at all these changes:

  • DESCRIPTION
  • Notice
  • Core Enhancements
    • Limited variable length lookbehind in regular expression pattern matching is now experimentally supported
    • The upper limit "n" specifiable in a regular expression quantifier of the form "{m,n}" has been doubled to 65534
    • Unicode 12.1 is supported
    • Wildcards in Unicode property value specifications are now partially supported
    • qr'\N{name}' is now supported
    • Turkic UTF-8 locales are now seamlessly supported
    • It is now possible to compile perl to always use thread-safe locale operations
    • Eliminate opASSIGN macro usage from core
    • "-Drv" now means something on "-DDEBUGGING" builds
  • Incompatible Changes
    • Assigning non-zero to $[ is fatal
    • Delimiters must now be graphemes
    • Some formerly deprecated uses of an unescaped left brace "{" in regular expression patterns are now illegal
    • Previously deprecated sysread()/syswrite() on :utf8 handles is now fatal
    • my() in false conditional prohibited
    • Fatalize $* and $#
    • Fatalize unqualified use of dump()
    • Remove File::Glob::glob()
    • pack() no longer can return malformed UTF-8
    • Any set of digits in the Common script are legal in a script run of another script
    • JSON::PP enables allow_nonref by default
  • Deprecations
    • In XS code, use of various macros dealing with UTF-8
  • Performance Enhancements
  • Modules and Pragmata
    • Updated Modules and Pragmata
    • Removed Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • Changes to Existing Diagnostics
  • Utility Changes
    • xsubpp
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Platform-Specific Notes
      • HP-UX 11.11, Mac OS X, Minix3, Cygwin, Win32 Mingw, Windows
  • Internal Changes
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐Ÿฆ‹ perl5283delta - what is new for perl v5.28.3 ๐Ÿฆ‹

same CVE trio, same energy, lil maintenance moment:

  • DESCRIPTION
  • Security
    • [CVE-2020-10543] Buffer overflow caused by a crafted regular expression
    • [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression
    • [CVE-2020-12723] Buffer overflow caused by a crafted regular expression
    • Additional Note
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Testing
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐Ÿ’– perl5282delta - what is new for perl v5.28.2 ๐Ÿ’–

last one in this batch bestie, and it's a lil shortie:

  • DESCRIPTION
  • Incompatible Changes
    • Any set of digits in the Common script are legal in a script run of another script
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Platform Support
    • Platform-Specific Notes
      • Windows, Mac OS X
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5281delta โ€” what is new for perl v5.28.1

Bestie this one is a maintenance release and its TOC is chef's kiss tidy:

  • DESCRIPTION
  • Security
    • [CVE-2018-18311] Integer overflow leading to buffer overflow and segmentation fault
    • [CVE-2018-18312] Heap-buffer-overflow write in S_regatom (regcomp.c)
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5280delta โ€” what is new for perl v5.28.0

okay this one is a big one, it's giving main character energy, buckle up ๐ŸŽ€

  • DESCRIPTION
  • Core Enhancements
    • Unicode 10.0 is supported
    • "delete" on key/value hash slices
    • Experimentally, there are now alphabetic synonyms for some regular expression assertions
    • Mixed Unicode scripts are now detectable
    • In-place editing with "perl -i" is now safer
    • Initialisation of aggregate state variables
    • Full-size inode numbers
    • The "sprintf" %j format size modifier is now available with pre-C99 compilers
    • Close-on-exec flag set atomically
    • String- and number-specific bitwise ops are no longer experimental
    • Locales are now thread-safe on systems that support them
    • New read-only predefined variable "${^SAFE_LOCALES}"
  • Security
    • [CVE-2017-12837] Heap buffer overflow in regular expression compiler
    • [CVE-2017-12883] Buffer over-read in regular expression parser
    • [CVE-2017-12814] $ENV{$key} stack buffer overflow on Windows
    • Default Hash Function Change
  • Incompatible Changes
    • Subroutine attribute and signature order
    • Comma-less variable lists in formats are no longer allowed
    • The ":locked" and ":unique" attributes have been removed
    • "\N{}" with nothing between the braces is now illegal
    • Opening the same symbol as both a file and directory handle is no longer allowed
    • Use of bare "<<" to mean "<<""" is no longer allowed
    • Setting $/ to a reference to a non-positive integer no longer allowed
    • Unicode code points with values exceeding "IV_MAX" are now fatal
    • The "B::OP::terse" method has been removed
    • Use of inherited AUTOLOAD for non-methods is no longer allowed
    • Use of strings with code points over 0xFF is not allowed for bitwise string operators
    • Setting "${^ENCODING}" to a defined value is now illegal
    • Backslash no longer escapes colon in PATH for the "-S" switch
    • the -DH (DEBUG_H) misfeature has been removed
    • Yada-yada is now strictly a statement
    • Sort algorithm can no longer be specified
    • Over-radix digits in floating point literals
    • Return type of unpackstring()
  • Deprecations
    • Use of "vec" on strings with code points above 0xFF is deprecated
    • Some uses of unescaped "{" in regexes are no longer fatal
    • Use of unescaped "{" immediately after a "(" in regular expression patterns is deprecated
    • Assignment to $[ will be fatal in Perl 5.30
    • hostname() won't accept arguments in Perl 5.32
    • Module removals
      • B::Debug, Locale::Codes and its associated Country, Currency and Language modules
  • Performance Enhancements
  • Modules and Pragmata
    • Removal of use vars
    • Use of DynaLoader changed to XSLoader in many modules
    • Updated Modules and Pragmata
    • Removed Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
      • "Variable length lookbehind not implemented in regex m/%s/" in perldiag, "Use of state $_ is experimental" in perldiag
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Utility Changes
    • perlbug
  • Configuration and Compilation
    • C89 requirement, New probes, HAS_BUILTIN_ADD_OVERFLOW, HAS_BUILTIN_MUL_OVERFLOW, HAS_BUILTIN_SUB_OVERFLOW, HAS_THREAD_SAFE_NL_LANGINFO_L, HAS_LOCALECONV_L, HAS_MBRLEN, HAS_MBRTOWC, HAS_MEMRCHR, HAS_NANOSLEEP, HAS_STRNLEN, HAS_STRTOLD_L, I_WCHAR
  • Testing
  • Packaging
  • Platform Support
    • Discontinued Platforms
      • PowerUX / Power MAX OS
    • Platform-Specific Notes
      • CentOS, Cygwin, Darwin, FreeBSD, VMS, Windows
  • Internal Changes
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5263delta โ€” what is new for perl v5.26.3

Security patch central, bestie. Every single CVE listed, no skips ๐Ÿ’…

  • DESCRIPTION
  • Security
    • [CVE-2018-12015] Directory traversal in module Archive::Tar
    • [CVE-2018-18311] Integer overflow leading to buffer overflow and segmentation fault
    • [CVE-2018-18312] Heap-buffer-overflow write in S_regatom (regcomp.c)
    • [CVE-2018-18313] Heap-buffer-overflow read in S_grok_bslash_N (regcomp.c)
    • [CVE-2018-18314] Heap-buffer-overflow write in S_regatom (regcomp.c)
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5262delta โ€” what is new for perl v5.26.2

  • DESCRIPTION
  • Security
    • [CVE-2018-6797] heap-buffer-overflow (WRITE of size 1) in S_regatom (regcomp.c)
    • [CVE-2018-6798] Heap-buffer-overflow in Perl__byte_dump_string (utf8.c)
    • [CVE-2018-6913] heap-buffer-overflow in S_pack_rec
    • Assertion failure in Perl__core_swash_init (utf8.c)
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Platform Support
    • Platform-Specific Notes
      • Windows
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5261delta โ€” what is new for perl v5.26.1

  • DESCRIPTION
  • Security
    • [CVE-2017-12837] Heap buffer overflow in regular expression compiler
    • [CVE-2017-12883] Buffer over-read in regular expression parser
    • [CVE-2017-12814] $ENV{$key} stack buffer overflow on Windows
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Platform Support
    • Platform-Specific Notes
      • FreeBSD, Windows
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5260delta โ€” what is new for perl v5.26.0

This TOC is LONG and I'm obsessed with it ๐Ÿฆ‹ every last heading, coming right up:

  • DESCRIPTION
  • Notice
    • "." no longer in @INC, "do" may now warn, In regular expression patterns, a literal left brace "{" should be escaped
  • Core Enhancements
    • Lexical subroutines are no longer experimental
    • Indented Here-documents
    • New regular expression modifier "/xx"
    • "@{^CAPTURE}", "%{^CAPTURE}", and "%{^CAPTURE_ALL}"
    • Declaring a reference to a variable
    • Unicode 9.0 is now supported
    • Use of "\p{script}" uses the improved Script_Extensions property
    • Perl can now do default collation in UTF-8 locales on platforms that support it
    • Better locale collation of strings containing embedded "NUL" characters
    • "CORE" subroutines for hash and array functions callable via reference
    • New Hash Function For 64-bit Builds
  • Security
    • Removal of the current directory (".") from @INC
      • Configure -Udefault_inc_excludes_dot, "PERL_USE_UNSAFE_INC", A new deprecation warning issued by "do", Script authors, Installing and using CPAN modules, Module Authors
    • Escaped colons and relative paths in PATH
    • New "-Di" switch is now required for PerlIO debugging output
  • Incompatible Changes
    • Unescaped literal "{" characters in regular expression patterns are no longer permissible
    • scalar(%hash) return signature changed
    • "keys" returned from an lvalue subroutine
    • The "${^ENCODING}" facility has been removed
    • POSIX::tmpnam() has been removed
    • require ::Foo::Bar is now illegal
    • Literal control character variable names are no longer permissible
    • "NBSP" is no longer permissible in "\N{...}"
  • Deprecations
    • String delimiters that aren't stand-alone graphemes are now deprecated
    • "\cX" that maps to a printable is no longer deprecated
  • Performance Enhancements
    • New Faster Hash Function on 64 bit builds, readline is faster
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • New Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Utility Changes
    • c2ph and pstruct
    • Porting/pod_lib.pl
    • Porting/sync-with-cpan
    • perf/benchmarks
    • Porting/checkAUTHORS.pl
    • t/porting/regen.t
    • utils/h2xs.PL
    • perlbug
  • Configuration and Compilation
  • Testing
  • Platform Support
    • New Platforms
      • NetBSD/VAX
    • Platform-Specific Notes
      • Darwin, EBCDIC, HP-UX, Hurd, VAX, VMS, Windows, Linux, OpenBSD 6, FreeBSD, DragonFly BSD
  • Internal Changes
  • Selected Bug Fixes
  • Known Problems
  • Errata From Previous Releases
  • Obituary
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

perl5244delta โ€” what is new for perl v5.24.4

  • DESCRIPTION
  • Security
    • [CVE-2018-6797] heap-buffer-overflow (WRITE of size 1) in S_regatom (regcomp.c)
    • [CVE-2018-6798] Heap-buffer-overflow in Perl__byte_dump_string (utf8.c)
    • [CVE-2018-6913] heap-buffer-overflow in S_pack_rec
    • Assertion failure in Perl__core_swash_init (utf8.c)
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • SEE ALSO

perl5243delta โ€” what is new for perl v5.24.3

  • DESCRIPTION
  • Security
    • [CVE-2017-12837] Heap buffer overflow in regular expression compiler
    • [CVE-2017-12883] Buffer over-read in regular expression parser
    • [CVE-2017-12814] $ENV{$key} stack buffer overflow on Windows
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Configuration and Compilation
  • Platform Support
    • Platform-Specific Notes
      • VMS, Windows
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • SEE ALSO

perl5242delta โ€” what is new for perl v5.24.2

  • DESCRIPTION
  • Security
    • Improved handling of '.' in @INC in base.pm
    • "Escaped" colons and relative paths in PATH
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • SEE ALSO

perl5241delta โ€” what is new for perl v5.24.1

  • DESCRIPTION
  • Security
    • -Di switch is now required for PerlIO debugging output
    • Core modules and tools no longer search "." for optional modules
  • Incompatible Changes
  • Modules and Pragmata
    • Updated Modules and Pragmata

โ€ฆand that last page finishes out exactly like this, bestie, no skips:

  • Documentation
    • Changes to Existing Documentation
  • Testing
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • SEE ALSO

๐Ÿฆ‹ perl5240delta โ€” what is new for perl v5.24.0

v5.24.0 walked in and ate, honestly. Here's its full table of contents, every line, nothing cut:

  • DESCRIPTION โ€” the little intro, the vibe-setter ๐Ÿ’–
  • Core Enhancements ๐Ÿ”ฅ
    • postfix dereferencing is no longer experimental, it graduated ๐Ÿ‘‘
    • Unicode 8.0 is supported now ๐Ÿฆ‹
    • perl will now croak when closing an in-place output file fails ๐Ÿ˜ญ
    • new "\b{lb}" boundary in regular expressions
    • "qr/(?[ ])/" now works in UTF-8 locales โœจ
    • integer shift ("<<" and ">>") is now more explicitly defined
    • printf and sprintf now allow reordered precision arguments
    • more fields get handed to the "sigaction" callback with "SA_SIGINFO"
    • hashbang redirection to Perl 6 ๐Ÿ‘€
  • Security ๐Ÿ”’
    • set the proper umask before calling mkstemp(3)
    • fix out of boundary access in Win32 path handling
    • fix loss of taint in canonpath
    • avoid accessing uninitialized memory in win32 crypt()
    • remove duplicate environment variables from "environ"
  • Incompatible Changes ๐Ÿ’€
    • the "autoderef" feature has been removed
    • lexical $_ has been removed
    • "qr/\b{wb}/" is now tailored to Perl expectations
    • regular expression compilation errors
    • "qr/\N{}/" is now disallowed under "use re "strict""
    • nested declarations are now disallowed
    • the "/\C/" character class has been removed
    • chdir('') no longer chdirs home
    • ASCII characters in variable names must now be all visible
    • an off by one issue in $Carp::MaxArgNums has been fixed
    • only blanks and tabs are now allowed within "[...]" within "(?[...])"
  • Deprecations ๐Ÿ™ˆ
    • using code points above the platform's "IV_MAX" is now deprecated
    • doing bitwise operations on strings containing code points above 0xFF is deprecated
    • sysread(), syswrite(), recv() and send() are deprecated on :utf8 handles
  • Performance Enhancements ๐Ÿš€
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
  • Documentation ๐Ÿ“š
    • Changes to Existing Documentation
  • Diagnostics ๐Ÿฉบ
    • New Diagnostics
    • Changes to Existing Diagnostics
  • Configuration and Compilation โš™๏ธ
  • Testing ๐Ÿงช
  • Platform Support ๐Ÿ–ฅ๏ธ
    • Platform-Specific Notes
      • AmigaOS, Cygwin, EBCDIC, UTF-EBCDIC extended, EBCDIC cmp() and sort() fixed for UTF-EBCDIC strings, EBCDIC "tr///" and "y///" fixed for "\N{}", and "use utf8" ranges, FreeBSD, IRIX, MacOS X, Solaris, Tru64, VMS, Win32, ppc64el, floating point
  • Internal Changes ๐Ÿ› ๏ธ
  • Selected Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

๐ŸŒธ perl5224delta โ€” what is new for perl v5.22.4

the v5.22.4 rundown, short and sweet but every line is here fr:

  • DESCRIPTION
  • Security ๐Ÿ”’
    • improved handling of '.' in @INC in base.pm
    • "Escaped" colons and relative paths in PATH
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
  • Selected Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

๐ŸŽ€ perl5223delta โ€” what is new for perl v5.22.3

v5.22.3, the one where security said "actually, no." ๐Ÿ’…

  • DESCRIPTION
  • Security ๐Ÿ”’
    • -Di switch is now required for PerlIO debugging output
    • core modules and tools no longer search "." for optional modules
  • Incompatible Changes ๐Ÿ’€
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
  • Documentation ๐Ÿ“š
    • Changes to Existing Documentation
  • Testing ๐Ÿงช
  • Selected Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

๐Ÿฆ‹ perl5222delta โ€” what is new for perl v5.22.2

v5.22.2's list, and yeah the security section is doing the most, as it should:

  • DESCRIPTION
  • Security ๐Ÿ”’
    • fix out of boundary access in Win32 path handling
    • fix loss of taint in canonpath()
    • set proper umask before calling mkstemp(3)
    • avoid accessing uninitialized memory in Win32 crypt()
    • remove duplicate environment variables from "environ"
  • Incompatible Changes ๐Ÿ’€
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
  • Documentation ๐Ÿ“š
    • Changes to Existing Documentation
  • Configuration and Compilation โš™๏ธ
  • Platform Support ๐Ÿ–ฅ๏ธ
    • Platform-Specific Notes
      • Darwin, OS X/Darwin, ppc64el, Tru64
  • Internal Changes ๐Ÿ› ๏ธ
  • Selected Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

๐ŸŒˆ perl5221delta โ€” what is new for perl v5.22.1

v5.22.1, small but it knew exactly what it was doing โœจ

  • DESCRIPTION
  • Incompatible Changes ๐Ÿ’€
    • Bounds Checking Constructs
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
  • Documentation ๐Ÿ“š
    • Changes to Existing Documentation
  • Diagnostics ๐Ÿฉบ
    • Changes to Existing Diagnostics
  • Configuration and Compilation โš™๏ธ
  • Platform Support ๐Ÿ–ฅ๏ธ
    • Platform-Specific Notes
      • IRIX
  • Selected Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

๐Ÿ‘‘ perl5220delta โ€” what is new for perl v5.22.0

okay this one is a WHOLE meal, the section list is giving main character energy, let's go line by line ๐Ÿ”ฅ

  • DESCRIPTION
  • Core Enhancements ๐Ÿ”ฅ
    • new bitwise operators
    • new double-diamond operator ๐Ÿ’Ž
    • new "\b" boundaries in regular expressions
    • non-capturing regular expression flag
    • "use re 'strict'"
    • Unicode 7.0 (with correction) is now supported ๐Ÿฆ‹
    • "use locale" can restrict which locale categories are affected
    • Perl now supports POSIX 2008 locale currency additions
    • better heuristics on older platforms for determining locale UTF-8ness
    • aliasing via reference
    • "prototype" with no arguments
    • new ":const" subroutine attribute
    • "fileno" now works on directory handles
    • list form of pipe open implemented for Win32
    • assignment to list repetition
    • infinity and NaN (not-a-number) handling improved
    • floating point parsing has been improved
    • packing infinity or not-a-number into a character is now fatal ๐Ÿ’€
    • experimental C Backtrace API
  • Security ๐Ÿ”’
    • Perl is now compiled with "-fstack-protector-strong" if available
    • the Safe module could allow outside packages to be replaced
    • Perl is now always compiled with "-D_FORTIFY_SOURCE=2" if available
  • Incompatible Changes ๐Ÿ’€
    • subroutine signatures moved before attributes
    • "&" and "\&" prototypes accepts only subs
    • "use encoding" is now lexical
    • list slices returning empty lists
    • "\N{}" with a sequence of multiple spaces is now a fatal error
    • "use UNIVERSAL '...'" is now a fatal error
    • in double-quotish "\cX", X must now be a printable ASCII character
    • splitting the tokens "(?" and "(*" in regular expressions is now a fatal compilation error
    • "qr/foo/x" now ignores all Unicode pattern white space
    • comment lines within "(?[ ])" are now ended only by a "\n"
    • "(?[...])" operators now follow standard Perl precedence
    • omitting "%" and "@" on hash and array names is no longer permitted
    • "$!" text is now in English outside the scope of "use locale"
    • "$!" text will be returned in UTF-8 when appropriate
    • support for "?PATTERN?" without explicit operator has been removed
    • defined(@array) and defined(%hash) are now fatal errors
    • using a hash or an array as a reference are now fatal errors
    • changes to the "*" prototype
  • Deprecations ๐Ÿ™ˆ
    • setting "${^ENCODING}" to anything but "undef"
    • use of non-graphic characters in single-character variable names
    • inlining of "sub () { $var }" with observable side-effects
    • use of multiple "/x" regexp modifiers
    • using a NO-BREAK space in a character alias for "\N{...}" is now deprecated
    • a literal "{" should now be escaped in a pattern
    • making all warnings fatal is discouraged
  • Performance Enhancements ๐Ÿš€
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
    • Removed Modules and Pragmata
  • Documentation ๐Ÿ“š
    • New Documentation
    • Changes to Existing Documentation
  • Diagnostics ๐Ÿฉบ
    • New Diagnostics
    • Changes to Existing Diagnostics
    • Diagnostic Removals
  • Utility Changes ๐Ÿงฐ
    • find2perl, s2p and a2p removal
    • h2ph
    • encguess
  • Configuration and Compilation โš™๏ธ
  • Testing ๐Ÿงช
  • Platform Support ๐Ÿ–ฅ๏ธ
    • Regained Platforms
      • IRIX and Tru64 platforms are working again, z/OS running EBCDIC Code Page 1047
    • Discontinued Platforms
      • NeXTSTEP/OPENSTEP
    • Platform-Specific Notes
      • EBCDIC, HP-UX, Android, VMS, Win32, OpenBSD, Solaris
  • Internal Changes ๐Ÿ› ๏ธ
  • Selected Bug Fixes ๐Ÿ›
  • Known Problems โš ๏ธ
  • Obituary ๐Ÿ•ฏ๏ธ
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

๐Ÿ“ perl5203delta โ€” what is new for perl v5.20.3

v5.20.3, quiet, tidy, still got h2ph a whole subsection ๐Ÿ’…

  • DESCRIPTION
  • Incompatible Changes ๐Ÿ’€
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
  • Documentation ๐Ÿ“š
    • Changes to Existing Documentation
  • Utility Changes ๐Ÿงฐ
    • h2ph
  • Testing ๐Ÿงช
  • Platform Support ๐Ÿ–ฅ๏ธ
    • Platform-Specific Notes
      • Win32
  • Selected Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

โœจ perl5202delta โ€” what is new for perl v5.20.2

v5.20.2 out here with an Errata section, very "we fixed it, bestie" of it ๐Ÿ˜ญ

  • DESCRIPTION
  • Incompatible Changes ๐Ÿ’€
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
  • Documentation ๐Ÿ“š
    • New Documentation
    • Changes to Existing Documentation
  • Diagnostics ๐Ÿฉบ
    • Changes to Existing Diagnostics
  • Testing ๐Ÿงช
  • Platform Support ๐Ÿ–ฅ๏ธ
    • Regained Platforms
  • Selected Bug Fixes ๐Ÿ›
  • Known Problems โš ๏ธ
  • Errata From Previous Releases ๐Ÿ“
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

๐Ÿงš perl5201delta โ€” what is new for perl v5.20.1

v5.20.1, full little list, platform notes got a whole lineup:

  • DESCRIPTION
  • Incompatible Changes ๐Ÿ’€
  • Performance Enhancements ๐Ÿš€
  • Modules and Pragmata ๐Ÿ“ฆ
    • Updated Modules and Pragmata
  • Documentation ๐Ÿ“š
    • Changes to Existing Documentation
  • Diagnostics ๐Ÿฉบ
    • Changes to Existing Diagnostics
  • Configuration and Compilation โš™๏ธ
  • Platform Support ๐Ÿ–ฅ๏ธ
    • Platform-Specific Notes
      • Android, OpenBSD, Solaris, VMS, Windows
  • Internal Changes ๐Ÿ› ๏ธ
  • Selected Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ”—

๐ŸŒˆ perl5200delta โ€” what is new for perl v5.20.0

and v5.20.0, the big one, Core Enhancements section is stacked. here's what we've got so far:

  • DESCRIPTION
  • Core Enhancements ๐Ÿ”ฅ
    • Experimental Subroutine signatures
    • "sub"s now take a "prototype" attribute
    • more consistent prototype parsing
    • "rand" now uses a consistent random number generator
    • new slice syntax
    • Experimental Postfix Dereferencing
    • Unicode 6.3 now supported ๐Ÿฆ‹
    • new "\p{Unicode}" regular expression pattern property
    • better 64-bit support
    • "use locale" now works on UTF-8 locales
    • "use locale" now compiles on systems without locale ability
    • more locale initialization fallback options
    • "-DL" runtime option now added for tracing locale setting
    • -F now implies -a and -a implies -n
    • $a and $b warnings exemption
  • Security ๐Ÿ”’
    • avoid possible read of free()d memory during parsing
that's where this part stops, bestie โ€” the rest of perl5200delta is coming in the next chunk ๐Ÿซถ

๐Ÿ’… Incompatible Changes ๐Ÿ’…

okay so these are the glow-ups that might break your old code, bestie. read carefully! ๐Ÿšจ

  • do can no longer be used to call subroutines
  • Quote-like escape changes
  • Tainting happens under more circumstances; now conforms to documentation
  • \p{}, \P{} matching has changed for non-Unicode code points.
  • \p{All} has been expanded to match all possible code points
  • Data::Dumper's output may change
  • Locale decimal point character no longer leaks outside of use locale scope
  • Assignments of Windows sockets error codes to $! now prefer errno.h values over WSAGetLastError() values
  • Functions PerlIO_vsprintf and PerlIO_sprintf have been removed

๐Ÿšซ Deprecations ๐Ÿšซ

these are on thin ice, bestie. they're giving โ€œyou should probably stop using thisโ€ energy. ๐Ÿ’€

  • The /\C/ character class
  • Literal control characters in variable names
  • References to non-integers and non-positive integers in $/
  • Character matching routines in POSIX
  • Interpreter-based threads are now discouraged
  • Module removals
    • CGI and its associated CGI:: packages, inc::latest, Package::Constants, Module::Build and its associated Module::Build:: packages
  • Utility removals
    • find2perl, s2p, a2p

โšก Performance Enhancements โšก

we love a speed-up, no cap. ๐ŸŽ๏ธโœจ

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

the module tea is piping hot. โ˜•

  • New Modules and Pragmata
  • Updated Modules and Pragmata

๐Ÿ“– Documentation ๐Ÿ“–

read the docs, bestie. it's giving โ€œthe manual is your friendโ€. ๐Ÿ“š๐Ÿ’–

  • New Documentation
  • Changes to Existing Documentation

๐Ÿฉบ Diagnostics ๐Ÿฉบ

when perl yells at you, it's doing it with love. ๐Ÿ’…

  • New Diagnostics
  • Changes to Existing Diagnostics

๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

the tools got a little glow-up. ๐Ÿ”งโœจ

โš™๏ธ Configuration and Compilation โš™๏ธ

build stuff, compile stuff, you know the vibe. ๐Ÿ—๏ธ

๐Ÿงช Testing ๐Ÿงช

test test test. periodt. ๐Ÿงชโœ…

๐Ÿ–ฅ๏ธ Platform Support ๐Ÿ–ฅ๏ธ

perl runs on everything, literally everything. ๐Ÿ‘‘

  • New Platforms
    • Android, Bitrig, FreeMiNT, Synology
  • Discontinued Platforms
    • sfio, AT&T 3b1, DG/UX, EBCDIC
  • Platform-Specific Notes
    • Cygwin, GNU/Hurd, Linux, Mac OS, MidnightBSD, Mixed-endian platforms, VMS, Win32, WinCE

๐Ÿ”ง Internal Changes ๐Ÿ”ง

under the hood stuff, iykyk. ๐Ÿ› ๏ธ

๐Ÿ› Selected Bug Fixes ๐Ÿ›

squashing bugs like it's our job (because it is). ๐Ÿœ๐Ÿ’ฅ

  • Regular Expressions
  • Perl 5 Debugger and -d
  • Lexical Subroutines
  • Everything Else

โš ๏ธ Known Problems โš ๏ธ

nobody's perfect, not even perl. ๐Ÿ™ˆ

๐Ÿ•Š๏ธ Obituary ๐Ÿ•Š๏ธ

rest in peace to the legends we lost. ๐Ÿ’

๐Ÿ™ Acknowledgements ๐Ÿ™

shoutout to everyone who contributed. y'all are the real MVPs. ๐Ÿซถ

๐Ÿž Reporting Bugs ๐Ÿž

found a bug? don't be shy, report it. the devs wanna know. ๐Ÿ›โžก๏ธ๐Ÿ“ฉ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

go read these next, bestie. iykyk. ๐Ÿ“–โœจ


perl5184delta - what is new for perl v5.18.4

๐Ÿ“ DESCRIPTION ๐Ÿ“

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

๐Ÿ–ฅ๏ธ Platform Support ๐Ÿ–ฅ๏ธ

  • Platform-Specific Notes
    • Win32

๐Ÿ› Selected Bug Fixes ๐Ÿ›

๐Ÿ™ Acknowledgements ๐Ÿ™

๐Ÿž Reporting Bugs ๐Ÿž

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


perl5182delta - what is new for perl v5.18.2

๐Ÿ“ DESCRIPTION ๐Ÿ“

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

๐Ÿ“– Documentation ๐Ÿ“–

  • Changes to Existing Documentation

๐Ÿ› Selected Bug Fixes ๐Ÿ›

๐Ÿ™ Acknowledgements ๐Ÿ™

๐Ÿž Reporting Bugs ๐Ÿž

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


perl5181delta - what is new for perl v5.18.1

๐Ÿ“ DESCRIPTION ๐Ÿ“

๐Ÿ’… Incompatible Changes ๐Ÿ’…

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

๐Ÿ–ฅ๏ธ Platform Support ๐Ÿ–ฅ๏ธ

  • Platform-Specific Notes
    • AIX, MidnightBSD

๐Ÿ› Selected Bug Fixes ๐Ÿ›

๐Ÿ™ Acknowledgements ๐Ÿ™

๐Ÿž Reporting Bugs ๐Ÿž

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


perl5180delta - what is new for perl v5.18.0

๐Ÿ“ DESCRIPTION ๐Ÿ“

๐Ÿš€ Core Enhancements ๐Ÿš€

  • New mechanism for experimental features
  • Hash overhaul
  • Upgrade to Unicode 6.2
  • Character name aliases may now include non-Latin1-range characters
  • New DTrace probes
  • ${^LAST_FH}
  • Regular Expression Set Operations
  • Lexical subroutines
  • Computed Labels
  • More CORE:: subs
  • kill with negative signal names

๐Ÿ”’ Security ๐Ÿ”’

  • See also: hash overhaul
  • Storable security warning in documentation
  • Locale::Maketext allowed code injection via a malicious template
  • Avoid calling memset with a negative count

๐Ÿ’… Incompatible Changes ๐Ÿ’…

  • See also: hash overhaul
  • An unknown character name in \N{...} is now a syntax error
  • Formerly deprecated characters in \N{} character name aliases are now errors
  • \N{BELL} now refers to U+1F514 instead of U+0007
  • New Restrictions in Multi-Character Case-Insensitive Matching in Regular Expression Bracketed Character Classes
  • Explicit rules for variable names and identifiers
  • Vertical tabs are now whitespace
  • /(?{})/ and /(??{})/ have been heavily reworked
  • Stricter parsing of substitution replacement
  • given now aliases the global $_
  • The smartmatch family of features are now experimental
  • Lexical $_ is now experimental
  • readline() with $/ = \N now reads N characters, not N bytes
  • Overridden glob is now passed one argument
  • Here doc parsing
  • Alphanumeric operators must now be separated from the closing delimiter of regular expressions
  • qw(...) can no longer be used as parentheses
  • Interaction of lexical and default warnings
  • state sub and our sub
  • Defined values stored in environment are forced to byte strings
  • require dies for unreadable files
  • gv_fetchmeth_* and SUPER
  • split's first argument is more consistently interpreted

๐Ÿšซ Deprecations ๐Ÿšซ

  • Module removals
    • encoding, Archive::Extract, B::Lint, B::Lint::Debug, CPANPLUS and all included CPANPLUS::* modules, Devel::InnerPackage, Log::Message, Log::Message::Config, Log::Message::Handlers, Log::Message::Item, Log::Message::Simple, Module::Pluggable, Module::Pluggable::Object, Object::Accessor, Pod::LaTeX, Term::UI, Term::UI::History
  • Deprecated Utilities
    • cpanp, cpanp-run-perl, cpan2dist, pod2latex
  • PL_sv_objcount
  • Five additional characters should be escaped in patterns with /x
  • User-defined charnames with surprising whitespace
  • Various XS-callable functions are now deprecated
  • Certain rare uses of backslashes within regexes are now deprecated
  • Splitting the tokens (? and (* in regular expressions
  • Pre-PerlIO IO implementations

๐Ÿ”ฎ Future Deprecations ๐Ÿ”ฎ

  • DG/UX, NeXT

โšก Performance Enhancements โšก

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • New Modules and Pragmata
  • Updated Modules and Pragmata
  • Removed Modules and Pragmata

๐Ÿ“– Documentation ๐Ÿ“–

  • Changes to Existing Documentation
  • New Diagnostics
  • Changes to Existing Diagnostics

๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

โš™๏ธ Configuration and Compilation โš™๏ธ

๐Ÿงช Testing ๐Ÿงช

๐Ÿ–ฅ๏ธ Platform Support ๐Ÿ–ฅ๏ธ

  • Discontinued Platforms
    • BeOS, UTS Global, VM/ESA, MPE/IX, EPOC, Rhapsody
  • Platform-Specific Notes

๐Ÿ”ง Internal Changes ๐Ÿ”ง

๐Ÿ› Selected Bug Fixes ๐Ÿ›

โš ๏ธ Known Problems โš ๏ธ

๐Ÿ•Š๏ธ Obituary ๐Ÿ•Š๏ธ

๐Ÿ™ Acknowledgements ๐Ÿ™

๐Ÿž Reporting Bugs ๐Ÿž

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


perl5163delta - what is new for perl v5.16.3

๐Ÿ“ DESCRIPTION ๐Ÿ“

๐Ÿš€ Core Enhancements ๐Ÿš€

๐Ÿ”’ Security ๐Ÿ”’

  • CVE-2013-1667: memory exhaustion with arbitrary hash keys
  • wrap-around with IO on long strings
  • memory leak in Encode

๐Ÿ’… Incompatible Changes ๐Ÿ’…

๐Ÿšซ Deprecations ๐Ÿšซ

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

โš ๏ธ Known Problems โš ๏ธ

๐Ÿ™ Acknowledgements ๐Ÿ™

๐Ÿž Reporting Bugs ๐Ÿž

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


perl5162delta - what is new for perl v5.16.2

๐Ÿ“ DESCRIPTION ๐Ÿ“

๐Ÿ’… Incompatible Changes ๐Ÿ’…

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

โš™๏ธ Configuration and Compilation โš™๏ธ

  • configuration should no longer be confused by ls colorization

๐Ÿ–ฅ๏ธ Platform Support ๐Ÿ–ฅ๏ธ

  • Platform-Specific Notes
    • AIX

๐Ÿ› Selected Bug Fixes ๐Ÿ›

  • fix /\h/ equivalence with /[\h]/

โš ๏ธ Known Problems โš ๏ธ

๐Ÿ™ Acknowledgements ๐Ÿ™

๐Ÿž Reporting Bugs ๐Ÿž

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


perl5161delta - what is new for perl v5.16.1

๐Ÿ“ DESCRIPTION ๐Ÿ“

๐Ÿ”’ Security ๐Ÿ”’

  • an off-by-two error in Scalar-List-Util has been fixed

๐Ÿ’… Incompatible Changes ๐Ÿ’…

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Updated Modules and Pragmata

โš™๏ธ Configuration and Compilation โš™๏ธ

๐Ÿ–ฅ๏ธ Platform Support ๐Ÿ–ฅ๏ธ

  • Platform-Specific Notes
    • VMS

๐Ÿ› Selected Bug Fixes ๐Ÿ›

โš ๏ธ Known Problems โš ๏ธ

๐Ÿ™ Acknowledgements ๐Ÿ™

๐Ÿž Reporting Bugs ๐Ÿž

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


perl5160delta - what is new for perl v5.16.0

๐Ÿ“ DESCRIPTION ๐Ÿ“

๐Ÿ“ข Notice ๐Ÿ“ข

๐Ÿš€ Core Enhancements ๐Ÿš€

  • use VERSION
  • __SUB__
  • New and Improved Built-ins
  • Unicode Support
  • XS Changes
  • Changes to Special Variables
  • Debugger Changes
  • The CORE Namespace
  • Other Changes

๐Ÿ”’ Security ๐Ÿ”’

  • Use is_utf8_char_buf() and not is_utf8_char()
  • Malformed UTF-8 input could cause attempts to read beyond the end of the buffer
  • File::Glob::bsd_glob() memory error with GLOB_ALTDIRFUNC (CVE-2011-2728)
  • Privileges are now set correctly when assigning to $(

๐Ÿšซ Deprecations ๐Ÿšซ

  • Don't read the Unicode data base files in lib/unicore
  • XS functions is_utf8_char(), utf8_to_uvchr() and utf8_to_uvuni()

๐Ÿ”ฎ Future Deprecations ๐Ÿ”ฎ

  • Core Modules
  • Platforms with no supporting programmers
  • Other Future Deprecations

๐Ÿ’… Incompatible Changes ๐Ÿ’…

  • Special blocks called in void context
  • The overloading pragma and regexp objects
  • Two XS typemap Entries removed
  • Unicode 6.1 has incompatibilities with Unicode 6.0
  • Borland compiler
  • Certain deprecated Unicode properties are no longer supported by default
  • Dereferencing IO thingies as typeglobs
  • User-defined case-changing operations
  • XSUBs are now 'static'
  • Weakening read-only references
  • Tying scalars that hold typeglobs
  • IPC::Open3 no longer provides xfork(), xclose_on_exec() and xpipe_anon()
  • $$ no longer caches PID
  • $$ and getppid() no longer emulate POSIX semantics under LinuxThreads
  • $<, $>, $( and $) are no longer cached
  • Which Non-ASCII characters get quoted by quotemeta and \Q has changed

โšก Performance Enhancements โšก

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Deprecated Modules
    • Version::Requirements
  • New Modules and Pragmata
  • Updated Modules and Pragmata
  • Removed Modules and Pragmata

๐Ÿ“– Documentation ๐Ÿ“–

  • New Documentation
  • Changes to Existing Documentation
  • Removed Documentation

๐Ÿฉบ Diagnostics ๐Ÿฉบ

  • New Diagnostics
  • Removed Errors
  • Changes to Existing Diagnostics

๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

โš™๏ธ Configuration and Compilation โš™๏ธ

๐Ÿ–ฅ๏ธ Platform Support ๐Ÿ–ฅ๏ธ

  • Platform-Specific Notes

(psst โ€” we're still deep inside the delta from the last part, so these next bits are its insides, not a brand-new one ๐Ÿ’œ)

  • Internal Changes โ€” guts-level renovations, zero user-facing chaos ๐ŸŒˆ
  • Selected Bug Fixes โ€” the receipts list, bestie, and it is LONG โœจ
    • Array and hash ๐Ÿ’–
    • C API fixes ๐Ÿงš
    • Compile-time hints โญ
    • Copy-on-write scalars ๐Ÿฆ‹
    • The debugger ๐Ÿ”
    • Dereferencing operators ๐Ÿ’…
    • Filehandle, last-accessed ๐Ÿ“
    • Filetests and stat ๐Ÿ“Š
    • Formats ๐ŸŽ€
    • given and when ๐Ÿ‘‘
    • The glob operator ๐ŸŒธ
    • Lvalue subroutines ๐Ÿ’œ
    • Overloading ๐Ÿ”ฅ
    • Prototypes of built-in keywords ๐Ÿซถ
    • Regular expressions ๐Ÿ’€
    • Smartmatching ๐Ÿ˜ญ
    • The sort operator ๐ŸŒˆ
    • The substr operator โœ‚๏ธ
    • Support for embedded nulls โญ
    • Threading bugs ๐Ÿงต
    • Tied variables ๐ŸŽ€
    • Version objects and vstrings ๐Ÿ’…
    • Warnings, redefinition ๐Ÿ™ˆ
    • Warnings, Uninitialized ๐Ÿ’€
    • Weak references ๐Ÿฆ‹
    • Other notable fixes โœจ
  • Known Problems โ€” the stuff that's still lowkey haunted, no cap ๐Ÿ‘ป
  • Acknowledgements โ€” thank-you notes to the whole group chat ๐Ÿซถ
  • Reporting Bugs โ€” where to send your receipts ๐Ÿ“ฎ
  • SEE ALSO โ€” the little "go read these too" menu ๐Ÿ“š

๐Ÿ’– perl5144delta โ€” what is new for perl v5.14.4

  • DESCRIPTION โ€” the intro vibe check
  • Core Enhancements โ€” glow-ups in the core itself โœจ
  • Security โ€” the serious ones, and yes we're listing all of them ๐Ÿ”’
    • CVE-2013-1667: memory exhaustion with arbitrary hash keys
    • memory leak in Encode
    • [perl #111594] Socket::unpack_sockaddr_un heap-buffer-overflow
    • [perl #111586] SDBM_File: fix off-by-one access to global ".dir"
    • off-by-two error in List::Util
    • [perl #115994] fix segv in regcomp.c:S_join_exact()
    • [perl #115992] PL_eval_start use-after-free
    • wrap-around with IO on long strings
  • Incompatible Changes โ€” the "yeah this works differently now" section ๐Ÿ’€
  • Deprecations โ€” the soft launch of "please stop doing this" ๐Ÿ™ˆ
  • Modules and Pragmata โ€” module gossip time ๐ŸŽ€
    • New Modules and Pragmata ๐ŸŒฑ
    • Updated Modules and Pragmata โฌ†๏ธ
      • Socket, SDBM_File, List::Util
    • Removed Modules and Pragmata ๐Ÿ—‘๏ธ
  • Documentation โ€” words got written ๐Ÿ“
    • New Documentation ๐Ÿ†•
    • Changes to Existing Documentation โœ๏ธ
  • Diagnostics โ€” the error-message lore ๐Ÿšจ
  • Utility Changes โ€” the little tools got tweaks ๐Ÿ”ง
  • Configuration and Compilation โ€” build-time business ๐Ÿ—๏ธ
  • Platform Support โ€” every OS is a main character here ๐Ÿ’ป
    • New Platforms ๐ŸŒ
    • Discontinued Platforms ๐Ÿชฆ
    • Platform-Specific Notes ๐Ÿ“Œ
      • VMS
  • Selected Bug Fixes โ€” the highlight reel โœจ
  • Known Problems โ€” still cursed, sorry bestie ๐Ÿ˜ญ
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

๐Ÿฆ‹ perl5143delta โ€” what is new for perl v5.14.3

  • DESCRIPTION
  • Core Enhancements โœจ
  • Security ๐Ÿ”’
    • "Digest" unsafe use of eval (CVE-2011-3597)
    • Heap buffer overrun in 'x' string repeat operator (CVE-2012-5195)
  • Incompatible Changes ๐Ÿ’€
  • Deprecations ๐Ÿ™ˆ
  • Modules and Pragmata ๐ŸŽ€
    • New Modules and Pragmata ๐ŸŒฑ
    • Updated Modules and Pragmata โฌ†๏ธ
    • Removed Modules and Pragmata ๐Ÿ—‘๏ธ
  • Documentation ๐Ÿ“
    • New Documentation ๐Ÿ†•
    • Changes to Existing Documentation โœ๏ธ
  • Configuration and Compilation ๐Ÿ—๏ธ
  • Platform Support ๐Ÿ’ป
    • New Platforms ๐ŸŒ
    • Discontinued Platforms ๐Ÿชฆ
    • Platform-Specific Notes ๐Ÿ“Œ
      • FreeBSD, Solaris and NetBSD, HP-UX, Linux, Mac OS X, GNU/Hurd, NetBSD
  • Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

๐ŸŒธ perl5142delta โ€” what is new for perl v5.14.2

  • DESCRIPTION
  • Core Enhancements โœจ
  • Security ๐Ÿ”’
    • File::Glob::bsd_glob() memory error with GLOB_ALTDIRFUNC (CVE-2011-2728)
    • "Encode" decode_xs n-byte heap-overflow (CVE-2011-2939)
  • Incompatible Changes ๐Ÿ’€
  • Deprecations ๐Ÿ™ˆ
  • Modules and Pragmata ๐ŸŽ€
    • New Modules and Pragmata ๐ŸŒฑ
    • Updated Modules and Pragmata โฌ†๏ธ
    • Removed Modules and Pragmata ๐Ÿ—‘๏ธ
  • Platform Support ๐Ÿ’ป
    • New Platforms ๐ŸŒ
    • Discontinued Platforms ๐Ÿชฆ
    • Platform-Specific Notes ๐Ÿ“Œ
      • HP-UX PA-RISC/64 now supports gcc-4.x
      • Building on OS X 10.7 Lion and Xcode 4 works again
  • Bug Fixes ๐Ÿ›
  • Known Problems ๐Ÿ‘ป
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

๐Ÿ‘‘ perl5141delta โ€” what is new for perl v5.14.1

  • DESCRIPTION
  • Core Enhancements โœจ
  • Security ๐Ÿ”’
  • Incompatible Changes ๐Ÿ’€
  • Deprecations ๐Ÿ™ˆ
  • Modules and Pragmata ๐ŸŽ€
    • New Modules and Pragmata ๐ŸŒฑ
    • Updated Modules and Pragmata โฌ†๏ธ
    • Removed Modules and Pragmata ๐Ÿ—‘๏ธ
  • Documentation ๐Ÿ“
    • New Documentation ๐Ÿ†•
    • Changes to Existing Documentation โœ๏ธ
  • Diagnostics ๐Ÿšจ
    • New Diagnostics ๐Ÿ†•
    • Changes to Existing Diagnostics โœ๏ธ
  • Utility Changes ๐Ÿ”ง
  • Configuration and Compilation ๐Ÿ—๏ธ
  • Testing ๐Ÿงช
  • Platform Support ๐Ÿ’ป
    • New Platforms ๐ŸŒ
    • Discontinued Platforms ๐Ÿชฆ
    • Platform-Specific Notes ๐Ÿ“Œ
  • Internal Changes ๐ŸŒˆ
  • Bug Fixes ๐Ÿ›
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

โญ perl5140delta โ€” what is new for perl v5.14.0

okay bestie, this one is the BIG one. Grab a snack. ๐Ÿ“

  • DESCRIPTION
  • Notice ๐Ÿ“ข
  • Core Enhancements โœจ
    • Unicode ๐Ÿ”ค
    • Regular Expressions ๐Ÿ’€
    • Syntactical Enhancements ๐Ÿ’…
    • Exception Handling ๐Ÿšจ
    • Other Enhancements ๐ŸŽ€
      • -d:-foo, -d:-foo=bar
    • New C APIs ๐Ÿงš
  • Security ๐Ÿ”’
    • User-defined regular expression properties
  • Incompatible Changes ๐Ÿ’€
    • Regular Expressions and String Escapes
    • Stashes and Package Variables
    • Changes to Syntax or to Perl Operators
    • Threads and Processes
    • Configuration
  • Deprecations ๐Ÿ™ˆ
    • Omitting a space between a regular expression and subsequent word
    • \cX
    • \b{ and \B{
    • Perl 4-era .pl libraries
    • List assignment to $[
    • Use of qw(...) as parentheses
    • \N{BELL}
    • ?PATTERN?
    • Tie functions on scalars holding typeglobs
    • User-defined case-mapping
    • Deprecated modules ๐Ÿชฆ
      • Devel::DProf
  • Performance Enhancements ๐Ÿš€
    • Safe signals optimisation
    • Optimisation of shift() and pop() calls without arguments
    • Optimisation of regexp engine string comparison work
    • Regular expression compilation speed-up
    • String appending is 100 times faster
    • Eliminate PL_* accessor functions under ithreads
    • Freeing weak references
    • Lexical array and hash assignments
    • @_ uses less memory
    • Size optimisations to SV and HV structures
    • Memory consumption improvements to Exporter
    • Memory savings for weak references
    • %+ and %- use less memory
    • Multiple small improvements to threads
    • Adjacent pairs of nextstate opcodes are now optimized away
  • Modules and Pragmata ๐ŸŽ€
    • New Modules and Pragmata ๐ŸŒฑ
    • Updated Modules and Pragma โฌ†๏ธ
      • much less configuration dialog hassle, support for META/MYMETA.json, support for local::lib, support for HTTP::Tiny to reduce the dependency on FTP sites, automatic mirror selection, iron out all known bugs in configure_requires, support for distributions compressed with bzip2(1), allow Foo/Bar.pm on the command line to mean Foo::Bar, charinfo(), charscript(), charblock()
    • Removed Modules and Pragmata ๐Ÿ—‘๏ธ
  • Documentation ๐Ÿ“
    • New Documentation ๐Ÿ†•
    • Changes to Existing Documentation โœ๏ธ
  • Diagnostics ๐Ÿšจ
    • New Diagnostics ๐Ÿ†•
      • Closure prototype called
      • Insecure user-defined property %s
      • panic: gp_free failed to free glob pointer - something is repeatedly re-creating entries
      • Parsing code internal error (%s)
      • refcnt: fd %d%s
      • Regexp modifier "/%c" may not appear twice
      • Regexp modifiers "/%c" and "/%c" are mutually exclusive
      • Using !~ with %s doesn't make sense
      • "\b{" is deprecated; use "\b\{" instead
      • "\B{" is deprecated; use "\B\{" instead
      • Operation "%s" returns its argument for ..
      • Use of qw(...) as parentheses is deprecated
    • Changes to Existing Diagnostics โœ๏ธ
  • Utility Changes ๐Ÿ”ง
  • Configuration and Compilation ๐Ÿ—๏ธ
  • Platform Support ๐Ÿ’ป
    • New Platforms ๐ŸŒ
      • AIX
    • Discontinued Platforms ๐Ÿชฆ
      • Apollo DomainOS, MacOS Classic
    • Platform-Specific Notes ๐Ÿ“Œ
  • Internal Changes ๐ŸŒˆ
    • New APIs ๐Ÿ†•
    • C API Changes ๐Ÿ”
    • Deprecated C APIs ๐Ÿ™ˆ
      • Perl_ptr_table_clear, sv_compile_2op, find_rundefsvoffset, CALL_FPTR and CPERLscope
    • Other Internal Changes ๐ŸŽ€
  • Selected Bug Fixes โœจ
    • I/O
    • Regular Expression Bug Fixes
    • Syntax/Parsing Bugs
    • Stashes, Globs and Method Lookup
      • Aliasing packages by assigning to globs [perl #77358], Deleting packages by deleting their containing stash elements, Undefining the glob containing a package ("undef *Foo::"), Undefining an ISA glob ("undef *Foo::ISA"), Deleting an ISA stash element ("delete $Foo::{ISA}"), Sharing @ISA arrays between classes (via "*Foo::ISA = \@Bar::ISA" or "*Foo::ISA = *Bar::ISA") [perl #77238]
    • Unicode
    • Ties, Overloading and Other Magic
    • The Debugger
    • Threads
    • Scoping and Subroutines
    • Signals
    • Miscellaneous Memory Leaks
    • Memory Corruption and Crashes
    • Fixes to Various Perl Operators
    • Bugs Relating to the C API
  • Known Problems ๐Ÿ‘ป
  • Errata ๐Ÿ“œ
    • keys(), values(), and each() work on arrays
    • split() and @_
  • Obituary ๐Ÿ•ฏ๏ธ
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

๐ŸŽ€ perl5125delta โ€” what is new for perl v5.12.5

  • DESCRIPTION
  • Security ๐Ÿ”’
    • "Encode" decode_xs n-byte heap-overflow (CVE-2011-2939)
    • File::Glob::bsd_glob() memory error with GLOB_ALTDIRFUNC (CVE-2011-2728)
    • Heap buffer overrun in 'x' string repeat operator (CVE-2012-5195)
  • Incompatible Changes ๐Ÿ’€
  • Modules and Pragmata ๐ŸŽ€
    • Updated Modules โฌ†๏ธ
  • Changes to Existing Documentation โœ๏ธ
    • perlebcdic
    • perlunicode
    • perluniprops
  • Installation and Configuration Improvements ๐Ÿ—๏ธ
    • Platform Specific Changes ๐Ÿ’ป
      • Mac OS X, NetBSD
  • Selected Bug Fixes โœจ
  • Errata ๐Ÿ“œ
    • split() and @_
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

๐Ÿฆ‹ perl5124delta โ€” what is new for perl v5.12.4

  • DESCRIPTION
  • Incompatible Changes ๐Ÿ’€
  • Selected Bug Fixes โœจ
  • Modules and Pragmata ๐ŸŽ€
  • Testing ๐Ÿงช
  • Documentation ๐Ÿ“
  • Platform Specific Notes ๐Ÿ“Œ
    • Linux
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

๐Ÿ’œ perl5123delta โ€” what is new for perl v5.12.3

  • DESCRIPTION
  • Incompatible Changes ๐Ÿ’€
  • Core Enhancements โœจ
    • keys, values work on arrays
  • Bug Fixes ๐Ÿ›
  • Platform Specific Notes ๐Ÿ“Œ
    • Solaris, VMS, VOS
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

๐ŸŒˆ perl5122delta โ€” what is new for perl v5.12.2

  • DESCRIPTION
  • Incompatible Changes ๐Ÿ’€
  • Core Enhancements โœจ
  • Modules and Pragmata ๐ŸŽ€
    • New Modules and Pragmata ๐ŸŒฑ
    • Pragmata Changes ๐Ÿ”
    • Updated Modules โฌ†๏ธ
      • Carp, CPANPLUS, File::Glob, File::Copy, File::Spec
  • Utility Changes ๐Ÿ”ง
  • Changes to Existing Documentation โœ๏ธ
  • Installation and Configuration Improvements ๐Ÿ—๏ธ
    • Configuration improvements โš™๏ธ
    • Compilation improvements ๐Ÿ”จ
  • Selected Bug Fixes โœจ
  • Platform Specific Notes ๐Ÿ“Œ
    • AIX
    • Windows
    • VMS
  • Acknowledgements ๐Ÿซถ
  • Reporting Bugs ๐Ÿ“ฎ
  • SEE ALSO ๐Ÿ“š

๐Ÿงš perl5121delta โ€” what is new for perl v5.12.1

  • DESCRIPTION
  • Incompatible Changes ๐Ÿ’€
  • Core Enhancements โœจ
  • Modules and Pragmata ๐ŸŽ€
    • Pragmata Changes ๐Ÿ”
    • Updated Modules โฌ†๏ธ
  • Changes to Existing Documentation โœ๏ธ
  • Testing ๐Ÿงช
    • Testing Improvements ๐Ÿ†•

Installation and Configuration Improvements

  • Configuration improvements

Bug Fixes

Platform Specific Notes

  • HP-UX
  • AIX
  • FreeBSD 7
  • VMS

Known Problems

Acknowledgements

Reporting Bugs

SEE ALSO


perl5120delta โ€” what is new for perl v5.12.0

okay bestie, deep breath, because the 5.12 glow-up is huge ๐Ÿ’–

DESCRIPTION

Core Enhancements

  • New package NAME VERSION syntax
  • The ... operator
  • Implicit strictures
  • Unicode improvements
  • Y2038 compliance
  • qr overloading
  • Pluggable keywords
  • APIs for more internals
  • Overridable function lookup
  • A proper interface for pluggable Method Resolution Orders
  • \N experimental regex escape
  • DTrace support
  • Support for configure_requires in CPAN module metadata
  • each, keys, values are now more flexible
  • when as a statement modifier
  • $, flexibility
  • // in when clauses
  • Enabling warnings from your shell environment
  • delete local
  • New support for Abstract namespace sockets
  • 32-bit limit on substr arguments removed

Potentially Incompatible Changes

โš ๏ธ read this bit, fr โ€” things you used to do might hit different now
  • Deprecations warn by default
  • Version number formats
  • @INC reorganization
  • REGEXPs are now first class
  • Switch statement changes
    • flip-flop operators, defined-or operator
  • Smart match changes
  • Other potentially incompatible changes

Deprecations

  • suidperl
  • Use of ":=" to mean an empty attribute list
  • UNIVERSAL->import()
  • Use of goto to jump into a construct
  • Custom character names in \N{name} that don't look like names
  • Deprecated Modules
    • Class::ISA
    • Pod::Plainer
    • Shell
    • Switch
  • Assignment to $[
  • Use of the attribute :locked on subroutines
  • Use of "locked" with the attributes pragma
  • Use of "unique" with the attributes pragma
  • Perl_pmflag
  • Numerous Perl 4-era libraries

Unicode overhaul

Modules and Pragmata

  • New Modules and Pragmata
    • autodie, Compress::Raw::Bzip2, overloading, parent, Parse::CPAN::Meta, VMS::DCLsym, VMS::Stdio, XS::APItest::KeywordRPN
  • Updated Pragmata
    • base, bignum, charnames, constant, diagnostics, feature, less, lib, mro, overload, threads, threads::shared, version, warnings
  • Updated Modules
    • Archive::Extract, Archive::Tar, Attribute::Handlers, AutoLoader, B::Concise, B::Debug, B::Deparse, B::Lint, CGI, Class::ISA, Compress::Raw::Zlib, CPAN, CPANPLUS, CPANPLUS::Dist::Build, Data::Dumper, DB_File, Devel::PPPort, Digest, Digest::MD5, Digest::SHA, Encode, Exporter, ExtUtils::CBuilder, ExtUtils::Command, ExtUtils::Constant, ExtUtils::Install, ExtUtils::MakeMaker, ExtUtils::Manifest, ExtUtils::ParseXS, File::Fetch, File::Path, File::Temp, Filter::Simple, Filter::Util::Call, Getopt::Long, IO, IO::Zlib, IPC::Cmd, IPC::SysV, Locale::Maketext, Locale::Maketext::Simple, Log::Message, Log::Message::Simple, Math::BigInt, Math::BigInt::FastCalc, Math::BigRat, Math::Complex, Memoize, MIME::Base64, Module::Build, Module::CoreList, Module::Load, Module::Load::Conditional, Module::Loaded, Module::Pluggable, Net::Ping, NEXT, Object::Accessor, Package::Constants, PerlIO, Pod::Parser, Pod::Perldoc, Pod::Plainer, Pod::Simple, Safe, SelfLoader, Storable, Switch, Sys::Syslog, Term::ANSIColor, Term::UI, Test, Test::Harness, Test::Simple, Text::Balanced, Text::ParseWords, Text::Soundex, Thread::Queue, Thread::Semaphore, Tie::RefHash, Time::HiRes, Time::Local, Time::Piece, Unicode::Collate, Unicode::Normalize, Win32, Win32API::File, XSLoader
  • Removed Modules and Pragmata
    • attrs, CPAN::API::HOWTO, CPAN::DeferedCode, CPANPLUS::inc, DCLsym, ExtUtils::MakeMaker::bytes, ExtUtils::MakeMaker::vmsish, Stdio, Test::Harness::Assert, Test::Harness::Iterator, Test::Harness::Point, Test::Harness::Results, Test::Harness::Straps, Test::Harness::Util, XSSymSet
  • Deprecated Modules and Pragmata

Documentation

  • New Documentation
  • Changes to Existing Documentation

Selected Performance Enhancements

Installation and Configuration Improvements

Internal Changes

Testing

  • Testing improvements
    • Parallel tests, Test harness flexibility, Test watchdog
  • New Tests

New or Changed Diagnostics

  • New Diagnostics
  • Changed Diagnostics
    • Illegal character in prototype for %s : %s, Prototype after '%c' for %s : %s

Utility Changes

Selected Bug Fixes

Platform Specific Changes

  • New Platforms
    • Haiku, MirOS BSD
  • Discontinued Platforms
    • Domain/OS, MiNT, Tenon MachTen
  • Updated Platforms
    • AIX, Cygwin, Darwin (Mac OS X), DragonFly BSD, FreeBSD, Irix, NetBSD, OpenVMS, Stratus VOS, Symbian, Windows

Known Problems

Errata

Acknowledgements

Reporting Bugs

SEE ALSO


perl5101delta โ€” what is new for perl v5.10.1

the lil maintenance baby of the 5.10 era ๐ŸŒธ still got a whole lot of receipts tho

DESCRIPTION

Incompatible Changes

  • Switch statement changes
    • flip-flop operators, defined-or operator
  • Smart match changes
  • Other incompatible changes

Core Enhancements

  • Unicode Character Database 5.1.0
  • A proper interface for pluggable Method Resolution Orders
  • The overloading pragma
  • Parallel tests
  • DTrace support
  • Support for configure_requires in CPAN module metadata

Modules and Pragmata

  • New Modules and Pragmata
    • autodie, Compress::Raw::Bzip2, parent, Parse::CPAN::Meta
  • Pragmata Changes
    • attributes, attrs, base, bigint, bignum, bigrat, charnames, constant, feature, fields, lib, open, overload, overloading, version
  • Updated Modules
    • Archive::Extract, Archive::Tar, Attribute::Handlers, AutoLoader, AutoSplit, B, B::Debug, B::Deparse, B::Lint, B::Xref, Benchmark, Carp, CGI, Compress::Zlib, CPAN, CPANPLUS, CPANPLUS::Dist::Build, Cwd, Data::Dumper, DB, DB_File, Devel::PPPort, Digest::MD5, Digest::SHA, DirHandle, Dumpvalue, DynaLoader, Encode, Errno, Exporter, ExtUtils::CBuilder, ExtUtils::Command, ExtUtils::Constant, ExtUtils::Embed, ExtUtils::Install, ExtUtils::MakeMaker, ExtUtils::Manifest, ExtUtils::ParseXS, Fatal, File::Basename, File::Compare, File::Copy, File::Fetch, File::Find, File::Path, File::Spec, File::stat, File::Temp, FileCache, FileHandle, Filter::Simple, Filter::Util::Call, FindBin, GDBM_File, Getopt::Long, Hash::Util::FieldHash, I18N::Collate, IO, IO::Compress::*, IO::Dir, IO::Handle, IO::Socket, IO::Zlib, IPC::Cmd, IPC::Open3, IPC::SysV, lib, List::Util, Locale::MakeText, Log::Message, Math::BigFloat, Math::BigInt, Math::BigInt::FastCalc, Math::BigRat, Math::Complex, Math::Trig, Memoize, Module::Build, Module::CoreList, Module::Load, Module::Load::Conditional, Module::Loaded, Module::Pluggable, NDBM_File, Net::Ping, NEXT, Object::Accessor, OS2::REXX, Package::Constants, PerlIO, PerlIO::via, Pod::Man, Pod::Parser, Pod::Simple, Pod::Text, POSIX, Safe, Scalar::Util, SelectSaver, SelfLoader, Socket, Storable, Switch, Symbol, Sys::Syslog, Term::ANSIColor, Term::ReadLine, Term::UI, Test::Harness, Test::Simple, Text::ParseWords, Text::Tabs, Text::Wrap, Thread::Queue, Thread::Semaphore, threads, threads::shared, Tie::RefHash, Tie::StdHandle, Time::HiRes, Time::Local, Time::Piece, Unicode::Normalize, Unicode::UCD, UNIVERSAL, Win32, Win32API::File, XSLoader

Utility Changes

  • h2ph, h2xs, perl5db.pl, perlthanks

New Documentation

  • perlhaiku, perlmroapi, perlperf, perlrepository, perlthanks

Changes to Existing Documentation

Performance Enhancements

Installation and Configuration Improvements

  • ext/ reorganisation
  • Configuration improvements
  • Compilation improvements
  • Platform Specific Changes
    • AIX, Cygwin, FreeBSD, Irix, Haiku, MirOS BSD, NetBSD, Stratus VOS, Symbian, Win32, VMS

Selected Bug Fixes

New or Changed Diagnostics

  • panic: sv_chop %s, Can't locate package %s for the parents of %s, v-string in use/require is non-portable, Deep recursion on subroutine "%s"

Changed Internals

  • SVf_UTF8, SVs_TEMP

New Tests

  • t/comp/retainedlines.t, t/io/perlio_fail.t, t/io/perlio_leaks.t, t/io/perlio_open.t, t/io/perlio.t, t/io/pvbm.t, t/mro/package_aliases.t, t/op/dbm.t, t/op/index_thr.t, t/op/pat_thr.t, t/op/qr_gc.t, t/op/reg_email_thr.t, t/op/regexp_qr_embed_thr.t, t/op/regexp_unicode_prop.t, t/op/regexp_unicode_prop_thr.t, t/op/reg_nc_tie.t, t/op/reg_posixcc.t, t/op/re.t, t/op/setpgrpstack.t, t/op/substr_thr.t, t/op/upgrade.t, t/uni/lex_utf8.t, t/uni/tie.t

Known Problems

Deprecations

Acknowledgements

Reporting Bugs

SEE ALSO


perl5100delta โ€” what is new for perl 5.10.0

the origin story ๐Ÿซถ the era that gave us say energy before we even knew we needed it

DESCRIPTION

Core Enhancements

  • The feature pragma
  • New -E command-line switch
  • Defined-or operator
  • Switch and Smart Match operator
  • Regular expressions
    • Recursive Patterns, Named Capture Buffers, Possessive Quantifiers, Backtracking control verbs, Relative backreferences, \K escape, Vertical and horizontal whitespace, and linebreak, Optional pre-match and post-match captures with the /p flag
  • say()
  • Lexical $_
  • The "_" prototype
  • UNITCHECK blocks
  • New Pragma, "mro"
  • readdir() may return a "short filename" on Windows
  • readpipe() is now overridable
  • Default argument for readline()
  • state() variables
  • Stacked filetest operators
  • UNIVERSAL::DOES()
  • Formats
  • Byte-order modifiers for pack() and unpack()
  • "no VERSION"
  • "chdir", "chmod" and "chown" on filehandles
  • OS groups
  • Recursive sort subs
  • Exceptions in constant folding
  • Source filters in @INC
  • New internal variables ๐Ÿซถ
    • "${^RE_DEBUG_FLAGS}", "${^CHILD_ERROR_NATIVE}", "${^RE_TRIE_MAXBUF}", "${^WIN32_SLOPPY_STAT}"

  • Miscellaneous โ€” the catch-all bucket, we love a grab bag ๐ŸŽ€
    • UCD 5.0.0
    • MAD
    • kill() on Windows

๐Ÿ’ฅ Incompatible Changes ๐Ÿ’ฅ

bestie this is the part where things you used to do justโ€ฆ don't work anymore. read it, fr fr.

  • Packing and UTF-8 strings
  • Byte/character count feature in unpack()
  • The $* and $# variables have been removed
  • substr() lvalues are no longer fixed-length
  • Parsing of "-f _"
  • ":unique"
  • Effect of pragmas in eval
  • chdir FOO
  • Handling of .pmc files
  • $^V is now a "version" object instead of a v-string
  • @- and @+ in patterns
  • $AUTOLOAD can now be tainted
  • Tainting and printf
  • undef and signal handlers
  • strictures and dereferencing in defined()
  • "(?p{})" has been removed
  • Pseudo-hashes have been removed โ€” RIP bestie, you had a good run ๐Ÿ’€
  • Removal of the bytecode compiler and of perlcc
  • Removal of the JPL
  • Recursive inheritance detected earlier
  • warnings::enabled and warnings::warnif changed to favor users of modules
  • Removal of "package;" ("package" without arguments)

๐Ÿงฉ Modules and Pragmata ๐Ÿงฉ

  • Upgrading individual core modules
  • Pragmata Changes โœจ
    • "feature", "mro", Scoping of the "sort" pragma, Scoping of "bignum", "bigint", "bigrat", "base", "strict" and "warnings", "version", "warnings", "less"
  • New modules
  • Selected Changes to Core Modules ๐Ÿ’…
    • "Attribute::Handlers", "B::Lint", "B", "Thread"

๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

  • perl -d, ptar, ptardiff, shasum, corelist, h2ph and h2xs, perlivp, find2perl, config_data, cpanp, cpan2dist, pod2html

๐Ÿ“š New Documentation ๐Ÿ“š

(no sub-entries here, it's justโ€ฆ new docs. iconic.)

โšก Performance Enhancements โšก

  • In-place sorting
  • Lexical array access
  • XS-assisted SWASHGET
  • Constant subroutines
  • "PERL_DONT_CREATE_GVSV"
  • Weak references are cheaper
  • sort() enhancements
  • Memory optimisations
  • UTF-8 cache optimisation
  • Sloppy stat on Windows
  • Regular expressions optimisations ๐ŸŒˆ
    • Engine de-recursivised, Single char char-classes treated as literals, Trie optimisation of literal string alternations, Aho-Corasick start-point optimisation

๐Ÿ—๏ธ Installation and Configuration Improvements ๐Ÿ—๏ธ

  • Configuration improvements ๐ŸŽ€
    • "-Dusesitecustomize", Relocatable installations, strlcat() and strlcpy(), "d_pseudofork" and "d_printf_format_null", Configure help
  • Compilation improvements โœจ
    • Parallel build, Borland's compilers support, Static build on Windows, ppport.h files, C++ compatibility, Support for Microsoft 64-bit compiler, Visual C++, Win32 builds
  • Installation improvements ๐Ÿซถ
    • Module auxiliary files
  • New Or Improved Platforms

๐Ÿ› Selected Bug Fixes ๐Ÿ›

  • strictures in regexp-eval blocks, Calling CORE::require(), Subscripts of slices, "no warnings 'category'" works correctly with -w, threads improvements, chr() and negative values, PERL5SHELL and tainting, Using *FILE{IO}, Overloading and reblessing, Overloading and UTF-8, eval memory leaks fixed, Random device on Windows, PERLIO_DEBUG, PerlIO::scalar and read-only scalars, study() and UTF-8, Critical signals, @INC-hook fix, "-t" switch fix, Duping UTF-8 filehandles, Localisation of hash elements

๐Ÿšจ New or Changed Diagnostics ๐Ÿšจ

  • Use of uninitialized value, Deprecated use of my() in false conditional, !=~ should be !~, Newline in left-justified string, Too late for "-T" option, "%s" variable %s masks earlier declaration, readdir()/closedir()/etc. attempted on invalid dirhandle, Opening dirhandle/filehandle %s also as a file/directory, Use of -P is deprecated, v-string in use/require is non-portable, perl -V

๐Ÿ”ง Changed Internals ๐Ÿ”ง

  • Reordering of SVt_* constants
  • Elimination of SVt_PVBM
  • New type SVt_BIND
  • Removal of CPP symbols
  • Less space is used by ops
  • New parser
  • Use of "const"
  • Mathoms
  • "AvFLAGS" has been removed
  • "av_*" changes
  • $^H and %^H
  • B:: modules inheritance changed
  • Anonymous hash and array constructors

๐Ÿ˜ญ Known Problems ๐Ÿ˜ญ

  • UTF-8 problems โ€” the eternal struggle, ngl
  • Platform Specific Problems
  • Reporting Bugs
  • SEE ALSO

๐Ÿฆ‹ perl589delta - what is new for perl v5.8.9 ๐Ÿฆ‹

DESCRIPTION

Notice

Incompatible Changes

โœจ Core Enhancements โœจ

  • Unicode Character Database 5.1.0
  • stat and -X on directory handles
  • Source filters in @INC
  • Exceptions in constant folding
  • "no VERSION"
  • Improved internal UTF-8 caching code
  • Runtime relocatable installations
  • New internal variables ๐ŸŽ€
    • "${^CHILD_ERROR_NATIVE}", "${^UTF8CACHE}"
  • "readpipe" is now overridable
  • simple exception handling macros
  • -D option enhancements
  • XS-assisted SWASHGET
  • Constant subroutines

New Platforms

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • New Modules
  • Updated Modules

๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

  • debugger upgraded to version 1.31
  • perlthanks
  • perlbug
  • h2xs
  • h2ph

๐Ÿ“š New Documentation ๐Ÿ“š

Changes to Existing Documentation

โšก Performance Enhancements โšก

๐Ÿ—๏ธ Installation and Configuration Improvements ๐Ÿ—๏ธ

  • Relocatable installations
  • Configuration improvements
  • Compilation improvements
  • Installation improvements
  • Platform Specific Changes

๐Ÿ› Selected Bug Fixes ๐Ÿ›

  • Unicode
  • PerlIO
  • Magic
  • Reblessing overloaded objects now works
  • "strict" now propagates correctly into string evals
  • Other fixes
  • Platform Specific Fixes
  • Smaller fixes

๐Ÿšจ New or Changed Diagnostics ๐Ÿšจ

  • panic: sv_chop %s
  • Maximal count of pending signals (%s) exceeded
  • panic: attempt to call %s in %s
  • FETCHSIZE returned a negative value
  • Can't upgrade %s (%d) to %d
  • %s argument is not a HASH or ARRAY element or a subroutine
  • Cannot make the non-overridable builtin %s fatal
  • Unrecognized character '%s' in column %d
  • Offset outside string
  • Invalid escape in the specified encoding in regexp; marked by <-- HERE in m/%s/
  • Your machine doesn't support dump/undump

๐Ÿ”ง Changed Internals ๐Ÿ”ง

  • Macro cleanups

๐Ÿงช New Tests ๐Ÿงช

  • ext/DynaLoader/t/DynaLoader.t, t/comp/fold.t, t/io/pvbm.t, t/lib/proxy_constant_subs.t, t/op/attrhand.t, t/op/dbm.t, t/op/inccode-tie.t, t/op/incfilter.t, t/op/kill0.t, t/op/qrstack.t, t/op/qr.t, t/op/regexp_qr_embed.t, t/op/regexp_qr.t, t/op/rxcode.t, t/op/studytied.t, t/op/substT.t, t/op/symbolcache.t, t/op/upgrade.t, t/mro/package_aliases.t, t/pod/twice.t, t/run/cloexec.t, t/uni/cache.t, t/uni/chr.t, t/uni/greek.t, t/uni/latin2.t, t/uni/overload.t, t/uni/tie.t

๐Ÿ˜ญ Known Problems ๐Ÿ˜ญ

Platform Specific Notes

  • Win32
  • OS/2
  • VMS

Obituary

Acknowledgements

Reporting Bugs

SEE ALSO


๐ŸŒธ perl588delta - what is new for perl v5.8.8 ๐ŸŒธ

DESCRIPTION

Incompatible Changes

Core Enhancements

Modules and Pragmata

๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

  • "h2xs" enhancements
  • "perlivp" enhancements

๐Ÿ“š New Documentation ๐Ÿ“š

Performance Enhancements

Installation and Configuration Improvements

๐Ÿ› Selected Bug Fixes ๐Ÿ›

  • no warnings 'category' works correctly with -w
  • Remove over-optimisation
  • sprintf() fixes
  • Debugger and Unicode slowdown
  • Smaller fixes

๐Ÿšจ New or Changed Diagnostics ๐Ÿšจ

  • Attempt to set length of freed array
  • Non-string passed as bitmask
  • Search pattern not terminated or ternary operator parsed as search pattern

Changed Internals

Platform Specific Problems

Reporting Bugs

SEE ALSO


๐Ÿ“ perl587delta - what is new for perl v5.8.7 ๐Ÿ“

DESCRIPTION

Incompatible Changes

โœจ Core Enhancements โœจ

  • Unicode Character Database 4.1.0
  • suidperl less insecure
  • Optional site customization script
  • "Config.pm" is now much smaller

Modules and Pragmata

๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

  • find2perl enhancements

Performance Enhancements

Installation and Configuration Improvements

Selected Bug Fixes

New or Changed Diagnostics

Changed Internals

Known Problems

Platform Specific Problems

Reporting Bugs

SEE ALSO


๐Ÿงš perl586delta - what is new for perl v5.8.6 ๐Ÿงš

DESCRIPTION

Incompatible Changes

Core Enhancements

Modules and Pragmata

Utility Changes

Performance Enhancements

Selected Bug Fixes

New or Changed Diagnostics

Changed Internals

New Tests

Reporting Bugs

SEE ALSO


๐Ÿ‘‘ perl585delta - what is new for perl v5.8.5 ๐Ÿ‘‘

DESCRIPTION

Incompatible Changes

Core Enhancements

Modules and Pragmata

๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

  • Perl's debugger
  • h2ph

Installation and Configuration Improvements

Selected Bug Fixes

New or Changed Diagnostics

Changed Internals

Known Problems

Platform Specific Problems

Reporting Bugs

SEE ALSO


๐ŸŽ€ perl584delta - what is new for perl v5.8.4 ๐ŸŽ€

DESCRIPTION

Incompatible Changes

โœจ Core Enhancements โœจ

  • Malloc wrapping
  • Unicode Character Database 4.0.1
  • suidperl less insecure
  • format

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Updated modules ๐Ÿ’…
    • Attribute::Handlers, B, Benchmark, CGI, Carp, Cwd, Exporter, File::Find, IO, IPC::Open3, Local::Maketext, Math::BigFloat, Math::BigInt, Math::BigRat, MIME::Base64, ODBM_File, POSIX, Shell, Socket, Storable, Switch, Sys::Syslog, Term::ANSIColor, Time::HiRes, Unicode::UCD, Win32, base, open, threads, utf8

Performance Enhancements

Utility Changes

Installation and Configuration Improvements

Selected Bug Fixes

New or Changed Diagnostics

Changed Internals

Future Directions

Platform Specific Problems

Reporting Bugs

SEE ALSO

Okay so these next ones are the โœจdeltaโœจ pages โ€” the "what even changed" gossip columns for each Perl release. Think of them as the group chat receipts for every version. Let's go, no cap ๐Ÿ’–


perl583delta โ€” what is new for perl v5.8.3 ๐Ÿ’…

The tea on v5.8.3, served fresh:

  • DESCRIPTION
  • Incompatible Changes
  • Core Enhancements
  • Modules and Pragmata
    • CGI, Cwd, Digest, Digest::MD5, Encode, File::Spec, FindBin, List::Util, Math::BigInt, PodParser, Pod::Perldoc, POSIX, Unicode::Collate, Unicode::Normalize, Test::Harness, threads::shared
  • Utility Changes
  • New Documentation
  • Installation and Configuration Improvements
  • Selected Bug Fixes
  • New or Changed Diagnostics
  • Changed Internals
  • Configuration and Building
  • Platform Specific Problems
  • Known Problems
  • Future Directions
  • Obituary
  • Reporting Bugs
  • SEE ALSO

perl582delta โ€” what is new for perl v5.8.2 ๐Ÿฆ‹

v5.8.2's receipts, bestie:

  • DESCRIPTION
  • Incompatible Changes
  • Core Enhancements
    • Hash Randomisation
    • Threading
  • Modules and Pragmata
    • Updated Modules And Pragmata
      • Devel::PPPort, Digest::MD5, I18N::LangTags, libnet, MIME::Base64, Pod::Perldoc, strict, Tie::Hash, Time::HiRes, Unicode::Collate, Unicode::Normalize, UNIVERSAL
  • Selected Bug Fixes
  • Changed Internals
  • Platform Specific Problems
  • Future Directions
  • Reporting Bugs
  • SEE ALSO

perl581delta โ€” what is new for perl v5.8.1 ๐ŸŒธ

The v5.8.1 rundown, and it's giving thorough:

  • DESCRIPTION
  • Incompatible Changes
    • Hash Randomisation
    • UTF-8 On Filehandles No Longer Activated By Locale
    • Single-number v-strings are no longer v-strings before "=>"
    • (Win32) The -C Switch Has Been Repurposed
    • (Win32) The /d Switch Of cmd.exe
  • Core Enhancements
    • UTF-8 no longer default under UTF-8 locales
    • Unsafe signals again available
    • Tied Arrays with Negative Array Indices
    • local ${$x}
    • Unicode Character Database 4.0.0
    • Deprecation Warnings
    • Miscellaneous Enhancements
  • Modules and Pragmata
    • Updated Modules And Pragmata
      • base, B::Bytecode, B::Concise, B::Deparse, Benchmark, ByteLoader, bytes, CGI, charnames, CPAN, Data::Dumper, DB_File, Devel::PPPort, Digest::MD5, Encode, fields, libnet, Math::BigInt, MIME::Base64, NEXT, Net::Ping, PerlIO::scalar, podlators, Pod::LaTeX, PodParsers, Pod::Perldoc, Scalar::Util, Storable, strict, Term::ANSIcolor, Test::Harness, Test::More, Test::Simple, Text::Balanced, Time::HiRes, threads, threads::shared, Unicode::Collate, Unicode::Normalize, Win32::GetFolderPath, Win32::GetOSVersion
  • Utility Changes
  • New Documentation
  • Installation and Configuration Improvements
    • Platform-specific enhancements
  • Selected Bug Fixes
    • Closures, eval and lexicals
    • Generic fixes
    • Platform-specific fixes
  • New or Changed Diagnostics
    • Changed "A thread exited while %d threads were running"
    • Removed "Attempt to clear a restricted hash"
    • New "Illegal declaration of anonymous subroutine"
    • Changed "Invalid range "%s" in transliteration operator"
    • New "Missing control char name in \c"
    • New "Newline in left-justified string for %s"
    • New "Possible precedence problem on bitwise %c operator"
    • New "Pseudo-hashes are deprecated"
    • New "read() on %s filehandle %s"
    • New "5.005 threads are deprecated"
    • New "Tied variable freed while still in use"
    • New "To%s: illegal mapping '%s'"
    • New "Use of freed value in iteration"
  • Changed Internals
  • New Tests
  • Known Problems
    • Tied hashes in scalar context
    • Net::Ping 450_service and 510_ping_udp failures
    • B::C
  • Platform Specific Problems
    • EBCDIC Platforms
    • Cygwin 1.5 problems
    • HP-UX: HP cc warnings about sendfile and sendpath
    • IRIX: t/uni/tr_7jis.t falsely failing
    • Mac OS X: no usemymalloc
    • Tru64: No threaded builds with GNU cc (gcc)
    • Win32: sysopen, sysread, syswrite
  • Future Directions
  • Reporting Bugs
  • SEE ALSO

perl58delta โ€” what is new for perl v5.8.0 ๐Ÿ‘‘

The BIG one. v5.8.0 said "main character energy" and meant it:

  • DESCRIPTION
  • Highlights In 5.8.0
  • Incompatible Changes
    • Binary Incompatibility
    • 64-bit platforms and malloc
    • AIX Dynaloading
    • Attributes for "my" variables now handled at run-time
    • Socket Extension Dynamic in VMS
    • IEEE-format Floating Point Default on OpenVMS Alpha
    • New Unicode Semantics (no more "use utf8", almost)
    • New Unicode Properties
    • REF(...) Instead Of SCALAR(...)
    • pack/unpack D/F recycled
    • glob() now returns filenames in alphabetical order
    • Deprecations
  • Core Enhancements
    • Unicode Overhaul
    • PerlIO is Now The Default
    • ithreads
    • Restricted Hashes
    • Safe Signals
    • Understanding of Numbers
    • Arrays now always interpolate into double-quoted strings [561]
    • Miscellaneous Changes
  • Modules and Pragmata
    • New Modules and Pragmata
    • Updated And Improved Modules and Pragmata
  • Utility Changes
  • New Documentation
  • Performance Enhancements
  • Installation and Configuration Improvements
    • Generic Improvements
    • New Or Improved Platforms
  • Selected Bug Fixes
    • Platform Specific Changes and Fixes
  • New or Changed Diagnostics
  • Changed Internals
  • Security Vulnerability Closed [561]
  • New Tests
  • Known Problems
    • The Compiler Suite Is Still Very Experimental
    • Localising Tied Arrays and Hashes Is Broken
    • Building Extensions Can Fail Because Of Largefiles
    • Modifying $_ Inside for(..)
    • mod_perl 1.26 Doesn't Build With Threaded Perl
    • lib/ftmp-security tests warn 'system possibly insecure'
    • libwww-perl (LWP) fails base/date #51
    • PDL failing some tests
    • Perl_get_sv
    • Self-tying Problems
    • ext/threads/t/libc
    • Failure of Thread (5.005-style) tests
    • Timing problems
    • Tied/Magical Array/Hash Elements Do Not Autovivify
    • Unicode in package/class and subroutine names does not work
  • Platform Specific Problems
    • AIX
    • Alpha systems with old gccs fail several tests
    • AmigaOS
    • BeOS
    • Cygwin "unable to remap"
    • Cygwin ndbm tests fail on FAT
    • DJGPP Failures
    • FreeBSD built with ithreads coredumps reading large directories
    • FreeBSD Failing locale Test 117 For ISO 8859-15 Locales
    • IRIX fails ext/List/Util/t/shuffle.t or Digest::MD5
    • HP-UX lib/posix Subtest 9 Fails When LP64-Configured
    • Linux with glibc 2.2.5 fails t/op/int subtest #6 with -Duse64bitint
    • Linux With Sfio Fails op/misc Test 48
    • Mac OS X
    • Mac OS X dyld undefined symbols
    • OS/2 Test Failures
    • op/sprintf tests 91, 129, and 130
    • SCO
    • Solaris 2.5
    • Solaris x86 Fails Tests With -Duse64bitint
    • SUPER-UX (NEC SX)
    • Term::ReadKey not working on Win32
    • UNICOS/mk
    • UTS
    • VOS (Stratus)
    • VMS
    • Win32
    • XML::Parser not working
    • z/OS (OS/390)
    • Unicode Support on EBCDIC Still Spotty
    • Seen In Perl 5.7 But Gone Now
  • Reporting Bugs
  • SEE ALSO
  • HISTORY

perl561delta โ€” what's new for perl v5.6.1 ๐ŸŽ€

v5.6.1, aka the glow-up between 5.6.0 and 5.6.1. Obsessed:

  • DESCRIPTION
  • Summary of changes between 5.6.0 and 5.6.1
    • Security Issues
    • Core bug fixes
      • UNIVERSAL::isa(), Memory leaks, Numeric conversions, qw(a\\b), caller(), Bugs in regular expressions, "slurp" mode, Autovivification of symbolic references to special variables, Lexical warnings, Spurious warnings and errors, glob(), Tainting, sort(), #line directives, Subroutine prototypes, map(), Debugger, PERL5OPT, chop(), Unicode support, 64-bit support, Compiler, Lvalue subroutines, IO::Socket, File::Find, xsubpp, "no Module;", Tests
    • Core features
    • Configuration issues
    • Documentation
    • Bundled modules
      • B::Concise, File::Temp, Pod::LaTeX, Pod::Text::Overstrike, CGI, CPAN, Class::Struct, DB_File, Devel::Peek, File::Find, Getopt::Long, IO::Poll, IPC::Open3, Math::BigFloat, Math::Complex, Net::Ping, Opcode, Pod::Parser, Pod::Text, SDBM_File, Sys::Syslog, Tie::RefHash, Tie::SubstrHash
    • Platform-specific improvements
      • NCR MP-RAS, NonStop-UX
  • Core Enhancements
    • Interpreter cloning, threads, and concurrency
    • Lexically scoped warning categories
    • Unicode and UTF-8 support
    • Support for interpolating named characters
    • "our" declarations
    • Support for strings represented as a vector of ordinals
    • Improved Perl version numbering system
    • New syntax for declaring subroutine attributes
    • File and directory handles can be autovivified
    • open() with more than two arguments
    • 64-bit support
    • Large file support
    • Long doubles
    • "more bits"
    • Enhanced support for sort() subroutines
    • "sort $coderef @foo" allowed
    • File globbing implemented internally
    • Support for CHECK blocks
    • POSIX character class syntax [: :] supported
    • Better pseudo-random number generator
    • Improved "qw//" operator
    • Better worst-case behavior of hashes
    • pack() format 'Z' supported
    • pack() format modifier '!' supported
    • pack() and unpack() support counted strings
    • Comments in pack() templates
    • Weak references
    • Binary numbers supported
    • Lvalue subroutines
    • Some arrows may be omitted in calls through references
    • Boolean assignment operators are legal lvalues
    • exists() is supported on subroutine names
    • exists() and delete() are supported on array elements
    • Pseudo-hashes work better
    • Automatic flushing of output buffers
    • Better diagnostics on meaningless filehandle operations
    • Where possible, buffered data discarded from duped input filehandle
    • eof() has the same old magic as <>
    • binmode() can be used to set :crlf and :raw modes
    • "-T" filetest recognizes UTF-8 encoded files as "text"
    • system(), backticks and pipe open now reflect exec() failure
    • Improved diagnostics
    • Diagnostics follow STDERR
    • More consistent close-on-exec behavior
    • syswrite() ease-of-use
    • Better syntax checks on parenthesized unary operators
    • Bit operators support full native integer width
    • Improved security features
    • More functional bareword prototype (*)
    • "require" and "do" may be overridden
    • $^X variables may now have names longer than one character
    • New variable $^C reflects "-c" switch
    • New variable $^V contains Perl version as a string
    • Optional Y2K warnings
    • Arrays now always interpolate into double-quoted strings
    • @- and @+ provide starting/ending offsets of regex submatches

๐ŸŒธ Modules and Pragmata ๐ŸŒธ

bestie, this is the glow-up era of perl and it brought FRIENDS ๐Ÿซถ every single one of these is a module or pragma that got the spotlight:

๐Ÿ’– Modules ๐Ÿ’–

  • attributes
  • B
  • Benchmark
  • ByteLoader
  • constant
  • charnames
  • Data::Dumper
  • DB
  • DB_File
  • Devel::DProf
  • Devel::Peek
  • Dumpvalue
  • DynaLoader
  • English
  • Env
  • Fcntl
  • File::Compare
  • File::Find
  • File::Glob
  • File::Spec
  • File::Spec::Functions
  • Getopt::Long
  • IO
  • JPL
  • lib
  • Math::BigInt
  • Math::Complex
  • Math::Trig
  • Pod::Parser
  • Pod::InputObjects
  • Pod::Checker
  • podchecker
  • Pod::ParseUtils
  • Pod::Find
  • Pod::Select
  • podselect
  • Pod::Usage
  • pod2usage
  • Pod::Text and Pod::Man
  • SDBM_File
  • Sys::Syslog
  • Sys::Hostname
  • Term::ANSIColor
  • Time::Local
  • Win32
  • XSLoader
  • DBM Filters

๐Ÿ’– Pragmata ๐Ÿ’–

(that's it bestie, the heading is the whole vibe ๐ŸŽ€)


๐Ÿ› ๏ธ Utility Changes ๐Ÿ› ๏ธ

the little tools got a makeover, no cap โœจ

dprofpp

find2perl

h2xs

perlcc

perldoc

The Perl Debugger


๐Ÿ“š Improved Documentation ๐Ÿ“š

the docs ate and left no crumbs ๐Ÿ’… here's every .pod that got some love:

  • perlapi.pod
  • perlboot.pod
  • perlcompile.pod
  • perldbmfilter.pod
  • perldebug.pod
  • perldebguts.pod
  • perlfork.pod
  • perlfilter.pod
  • perlhack.pod
  • perlintern.pod
  • perllexwarn.pod
  • perlnumber.pod
  • perlopentut.pod
  • perlreftut.pod
  • perltootc.pod
  • perltodo.pod
  • perlunicode.pod

โšก Performance enhancements โšก

she's faster now and she knows it ๐Ÿ˜Œ๐Ÿ”ฅ

  • Simple sort() using { $a <=> $b } and the like are optimized
  • Optimized assignments to lexical variables
  • Faster subroutine calls
  • delete(), each(), values() and hash iteration are faster

๐ŸŽ€ Installation and Configuration Improvements ๐ŸŽ€

the setup experience is giving organized ๐ŸŒˆ

  • -Dusethreads means something different
  • New Configure flags
  • Threadedness and 64-bitness now more daring
  • Long Doubles
  • -Dusemorebits
  • -Duselargefiles
  • installusrbinperl
  • SOCKS support
  • "-A" flag
  • Enhanced Installation Directories
  • gcc automatically tried if 'cc' does not seem to be working

๐ŸŒ Platform specific changes ๐ŸŒ

perl said "I contain multitudes" fr fr ๐Ÿ’œ

  • Supported platforms
  • DOS
  • OS390 (OpenEdition MVS)
  • VMS
  • Win32

๐Ÿ› Significant bug fixes ๐Ÿ›

not me being obsessed with all these little gremlins getting squashed ๐Ÿฆ‹

  • <HANDLE> on empty files
  • "eval '...'" improvements
  • All compilation errors are true errors
  • Implicitly closed filehandles are safer
  • Behavior of list slices is more consistent
  • "(\$)" prototype and $foo{a}
  • "goto &sub" and AUTOLOAD
  • "-bareword" allowed under "use integer"
  • Failures in DESTROY()
  • Locale bugs fixed
  • Memory leaks
  • Spurious subroutine stubs after failed subroutine calls
  • Taint failures under "-U"
  • END blocks and the "-c" switch
  • Potential to leak DATA filehandles

๐Ÿ’€ New or Changed Diagnostics ๐Ÿ’€

okay so this is the LONG one bestie, brace yourself, every single new or changed message is right here and I'm not skipping a single one ๐Ÿ˜ญ

  • "%s" variable %s masks earlier declaration in same %s
  • "my sub" not yet implemented
  • "our" variable %s redeclared
  • '!' allowed only after types %s
  • / cannot take a count
  • / must be followed by a, A or Z
  • / must be followed by a*, A* or Z*
  • / must follow a numeric type
  • /%s/: Unrecognized escape \\%c passed through
  • /%s/: Unrecognized escape \\%c in character class passed through
  • /%s/ should probably be written as "%s"
  • %s() called too early to check prototype
  • %s argument is not a HASH or ARRAY element
  • %s argument is not a HASH or ARRAY element or slice
  • %s argument is not a subroutine name
  • %s package attribute may clash with future reserved word: %s
  • (in cleanup) %s
  • <> should be quotes
  • Attempt to join self
  • Bad evalled substitution pattern
  • Bad realloc() ignored
  • Bareword found in conditional
  • Binary number > 0b11111111111111111111111111111111 non-portable
  • Bit vector size > 32 non-portable
  • Buffer overflow in prime_env_iter: %s
  • Can't check filesystem of script "%s"
  • Can't declare class for non-scalar %s in "%s"
  • Can't declare %s in "%s"
  • Can't ignore signal CHLD, forcing to default
  • Can't modify non-lvalue subroutine call
  • Can't read CRTL environ
  • Can't remove %s: %s, skipping file
  • Can't return %s from lvalue subroutine
  • Can't weaken a nonreference
  • Character class [:%s:] unknown
  • Character class syntax [%s] belongs inside character classes
  • Constant is not %s reference
  • constant(%s): %s
  • CORE::%s is not a keyword
  • defined(@array) is deprecated
  • defined(%hash) is deprecated
  • Did not produce a valid header
  • (Did you mean "local" instead of "our"?)
  • Document contains no data
  • entering effective %s failed
  • false [] range "%s" in regexp
  • Filehandle %s opened only for output
  • flock() on closed filehandle %s
  • Global symbol "%s" requires explicit package name
  • Hexadecimal number > 0xffffffff non-portable
  • Ill-formed CRTL environ value "%s"
  • Ill-formed message in prime_env_iter: |%s|
  • Illegal binary digit %s
  • Illegal binary digit %s ignored
  • Illegal number of bits in vec
  • Integer overflow in %s number
  • Invalid %s attribute: %s
  • Invalid %s attributes: %s
  • invalid [] range "%s" in regexp
  • Invalid separator character %s in attribute list
  • Invalid separator character %s in subroutine attribute list
  • leaving effective %s failed
  • Lvalue subs returning %s not implemented yet
  • Method %s not permitted
  • Missing %sbrace%s on \N{}
  • Missing command in piped open
  • Missing name in "my sub"
  • No %s specified for -%c
  • No package name allowed for variable %s in "our"
  • No space allowed after -%c
  • no UTC offset information; assuming local time is UTC
  • Octal number > 037777777777 non-portable
  • panic: del_backref
  • panic: kid popen errno read
  • panic: magic_killbackrefs
  • Parentheses missing around "%s" list
  • Possible unintended interpolation of %s in string
  • Possible Y2K bug: %s
  • pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead
  • Premature end of script headers
  • Repeat count in pack overflows
  • Repeat count in unpack overflows
  • realloc() of freed memory ignored
  • Reference is already weak
  • setpgrp can't take arguments
  • Strange *+?{} on zero-length expression
  • switching effective %s is not implemented
  • This Perl can't reset CRTL environ elements (%s)
  • This Perl can't set CRTL environ elements (%s=%s)
  • Too late to run %s block
  • Unknown open() mode '%s'
  • Unknown process %x sent message to prime_env_iter: %s
  • Unrecognized escape \\%c passed through
  • Unterminated attribute parameter in attribute list
  • Unterminated attribute list
  • Unterminated attribute parameter in subroutine attribute list
  • Unterminated subroutine attribute list
  • Value of CLI symbol "%s" too long
  • Version number must be a constant number
phew. you made it. hydration check, bestie ๐Ÿ“

๐Ÿงช New tests ๐Ÿงช

(more tests, more slay, the heading is the whole thing โœจ)


๐Ÿšง Incompatible Changes ๐Ÿšง

heads up bestie, some stuff works DIFFERENT now, this is not a drill ๐Ÿ’…

Perl Source Incompatibilities

  • CHECK is a new keyword
  • Treatment of list slices of undef has changed
  • Format of $English::PERL_VERSION is different
  • Literals of the form 1.2.3 parse differently
  • Possibly changed pseudo-random number generator
  • Hashing function for hash keys has changed
  • "undef" fails on read only values
  • Close-on-exec bit may be set on pipe and socket handles
  • Writing "$$1" to mean "${$}1" is unsupported
  • delete(), each(), values() and "\(%h)"
  • vec(EXPR,OFFSET,BITS) enforces powers-of-two BITS
  • Text of some diagnostic output has changed
  • "%@" has been removed
  • Parenthesized not() behaves like a list operator
  • Semantics of bareword prototype "(*)" have changed
  • Semantics of bit operators may have changed on 64-bit platforms
  • More builtins taint their results

C Source Incompatibilities

  • "PERL_POLLUTE"
  • "PERL_IMPLICIT_CONTEXT"
  • "PERL_POLLUTE_MALLOC"

Compatible C Source API Changes

  • "PATCHLEVEL" is now "PERL_VERSION"

Binary Incompatibilities

(that's the whole section, no entries, just the vibe ๐Ÿ˜Œ)


โš ๏ธ Known Problems โš ๏ธ

ngl some things are still lowkey cursed, we're being honest about it ๐Ÿ™ˆ

  • Localizing a tied hash element may leak memory
  • Known test failures
  • EBCDIC platforms not fully supported
  • UNICOS/mk CC failures during Configure run
  • Arrow operator and arrays

๐Ÿงš Experimental features ๐Ÿงš

these are the "we're still figuring it out" girlies โœจ:

  • Threads
  • Unicode
  • 64-bit support
  • Lvalue subroutines
  • Weak references
  • The pseudo-hash data type
  • The Compiler suite
  • Internal implementation of file globbing
  • The DB module
  • The regular expression code constructs:

๐Ÿ—‘๏ธ Obsolete Diagnostics ๐Ÿ—‘๏ธ

old messages that got the boot ๐Ÿ‘‹ iconic of them tbh

  • Character class syntax [: :] is reserved for future extensions
  • Ill-formed logical name |%s| in prime_env_iter
  • In string, @%s now must be written as \@%s
  • Probable precedence problem on %s
  • regexp too big
  • Use of "$$<digit>" to mean "${$}<digit>" is deprecated

๐Ÿž Reporting Bugs ๐Ÿž

(found a bug? the heading says it all, bestie ๐Ÿ’œ)


๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

(more pages to vibe with, the heading is the whole thing ๐ŸŒธ)


๐Ÿ“œ HISTORY ๐Ÿ“œ

(where perl came from, the origin story, the heading carries it ๐ŸŽ€)

๐Ÿ’ซ perl56delta - what's new for perl v5.6.0 ๐Ÿ’ซ

okay bestie, deep breath ๐Ÿ’– this is the full table of contents for the entire "what's new in perl v5.6.0" document, and it is a whole saga. every section, every subsection, all listed out. grab a snack ๐Ÿ“


๐Ÿ“– DESCRIPTION

โœจ Core Enhancements โœจ

this is the main-character lineup of everything that leveled up:

  • Interpreter cloning, threads, and concurrency ๐Ÿงต
  • Lexically scoped warning categories
  • Unicode and UTF-8 support ๐ŸŒˆ
  • Support for interpolating named characters
  • "our" declarations
  • Support for strings represented as a vector of ordinals
  • Improved Perl version numbering system
  • New syntax for declaring subroutine attributes
  • File and directory handles can be autovivified
  • open() with more than two arguments
  • 64-bit support
  • Large file support
  • Long doubles
  • "more bits"
  • Enhanced support for sort() subroutines
  • "sort $coderef @foo" allowed
  • File globbing implemented internally
  • Support for CHECK blocks
  • POSIX character class syntax [: :] supported
  • Better pseudo-random number generator
  • Improved "qw//" operator
  • Better worst-case behavior of hashes
  • pack() format 'Z' supported
  • pack() format modifier '!' supported
  • pack() and unpack() support counted strings
  • Comments in pack() templates
  • Weak references
  • Binary numbers supported
  • Lvalue subroutines
  • Some arrows may be omitted in calls through references
  • Boolean assignment operators are legal lvalues
  • exists() is supported on subroutine names
  • exists() and delete() are supported on array elements
  • Pseudo-hashes work better
  • Automatic flushing of output buffers
  • Better diagnostics on meaningless filehandle operations
  • Where possible, buffered data discarded from duped input filehandle
  • eof() has the same old magic as <>
  • binmode() can be used to set :crlf and :raw modes
  • "-T" filetest recognizes UTF-8 encoded files as "text"
  • system(), backticks and pipe open now reflect exec() failure
  • Improved diagnostics
  • Diagnostics follow STDERR
  • More consistent close-on-exec behavior
  • syswrite() ease-of-use
  • Better syntax checks on parenthesized unary operators
  • Bit operators support full native integer width
  • Improved security features
  • More functional bareword prototype (*)
  • "require" and "do" may be overridden
  • $^X variables may now have names longer than one character
  • New variable $^C reflects "-c" switch
  • New variable $^V contains Perl version as a string
  • Optional Y2K warnings
  • Arrays now always interpolate into double-quoted strings
  • @- and @+ provide starting/ending offsets of regex matches

๐Ÿ“ฆ Modules and Pragmata ๐Ÿ“ฆ

  • Modules
    • attributes, B, Benchmark, ByteLoader, constant, charnames, Data::Dumper, DB, DB_File, Devel::DProf, Devel::Peek, Dumpvalue, DynaLoader, English, Env, Fcntl, File::Compare, File::Find, File::Glob, File::Spec, File::Spec::Functions, Getopt::Long, IO, JPL, lib, Math::BigInt, Math::Complex, Math::Trig, Pod::Parser, Pod::InputObjects, Pod::Checker, podchecker, Pod::ParseUtils, Pod::Find, Pod::Select, podselect, Pod::Usage, pod2usage, Pod::Text and Pod::Man, SDBM_File, Sys::Syslog, Sys::Hostname, Term::ANSIColor, Time::Local, Win32, XSLoader, DBM Filters
  • Pragmata

๐Ÿ›  Utility Changes ๐Ÿ› 

  • dprofpp
  • find2perl
  • h2xs
  • perlcc
  • perldoc
  • The Perl Debugger

๐Ÿ“š Improved Documentation ๐Ÿ“š

the glow-up era for the docs, fr fr:

  • perlapi.pod
  • perlboot.pod
  • perlcompile.pod
  • perldbmfilter.pod
  • perldebug.pod
  • perldebguts.pod
  • perlfork.pod
  • perlfilter.pod
  • perlhack.pod
  • perlintern.pod
  • perllexwarn.pod
  • perlnumber.pod
  • perlopentut.pod
  • perlreftut.pod
  • perltootc.pod
  • perltodo.pod
  • perlunicode.pod

๐Ÿš€ Performance enhancements ๐Ÿš€

she got faster, bestie:

  • Simple sort() using { $a <=> $b } and the like are optimized
  • Optimized assignments to lexical variables
  • Faster subroutine calls
  • delete(), each(), values() and hash iteration are faster

โš™๏ธ Installation and Configuration Improvements โš™๏ธ

  • -Dusethreads means something different
  • New Configure flags
  • Threadedness and 64-bitness now more daring
  • Long Doubles
  • -Dusemorebits
  • -Duselargefiles
  • installusrbinperl
  • SOCKS support
  • "-A" flag
  • Enhanced Installation Directories

๐Ÿ–ฅ Platform specific changes ๐Ÿ–ฅ

  • Supported platforms
  • DOS
  • OS390 (OpenEdition MVS)
  • VMS
  • Win32

๐Ÿ› Significant bug fixes ๐Ÿ›

the glow-up list, periodt:

  • <HANDLE> on empty files
  • "eval '...'" improvements
  • All compilation errors are true errors
  • Implicitly closed filehandles are safer
  • Behavior of list slices is more consistent
  • "(\$)" prototype and $foo{a}
  • "goto &sub" and AUTOLOAD
  • "-bareword" allowed under "use integer"
  • Failures in DESTROY()
  • Locale bugs fixed
  • Memory leaks
  • Spurious subroutine stubs after failed subroutine calls
  • Taint failures under "-U"
  • END blocks and the "-c" switch
  • Potential to leak DATA filehandles

๐Ÿšจ New or Changed Diagnostics ๐Ÿšจ

okay this one is a whole wall, bestie ๐Ÿ˜ญ every single message, in order, no skips:

"%s" variable %s masks earlier declaration in same %s, "my sub" not yet implemented, "our" variable %s redeclared, '!' allowed only after types %s, / cannot take a count, / must be followed by a, A or Z, / must be followed by a*, A* or Z*, / must follow a numeric type, /%s/: Unrecognized escape \%c passed through, /%s/: Unrecognized escape \%c in character class passed through, /%s/ should probably be written as "%s", %s() called too early to check prototype, %s argument is not a HASH or ARRAY element, %s argument is not a HASH or ARRAY element or slice, %s argument is not a subroutine name, %s package attribute may clash with future reserved word: %s, (in cleanup) %s, <> should be quotes, Attempt to join self, Bad evalled substitution pattern, Bad realloc() ignored, Bareword found in conditional, Binary number > 0b11111111111111111111111111111111 non-portable, Bit vector size > 32 non-portable, Buffer overflow in prime_env_iter: %s, Can't check filesystem of script "%s", Can't declare class for non-scalar %s in "%s", Can't declare %s in "%s", Can't ignore signal CHLD, forcing to default, Can't modify non-lvalue subroutine call, Can't read CRTL environ, Can't remove %s: %s, skipping file, Can't return %s from lvalue subroutine, Can't weaken a nonreference, Character class [:%s:] unknown, Character class syntax [%s] belongs inside character classes, Constant is not %s reference, constant(%s): %s, CORE::%s is not a keyword, defined(@array) is deprecated, defined(%hash) is deprecated, Did not produce a valid header, (Did you mean "local" instead of "our"?), Document contains no data, entering effective %s failed, false [] range "%s" in regexp, Filehandle %s opened only for output, flock() on closed filehandle %s, Global symbol "%s" requires explicit package name, Hexadecimal number > 0xffffffff non-portable, Ill-formed CRTL environ value "%s", Ill-formed message in prime_env_iter: |%s|, Illegal binary digit %s, Illegal binary digit %s ignored, Illegal number of bits in vec, Integer overflow in %s number, Invalid %s attribute: %s, Invalid %s attributes: %s, invalid [] range "%s" in regexp, Invalid separator character %s in attribute list, Invalid separator character %s in subroutine attribute list, leaving effective %s failed, Lvalue subs returning %s not implemented yet, Method %s not permitted, Missing %sbrace%s on \N{}, Missing command in piped open, Missing name in "my sub", No %s specified for -%c, No package name allowed for variable %s in "our", No space allowed after -%c, no UTC offset information; assuming local time is UTC, Octal number > 037777777777 non-portable, panic: del_backref, panic: kid popen errno read, panic: magic_killbackrefs, Parentheses missing around "%s" list, Possible unintended interpolation of %s in string, Possible Y2K bug: %s, pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead, Premature end of script headers, Repeat count in pack overflows, Repeat count in unpack overflows, realloc() of freed memory ignored, Reference is already weak, setpgrp can't take arguments, Strange *+?{} on zero-length expression, switching effective %s is not implemented, This Perl can't reset CRTL environ elements (%s), This Perl can't set CRTL environ elements (%s=%s), Too late to run %s block, Unknown open() mode '%s', Unknown process %x sent message to prime_env_iter: %s, Unrecognized escape \%c passed through, Unterminated attribute parameter in attribute list, Unterminated attribute list, Unterminated attribute parameter in subroutine attribute list, Unterminated subroutine attribute list, Value of CLI symbol "%s" too long, Version number must be a constant number


๐Ÿงช New tests ๐Ÿงช

๐Ÿ’€ Incompatible Changes ๐Ÿ’€

not everything is a slay โ€” some of this will break your old code, and that's just the tea ๐Ÿ™ˆ

  • Perl Source Incompatibilities
    • CHECK is a new keyword, Treatment of list slices of undef has changed, Format of $English::PERL_VERSION is different, Literals of the form 1.2.3 parse differently, Possibly changed pseudo-random number generator, Hashing function for hash keys has changed, "undef" fails on read only values, Close-on-exec bit may be set on pipe and socket handles, Writing "$$1" to mean "${$}1" is unsupported, delete(), each(), values() and "(%h)", vec(EXPR,OFFSET,BITS) enforces powers-of-two BITS, Text of some diagnostic output has changed, "%@" has been removed, Parenthesized not() behaves like a list operator, Semantics of bareword prototype "(*)" have changed, Semantics of bit operators may have changed on 64-bit platforms, More builtins taint their results
  • C Source Incompatibilities
    • "PERL_POLLUTE", "PERL_IMPLICIT_CONTEXT", "PERL_POLLUTE_MALLOC"
  • Compatible C Source API Changes
    • "PATCHLEVEL" is now "PERL_VERSION"
  • Binary Incompatibilities

๐Ÿ” Known Problems ๐Ÿ”

the "yeah we know, we're working on it" section ๐Ÿซถ

  • Thread test failures
  • EBCDIC platforms not supported
  • In 64-bit HP-UX the lib/io_multihomed test may hang
  • NEXTSTEP 3.3 POSIX test failure
  • Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with gcc
  • UNICOS/mk CC failures during Configure run
  • Arrow operator and arrays
  • Experimental features
    • Threads, Unicode, 64-bit support, Lvalue subroutines, Weak references, The pseudo-hash data type, The Compiler suite, Internal implementation of file globbing, The DB module, The regular expression code constructs:

Obsolete Diagnostics ๐Ÿ’€

these ones are literally retired, bestie โ€” they don't even go here anymore โœจ

  • Character class syntax [: :] is reserved for future extensions
  • Ill-formed logical name |%s| in prime_env_iter
  • In string, @%s now must be written as \@%s
  • Probable precedence problem on %s
  • regexp too big
  • Use of "$$<digit>" to mean "${$}<digit>" is deprecated

Reporting Bugs ๐Ÿ›

yeah, if something's busted, this is where you go ๐Ÿ‘€

SEE ALSO ๐Ÿ‘€

HISTORY ๐Ÿ“œ


perl5005delta - what's new for perl5.005 โœจ

DESCRIPTION

About the new versioning system

Incompatible Changes โš ๏ธ

WARNING: This version is not binary compatible with Perl 5.004

Bestie. Read this one twice. It is NOT binary compatible with Perl 5.004. That's the whole vibe of this warning, no cap. ๐Ÿ’…

Default installation structure has changed

Perl Source Compatibility

C Source Compatibility

Binary Compatibility

Security fixes may affect compatibility

Relaxed new mandatory warnings introduced in 5.004

Licensing


Core Changes ๐Ÿ”ฅ

Threads

Compiler

Regular Expressions

the glow-up era for regex, honestly:

  • Many new and improved optimizations
  • Many bug fixes
  • New regular expression constructs
  • New operator for precompiled regular expressions
  • Other improvements
  • Incompatible changes

Improved malloc()

Quicksort is internally implemented

Reliable signals

Reliable stack pointers

More generous treatment of carriage returns

Memory leaks

Better support for multiple interpreters

Behavior of local() on array and hash elements is now well-defined

"%!" is transparently tied to the Errno module

Pseudo-hashes are supported

"EXPR foreach EXPR" is supported

Keywords can be globally overridden

$^E is meaningful on Win32

"foreach (1..1000000)" optimized

"Foo::" can be used as implicitly quoted package name

"exists $Foo::{Bar::}" tests existence of a package

Better locale support

Experimental support for 64-bit platforms

prototype() returns useful results on builtins

Extended support for exception handling

Re-blessing in DESTROY() supported for chaining DESTROY() methods

All "printf" format conversions are handled internally

New "INIT" keyword

New "lock" keyword

New "qr//" operator

"our" is now a reserved word

Tied arrays are now fully supported

Tied handles support is better

4th argument to substr

Negative LENGTH argument to splice

Magic lvalues are now more magical

<> now reads in records


Supported Platforms ๐ŸŒ

New Platforms

Changes in existing support

Modules and Pragmata ๐Ÿ“ฆ

New Modules

fresh drops, all of them:

  • B
  • Data::Dumper
  • Dumpvalue
  • Errno
  • File::Spec
  • ExtUtils::Installed
  • ExtUtils::Packlist
  • Fatal
  • IPC::SysV
  • Test
  • Tie::Array
  • Tie::Handle
  • Thread
  • attrs
  • fields
  • re

Changes in existing modules

the OGs got updates:

  • Benchmark
  • Carp
  • CGI
  • Fcntl
  • Math::Complex
  • Math::Trig
  • POSIX
  • DB_File
  • MakeMaker
  • CPAN
  • Cwd

Utility Changes ๐Ÿ› ๏ธ

Documentation Changes ๐Ÿ“–

New Diagnostics ๐Ÿšจ

  • Ambiguous call resolved as CORE::%s(), qualify as such or use &
  • Bad index while coercing array into hash
  • Bareword "%s" refers to nonexistent package
  • Can't call method "%s" on an undefined value
  • Can't check filesystem of script "%s" for nosuid
  • Can't coerce array into hash
  • Can't goto subroutine from an eval-string
  • Can't localize pseudo-hash element
  • Can't use %%! because Errno.pm is not available
  • Cannot find an opnumber for "%s"
  • Character class syntax [. .] is reserved for future extensions
  • Character class syntax [: :] is reserved for future extensions
  • Character class syntax [= =] is reserved for future extensions
  • %s: Eval-group in insecure regular expression
  • %s: Eval-group not allowed, use re 'eval'
  • %s: Eval-group not allowed at run time
  • Explicit blessing to '' (assuming package main)
  • Illegal hex digit ignored
  • No such array field
  • No such field "%s" in variable %s of type %s
  • Out of memory during ridiculously large request
  • Range iterator outside integer range
  • Recursive inheritance detected while looking for method '%s' %s
  • Reference found where even-sized list expected
  • Undefined value assigned to typeglob
  • Use of reserved word "%s" is deprecated
  • perl: warning: Setting locale failed

Obsolete Diagnostics ๐Ÿ’€

  • Can't mktemp()
  • Can't write to temp file for -e: %s
  • Cannot open temporary file
  • regexp too big

Configuration Changes โš™๏ธ

BUGS

SEE ALSO ๐Ÿ‘€

HISTORY ๐Ÿ“œ


perl5004delta - what's new for perl5.004 โœจ

DESCRIPTION

Supported Environments ๐ŸŒ

Core Changes ๐Ÿ”ฅ

List assignment to %ENV works

Change to "Can't locate Foo.pm in @INC" error

Compilation option: Binary compatibility with 5.003

$PERL5OPT environment variable

Limitations on -M, -m, and -T options

More precise warnings

Deprecated: Inherited "AUTOLOAD" for non-methods

Previously deprecated %OVERLOAD is no longer usable

Subroutine arguments created only when they're modified

Group vector changeable with $)

Fixed parsing of $$<digit>, &$<digit>, etc.

Fixed localization of $<digit>, $&, etc.

No resetting of $. on implicit close

"wantarray" may return undef

"eval EXPR" determines value of EXPR in scalar context

Changes to tainting checks

  • No glob() or <*>
  • No spawning if tainted $CDPATH, $ENV, $BASH_ENV
  • No spawning if tainted $TERM doesn't look like a terminal name

New Opcode module and revised Safe module

Embedding improvements

Internal change: FileHandle class based on IO::* classes

Internal change: PerlIO abstraction interface

New and changed syntax

  • $coderef->(PARAMS)

New and changed builtin constants

  • __PACKAGE__

New and changed builtin variables

  • $^E
  • $^H
  • $^M

New and changed builtin functions

  • delete on slices
  • flock
  • printf and sprintf
  • keys as an lvalue
  • my() in Control Structures
  • pack() and unpack()
  • sysseek()
  • use VERSION
  • use Module VERSION LIST
  • prototype(FUNCTION)
  • srand
  • $_ as Default
  • "m//gc" does not reset search position on failure
  • "m//x" ignores whitespace before ?*+{}
  • nested "sub{}" closures work now
  • formats work right on changing lexicals

New builtin methods

  • isa(CLASS)
  • can(METHOD)
  • VERSION( [NEED] )

TIEHANDLE now supported

  • TIEHANDLE classname, LIST
  • PRINT this, LIST
  • PRINTF this, LIST
  • READ this LIST
  • READLINE this
  • GETC this
  • DESTROY this

Malloc enhancements

  • -DPERL_EMERGENCY_SBRK
  • -DPACK_MALLOC
  • -DTWO_POT_OPTIMIZE

Miscellaneous efficiency enhancements


Support for More Operating Systems ๐ŸŒ

Win32

Plan 9

QNX

AmigaOS

Pragmata โœจ

  • use autouse MODULE => qw(sub1 sub2 sub3)
  • use blib
  • use blib 'dir'
  • use constant NAME => VALUE
  • use locale
  • use ops
  • use vmsish

Modules ๐Ÿ“ฆ

Required Updates

Installation directories

Module information summary

Fcntl

IO

Math::Complex

Math::Trig

DB_File

Net::Ping

Object-oriented overrides for builtin operators


Utility Changes ๐Ÿ› ๏ธ

pod2html

  • Sends converted HTML to standard output

xsubpp

  • "void" XSUBs now default to returning nothing

C Language API Changes ๐Ÿงฉ

  • "gv_fetchmethod" and "perl_call_sv"
  • "perl_eval_pv"
  • Extended API for manipulating hashes

Documentation Changes ๐Ÿ“–

  • perldelta
  • perlfaq
  • perllocale
  • perltoot
  • perlapio
  • perlmodlib
  • perldebug
  • perlsec

New Diagnostics ๐Ÿšจ

  • "my" variable %s masks earlier declaration in same scope
  • %s argument is not a HASH element or slice
  • Allocation too large: %lx
  • Allocation too large
  • Applying %s to %s will act on scalar(%s)
  • Attempt to free nonexistent shared string
  • Attempt to use reference as lvalue in substr
  • Bareword "%s" refers to nonexistent package
  • Can't redefine active sort subroutine %s
  • Can't use bareword ("%s") as %s ref while "strict refs" in use
  • Cannot resolve method `%s' overloading `%s' in package `%s'
  • Constant subroutine %s redefined
  • Constant subroutine %s undefined
  • Copy method did not return a reference
  • Died
  • Exiting pseudo-block via %s
  • Identifier too long
  • Illegal character %s (carriage return)
  • Illegal switch in PERL5OPT: %s
  • Integer overflow in hex number
  • Integer overflow in octal number
  • internal error: glob failed
  • Invalid conversion in %s: "%s"
  • Invalid type in pack: '%s'
  • Invalid type in unpack: '%s'
  • Name "%s::%s" used only once: possible typo
  • Null picture in formline
  • Offset outside string
  • Out of memory!
  • Out of memory during request for %s
  • panic: frexp
  • Possible attempt to put comments in qw() list
  • Possible attempt to separate words with commas
  • Scalar value @%s{%s} better written as $%s{%s}
  • Stub found while resolving method `%s' overloading `%s' in %s
  • Too late for "-T" option
  • untie attempted while %d inner references still exist
  • Unrecognized character %s
  • Unsupported function fork
  • Use of "$$<digit>" to mean "${$}<digit>" is deprecated
  • Value of %s can be "0"; test with defined()
  • Variable "%s" may be unavailable
  • Variable "%s" will not stay shared
  • Warning: something's wrong
  • Ill-formed logical name |%s| in prime_env_iter
  • Got an error from DosAllocMem
  • Malformed PERLLIB_PREFIX
  • PERL_SH_DIR too long
  • Process terminated by SIG%s

BUGS

SEE ALSO ๐Ÿ‘€

HISTORY ๐Ÿ“œ


DESCRIPTION

the sacred texts, fr fr:

  • Programming Perl (the "Camel Book"):
  • The Perl Cookbook (the "Ram Book"):
  • Learning Perl (the "Llama Book")
  • Intermediate Perl (the "Alpaca Book")

References

  • Perl 5 Pocket Reference
  • Perl Debugger Pocket Reference
  • Regular Expression Pocket Reference

Tutorials

  • Beginning Perl
  • Learning Perl (the "Llama Book")
  • Intermediate Perl (the "Alpaca Book")
  • Mastering Perl
  • Effective Perl Programming

Task-Oriented

  • Writing Perl Modules for CPAN
  • The Perl Cookbook
  • Automating System Administration with Perl
  • Real World SQL Server Administration with Perl

Special Topics

  • Regular Expressions Cookbook
  • Programming the Perl DBI
  • Perl Best Practices
  • Higher-Order Perl
  • Mastering Regular Expressions
  • Network Programming with Perl
  • Perl Template Toolkit
  • Object Oriented Perl
  • Data Munging with Perl
  • Mastering Perl/Tk
  • Extending and Embedding Perl
  • Pro Perl Debugging

Free (as in beer) books

Other interesting, non-Perl books

  • Programming Pearls
  • More Programming Pearls

A note on freshness

Get your book listed

๐Ÿฆ‹ perlcommunity โ€” a brief overview of the Perl community

this is the "where my people at" page, bestie. it's giving community-center-but-make-it-nerdy energy, and honestly? we love that for us. ๐Ÿ’–

DESCRIPTION

AUTHOR


๐Ÿ“– perldoc โ€” Look up Perl documentation in Pod format.

the icon. the moment. the thing you type when you forgot what a function does. ๐Ÿ’…

SYNOPSIS

DESCRIPTION

OPTIONS

one bullet per flag, all of them, in order, no cap:

  • -h
  • -D
  • -t
  • -u
  • -m module
  • -l
  • -U
  • -F
  • -f perlfunc
  • -q perlfaq-search-regexp
  • -a perlapifunc
  • -v perlvar
  • -T
  • -d destination-filename
  • -o output-formatname
  • -M module-name
  • -w option:value or -w option
  • -X
  • -L language_code
  • PageName|ModuleName|ProgramName|URL
  • -n some-formatter
  • -r
  • -i
  • -V

SECURITY

ENVIRONMENT

CHANGES

SEE ALSO

AUTHOR


๐Ÿงช perlexperiment โ€” A listing of experimental features in Perl

the "handle with care, bestie" page. everything here is literally labeled experimental, so do not come for me if it wiggles. ๐Ÿ™ˆ

DESCRIPTION

  • Current experiments
    • Pluggable keywords
    • Aliasing via reference
    • use re 'strict';
    • Declaring a reference to a variable
    • There is an "installhtml" target in the Makefile
    • (Limited) Variable-length look-behind
    • Unicode private use character hooks
    • Unicode property wildcards
    • try/catch control structure
    • Use of @_ within subroutine signatures
    • The builtin namespace
    • The defer block modifier
    • Extra paired delimiters for quote-like operators
    • "any" and "all" list processing operators
  • Accepted features
    • 64-bit support
    • die accepts a reference
    • DB module
    • Weak references
    • Internal file glob
    • fork() emulation
    • -Dusemultiplicity -Duseithreads
    • Support for long doubles
    • The "\N" regex character class
    • "(?{code})" and "(??{ code })"
    • Linux abstract Unix domain sockets
    • Lvalue subroutines
    • Backtracking control verbs
    • The ":pop" IO pseudolayer
    • "\s" in regexp matches vertical tab
    • Postfix dereference syntax
    • Lexical subroutines
    • String- and number-specific bitwise operators
    • Alphabetic assertions
    • Script runs
    • The infix "isa" operator
    • Subroutine signatures
    • Regular Expression Set Operations
    • try/catch control structure
    • The "const" attribute
    • for loop with multiple iteration variables
  • Removed features
    • 5.005-style threading
    • perlcc
    • The pseudo-hash data type
    • GetOpt::Long Options can now take multiple values at once (experimental)
    • Assertions
    • Test::Harness::Straps
    • "legacy"
    • Lexical $_
    • Array and hash container functions accept references
    • "our" can have an experimental optional attribute "unique"
    • The ":win32" IO pseudolayer
  • Features abandoned in place
    • Smart match ("~~")
    • Switch (given/when)

SEE ALSO

AUTHORS

LICENSE


๐ŸŽจ perlartistic โ€” the Perl Artistic License

the legal paperwork, but make it iconic. yes we're reading the license. yes it's a vibe. โœจ

SYNOPSIS

DESCRIPTION

The "Artistic License"

  • Preamble
  • Definitions
    • "Package", "Standard Version", "Copyright Holder", "You", "Reasonable copying fee", "Freely Available"
  • Conditions
    • a), b), c), d), a), b), c), d)

๐Ÿ“œ perlgpl โ€” the GNU General Public License, version 1

more legal lore. sip your drink, bestie, this one's a classic. ๐Ÿ“

SYNOPSIS

DESCRIPTION

GNU GENERAL PUBLIC LICENSE


๐Ÿง perlaix โ€” Perl version 5 on IBM AIX (UNIX) systems

AIX said "I'm different" and meant it. buckle up. ๐Ÿ’€

DESCRIPTION

  • Compiling Perl 5 on AIX
  • Supported Compilers
  • Incompatibility with AIX Toolbox lib gdbm
  • Perl 5 was successfully compiled and tested on:
  • Building Dynamic Extensions on AIX
  • Using Large Files with Perl
  • Threaded Perl
  • 64-bit Perl
  • Long doubles
  • Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (threaded/32-bit)
  • Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (32-bit)
  • Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (threaded/64-bit)
  • Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (64-bit)
  • Compiling Perl 5 on AIX 7.1.0
  • Compiling Perl 5 on older AIX versions up to 4.3.3
  • OS level
  • Building Dynamic Extensions on AIX < 5L
  • The IBM ANSI C Compiler
  • The usenm option
  • Using GNU's gcc for building Perl
  • Using Large Files with Perl < 5L
  • Threaded Perl < 5L
  • 64-bit Perl < 5L
  • AIX 4.2 and extensions using C++ with statics

AUTHORS


๐Ÿ•น๏ธ perlamiga โ€” Perl under AmigaOS 4.1

retro tech, main character energy, we respect the hustle. ๐ŸŽ€

NOTE

SYNOPSIS

DESCRIPTION

  • Prerequisites for running Perl 5.22.1 under AmigaOS 4.1
    • AmigaOS 4.1 update 6 with all updates applied as of 9th October 2013, newlib.library version 53.28 or greater, AmigaOS SDK, abc-shell
  • Starting Perl programs under AmigaOS 4.1
  • Limitations of Perl under AmigaOS 4.1
    • Nested Piped programs can crash when run from older abc-shells
    • Incorrect or unexpected command line unescaping
    • Starting subprocesses via open has limitations
    • If you find any other limitations or bugs then let me know

INSTALLATION

Amiga Specific Modules

  • Amiga::ARexx
  • Amiga::Exec

BUILDING

CHANGES

  • August 2015
  • Port to Perl 5.22
  • Add handling of NIL: to afstat()
  • Fix inheritance of environment variables by subprocesses
  • Fix exec, and exit in "forked" subprocesses
  • Fix issue with newlib's unlink, which could cause infinite loops
  • Add flock() emulation using IDOS->LockRecord thanks to Tony Cook for the suggestion
  • Fix issue where kill was using the wrong kind of process ID
  • 27th November 2013
  • Create new installation system based on installperl links and Amiga protection bits now set correctly
  • Pod now defaults to text
  • File::Spec should now recognise an Amiga style absolute path as well as an Unix style one. Relative paths must always be Unix style
  • 20th November 2013
  • Configured to use SDK:Local/C/perl to start standard scripts
  • Added Amiga::Exec module with support for Wait() and AmigaOS signal numbers
  • 10th October 13

SEE ALSO


๐Ÿค– perlandroid โ€” Perl under Android

perl on your phone. it's giving pocket-sized chaos and I'm obsessed. ๐Ÿ”ฅ

SYNOPSIS

DESCRIPTION

Cross-compilation

  • Get the Android Native Development Kit (NDK)
  • Determine the architecture you'll be cross-compiling for
  • Set up a standalone toolchain
  • adb or ssh?
  • Configure and beyond

Native Builds

  • CCTools
  • Termux

AUTHOR


๐Ÿ–ฅ๏ธ perlbs2000 โ€” building and installing Perl for BS2000.

big iron, big feelings. ๐Ÿงš

SYNOPSIS

DESCRIPTION

  • gzip on BS2000
  • bison on BS2000
  • Unpacking Perl Distribution on BS2000
  • Compiling Perl on BS2000
  • Testing Perl on BS2000
  • Installing Perl on BS2000
  • Using Perl in the Posix-Shell of BS2000
  • Using Perl in "native" BS2000
  • Floating point anomalies on BS2000
  • Using PerlIO and different encodings on ASCII and EBCDIC partitions

AUTHORS

SEE ALSO

  • Mailing list

HISTORY


๐Ÿฆข perlcygwin โ€” Perl for Cygwin

"Don't leave UNIX without it" is genuinely a slay tagline and I will not be taking questions. ๐Ÿ’œ

SYNOPSIS

PREREQUISITES FOR COMPILING PERL ON CYGWIN

  • Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it)
  • Cygwin Configuration
    • "PATH", nroff

CONFIGURE PERL ON CYGWIN

  • Stripping Perl Binaries on Cygwin
  • Optional Libraries for Perl on Cygwin
    • "-lcrypt", "-lgdbm_compat" ("use GDBM_File"), "-ldb" ("use DB_File"), "cygserver" ("use IPC::SysV"), "-lutil"
  • Configure-time Options for Perl on Cygwin
    • "-Uusedl", "-Dusemymalloc", "-Uuseperlio", "-Dusemultiplicity", "-Uuse64bitint", "-Duselongdouble", "-Uuseithreads", "-Duselargefiles", "-Dmksymlinks"

MAKE ON CYGWIN

TEST ON CYGWIN

  • File Permissions on Cygwin
  • NDBM_File and ODBM_File do not work on FAT filesystems
  • fork() failures in io_* tests

Specific features of the Cygwin port

  • Script Portability on Cygwin
    • Pathnames, Text/Binary, PerlIO, .exe, Cygwin vs. Windows process ids, Cygwin vs. Windows errors, rebase errors on fork or system, Miscellaneous
  • Prebuilt methods:
    • "Cwd::cwd", "Cygwin::pid_to_winpid", "Cygwin::winpid_to_pid", "Cygwin::win_to_posix_path", "Cygwin::posix_to_win_path", Cygwin::mount_table(), "Cygwin::mount_flags", "Cygwin::is_binmount", "Cygwin::sync_winenv"

INSTALL PERL ON CYGWIN

MANIFEST ON CYGWIN

  • Documentation, Build, Configure, Make, Install, Tests, Compiled Perl Source, Compiled Module Source, Perl Modules/Scripts, Perl Module Tests

BUGS ON CYGWIN

AUTHORS

HISTORY


๐Ÿ˜ˆ perlfreebsd โ€” Perl version 5 on FreeBSD systems

short page, spicy contents. ๐ŸŒˆ

DESCRIPTION

  • FreeBSD core dumps from readdir_r with ithreads
  • $^X doesn't always contain a full path in FreeBSD

AUTHOR


๐ŸŽ‹ perlhaiku โ€” Perl version 5.10+ on Haiku

cute OS name, cute page. that's it, that's the whole note. ๐ŸŒธ

DESCRIPTION

BUILD AND INSTALL

KNOWN PROBLEMS

CONTACT


๐Ÿ”๏ธ perlhpux โ€” Perl version 5 on Hewlett-Packard Unix (HP-UX) systems

PA-RISC, Itanium, kernel parameters... this page ate and left no crumbs, honestly. ๐Ÿ‘‘

DESCRIPTION

  • Using perl as shipped with HP-UX
  • Using perl from HP's porting centre
  • Other prebuilt perl binaries
  • Compiling Perl 5 on HP-UX
  • PA-RISC
  • PA-RISC 1.0
  • PA-RISC 1.1
  • PA-RISC 2.0
  • Portability Between PA-RISC Versions
  • Itanium Processor Family (IPF) and HP-UX
  • Itanium, Itanium 2 & Madison 6
  • HP-UX versions
  • Building Dynamic Extensions on HP-UX
  • The HP ANSI C Compiler
  • The GNU C Compiler
  • Using Large Files with Perl on HP-UX
  • Threaded Perl on HP-UX
  • 64-bit Perl on HP-UX
  • Oracle on HP-UX
  • GDBM and Threads on HP-UX
  • NFS filesystems and utime(2) on HP-UX
  • HP-UX Kernel Parameters (maxdsiz) for Compiling Perl

nss_delete core dump from op/pwent or op/grent

error: pasting ")" and "l" does not give a valid preprocessing token

Redeclaration of "sendpath" with a different storage class specifier

Miscellaneous

AUTHOR


๐Ÿข perlhurd โ€” Perl version 5 on Hurd

niche, mysterious, lowkey legendary. ๐Ÿซถ

DESCRIPTION

  • Known Problems with Perl on Hurd

AUTHOR


๐Ÿ”บ perlirix โ€” Perl version 5 on Irix systems

SGI nostalgia hours. 32-bit, 64-bit, threads, malloc drama โ€” the whole saga. ๐Ÿ’…

DESCRIPTION

  • Building 32-bit Perl in Irix
  • Building 64-bit Perl in Irix
  • About Compiler Versions of Irix
  • Linker Problems in Irix
  • Malloc in Irix
  • Building with threads in Irix
  • Irix 5.3

AUTHOR


๐Ÿง perllinux โ€” Perl version 5 on Linux systems

your fave platform, fr fr. short and sweet. โญ

DESCRIPTION

  • Deploying Perl on Linux
  • Experimental Support for Sun Studio Compilers for Linux OS

AUTHOR


๐ŸŽ perlmacosx โ€” Perl under Mac OS X

aesthetic OS, aesthetic page. universal binaries, SDK support, prebinding โ€” very demure, very mindful. ๐Ÿ’–

SYNOPSIS

DESCRIPTION

  • Installation Prefix
  • SDK support
  • Universal Binary support
  • 64-bit PPC support
  • libperl and Prebinding
  • Updating Apple's Perl
  • Known problems
  • Cocoa

Starting From Scratch

AUTHOR

DATE


perlopenbsd โ€” Perl version 5 on OpenBSD systems ๐Ÿก

okay BSD besties this one's for you

DESCRIPTION

  • OpenBSD core dumps from getprotobyname_r and getservbyname_r with ithreads

AUTHOR


perlos2 โ€” Perl under OS/2, DOS, Win0.3*, Win0.95 and WinNT. ๐Ÿ’พ

not me pulling up a whole OS from the history books, but the lore is REAL and we're keeping all of it

SYNOPSIS

DESCRIPTION

  • Target
  • Other OSes
  • Prerequisites
    • EMX, RSX, HPFS, pdksh
  • Starting Perl programs under OS/2 (and DOS and...)
  • Starting OS/2 (and DOS) programs under Perl

Frequently asked questions

  • "It does not work"
  • I cannot run external programs
  • I cannot embed perl into my program, or use perl.dll from your program.
    • Is your program EMX-compiled with -Zmt -Zcrtdll?, Did you use ExtUtils::Embed?
  • `` and pipe-open do not work under DOS
  • Cannot start find.exe "pattern" file

INSTALLATION

  • Automatic binary installation
    • PERL_BADLANG, PERL_BADFREE, Config.pm
  • Manual binary installation
    • Perl VIO and PM executables (dynamically linked), Perl_ VIO executable (statically linked), Executables for Perl utilities, Main Perl library, Additional Perl modules, Tools to compile Perl modules, Manpages for Perl and utilities, Manpages for Perl modules, Source for Perl documentation, Perl manual in .INF format, Pdksh
  • Warning

Accessing documentation

  • OS/2 .INF file
  • Plain text
  • Manpages
  • HTML
  • GNU info files
  • PDF files
  • LaTeX docs

BUILD

  • The short story
  • Prerequisites
  • Getting perl source
  • Application of the patches
  • Hand-editing
  • Making
  • Testing
    • A lot of "bad free", Process terminated by SIGTERM/SIGINT, op/fs.t, 18, 25, op/stat.t
  • Installing the built perl
  • a.out-style build

Building a binary distribution

Building custom .EXE files

  • Making executables with a custom collection of statically loaded extensions
  • Making executables with a custom search-paths

Build FAQ

  • Some / became \ in pdksh
  • 'errno' - unresolved external
  • Problems with tr or sed
  • Some problem (forget which ;-)
  • Library ... not found
  • Segfault in make
  • op/sprintf test failure

Specific (mis)features of OS/2 port

  • setpriority, getpriority
  • system()
  • extproc on the first line
  • Additional modules:
  • Prebuilt methods:
    • File::Copy::syscopy, DynaLoader::mod2fname, Cwd::current_drive(), Cwd::sys_chdir(name), Cwd::change_drive(name), Cwd::sys_is_absolute(name), Cwd::sys_is_rooted(name), Cwd::sys_is_relative(name), Cwd::sys_cwd(name), Cwd::sys_abspath(name, dir), Cwd::extLibpath([type]), Cwd::extLibpath_set( path [, type ] ), OS2::Error(do_harderror,do_exception), OS2::Errors2Drive(drive), OS2::SysInfo(), OS2::BootDrive(), OS2::MorphPM(serve), OS2::UnMorphPM(serve), OS2::Serve_Messages(force), OS2::Process_Messages(force [, cnt]), OS2::_control87(new,mask), OS2::get_control87(), OS2::set_control87_em(new=MCW_EM,mask=MCW_EM), OS2::DLLname([how [, \&xsub]])
  • Prebuilt variables:
    • $OS2::emx_rev, $OS2::emx_env, $OS2::os_ver, $OS2::is_aout, $OS2::can_fork, $OS2::nsyserror
  • Misfeatures
  • Modifications
    • popen, tmpnam, tmpfile, ctermid, stat, mkdir, rmdir, flock
  • Identifying DLLs
  • Centralized management of resources
    • HAB, HMQ, Treating errors reported by OS/2 API, CheckOSError(expr), CheckWinError(expr), SaveWinError(expr), SaveCroakWinError(expr,die,name1,name2), WinError_2_Perl_rc, FillWinError, FillOSError(rc), Loading DLLs and ordinals in DLLs

Perl flavors

  • perl.exe
  • perl_.exe
  • perl__.exe
  • perl___.exe
  • Why strange names?
  • Why dynamic linking?
  • Why chimera build?

ENVIRONMENT

  • PERLLIB_PREFIX
  • PERL_BADLANG
  • PERL_BADFREE
  • PERL_SH_DIR
  • USE_PERL_FLOCK
  • TMP or TEMP

Evolution

  • Text-mode filehandles
  • Priorities
  • DLL name mangling: pre 5.6.2
  • DLL name mangling: 5.6.2 and beyond
    • Global DLLs, specific DLLs, BEGINLIBPATH and ENDLIBPATH, . from LIBPATH
  • DLL forwarder generation
  • Threading
  • Calls to external programs
  • Memory allocation
  • Threads
    • COND_WAIT, os2.c

BUGS

AUTHOR

SEE ALSO


perlos390 โ€” building and installing Perl for z/OS (previously called OS/390) ๐Ÿข

mainframe girlies rise up, the big iron is serving

SYNOPSIS

DESCRIPTION

  • Tools
  • Building a 64-bit Dynamic ASCII Perl
  • Building a 64-bit Dynamic EBCDIC Perl
  • Setup and utilities for Perl on OS/390
  • Useful files for trouble-shooting
  • Build Anomalies with Perl on OS/390
  • Testing Anomalies with Perl on OS/390
  • Usage Hints for Perl on z/OS
  • Modules and Extensions for Perl on z/OS (Static Only)
  • Running Perl on z/OS
    • For ASCII Only:, For ASCII or EBCDIC:

AUTHORS

OTHER SITES

HISTORY


perlos400 โ€” Perl version 5 on OS/400 ๐Ÿ“Ÿ

PASE girlies, we see you

DESCRIPTION

  • Compiling Perl for OS/400 PASE
  • Installing Perl in OS/400 PASE
  • Using Perl in OS/400 PASE
  • Known Problems
  • Perl on ILE

AUTHORS


perlplan9 โ€” Plan 9-specific documentation for Perl ๐Ÿ‡

the niche-of-niche OS representation we deserve

DESCRIPTION

  • Invoking Perl
  • What's in Plan 9 Perl
  • What's not in Plan 9 Perl
  • Perl5 Functions not currently supported in Plan 9 Perl
  • Signals in Plan 9 Perl

COMPILING AND INSTALLING PERL ON PLAN 9

  • Installing Perl Documentation on Plan 9

BUGS

Revision date

AUTHOR


perlqnx โ€” Perl version 5 on QNX ๐Ÿ› ๏ธ

real-time OS bestie, let's go

DESCRIPTION

  • Required Software for Compiling Perl on QNX4
    • /bin/sh, ar, nm, cpp, make
  • Outstanding Issues with Perl on QNX4
  • QNX auxiliary files
    • qnx/ar, qnx/cpp
  • Outstanding issues with perl under QNX6
  • Cross-compilation

AUTHOR


perlriscos โ€” Perl version 5 for RISC OS ๐ŸŽ€

Acorn girlies, this is your moment

DESCRIPTION

BUILD

AUTHOR


perlsolaris โ€” Perl version 5 on Solaris systems โ˜€๏ธ

the whole Solaris saga, and honestly? it ate

DESCRIPTION

  • Solaris Version Numbers

RESOURCES

  • Solaris FAQ, Precompiled Binaries, Solaris Documentation

SETTING UP

  • File Extraction Problems on Solaris
  • Compiler and Related Tools on Solaris
  • Environment for Compiling perl on Solaris

RUN CONFIGURE

  • 64-bit perl on Solaris
  • Threads in perl on Solaris
  • Malloc Issues with perl on Solaris

MAKE PROBLEMS

  • Dynamic Loading Problems With GNU as and GNU ld, ld.so.1: ./perl: fatal: relocation error:, dlopen: stub interception failed, #error "No DATAMODEL_NATIVE specified", sh: ar: not found

MAKE TEST

  • op/stat.t test 4 in Solaris
  • nss_delete core dump from op/pwent or op/grent

CROSS-COMPILATION

PREBUILT BINARIES OF PERL FOR SOLARIS

RUNTIME ISSUES FOR PERL ON SOLARIS

  • Limits on Numbers of Open Files on Solaris

SOLARIS-SPECIFIC MODULES

SOLARIS-SPECIFIC PROBLEMS WITH MODULES

  • Proc::ProcessTable on Solaris
  • BSD::Resource on Solaris
  • Net::SSLeay on Solaris

SunOS 4.x

AUTHOR


perlsynology โ€” Perl 5 on Synology DSM systems ๐ŸŸ

your NAS has been holding out on you

DESCRIPTION

  • Setting up the build environment
  • Compiling Perl 5
  • Known problems
    • Error message "No error definitions found", ext/DynaLoader/t/DynaLoader.t
  • Smoke testing Perl
  • Adding libraries

REVISION

AUTHOR


perltru64 โ€” Perl version 5 on Tru64 (formerly known as Digital UNIX formerly known as DEC OSF/1) systems ๐Ÿ’œ

the name has a whole ancestry at this point, iconic

DESCRIPTION

  • Compiling Perl 5 on Tru64
  • Using Large Files with Perl on Tru64
  • Threaded Perl on Tru64
  • Long Doubles on Tru64
  • DB_File tests failing on Tru64
  • 64-bit Perl on Tru64
  • Warnings about floating-point overflow when compiling Perl on Tru64

Testing Perl on Tru64

ext/ODBM_File/odbm Test Failing With Static Builds

Perl Fails Because Of Unresolved Symbol sockatmark

read_cur_obj_info: bad file magic number

AUTHOR


perlvms โ€” VMS-specific documentation for Perl ๐ŸงŠ

VMS besties, this one's a whole vibe

DESCRIPTION

Installation

Organization of Perl Images

  • Core Images
  • Perl Extensions
  • Installing static extensions
  • Installing dynamic extensions

File specifications

  • Syntax
  • Filename Case
  • Symbolic Links
  • Wildcard expansion
  • Pipes

PERL5LIB and PERLLIB

The Perl Forked Debugger

PERL_VMS_EXCEPTION_DEBUG

Command line

  • I/O redirection and backgrounding
  • Command line switches
    • -i, -S, -u

Perl functions

  • File tests, backticks, binmode FILEHANDLE, crypt PLAINTEXT, USER, die, dump, exec LIST, fork, getpwent, getpwnam, getpwuid, gmtime, kill, qx//, select (system call), stat EXPR, system LIST, time, times, unlink LIST, utime LIST, waitpid PID,FLAGS

Perl variables

  • %ENV, CRTL_ENV, CLISYM_[LOCAL], Any other string, $!, $^E, $?, $|

Standard modules with VMS-specific differences

  • SDBM_File

Revision date

AUTHOR


perlvos โ€” Perl for Stratus OpenVOS ๐ŸŒŸ

niche OS representation, we love to see it

SYNOPSIS

BUILDING PERL FOR OPENVOS

INSTALLING PERL IN OPENVOS

USING PERL IN OPENVOS

  • Restrictions of Perl on OpenVOS

TEST STATUS

SUPPORT STATUS

AUTHOR

LAST UPDATE


perlwin32 โ€” Perl under Windows ๐ŸชŸ

the Windows girlies get a whole novel and honestly they deserve it

SYNOPSIS

DESCRIPTION

  • <https://osdn.net/projects/mingw/>, <https://mingw-w64.org>
  • Setting Up Perl on Windows
    • Make, Command Shell, Microsoft Visual C++, Microsoft Visual C++ 2015-2022 Community Edition, Microsoft C++ Build Tools, GCC, Intel C++ Compiler
  • Building
  • Testing Perl on Windows
  • Installation of Perl on Windows
  • Usage Hints for Perl on Windows
    • Environment Variables, File Globbing, Using perl from the command line, Building Extensions, Command-line Wildcard Expansion, Notes on 64-bit Windows
  • Running Perl Scripts
  • Miscellaneous Things

BUGS AND CAVEATS

ACKNOWLEDGEMENTS

AUTHORS

  • Gary Ng <71564.1743@CompuServe.COM>, Gurusamy Sarathy <gsar@activestate.com>, Nick Ing-Simmons <nick@ing-simmons.net>, Jan Dubois <jand@activestate.com>, Steve Hay <steve.m.hay@googlemail.com>

SEE ALSO

HISTORY


the classic intro-to-OOP pointer, we stan a legend

DESCRIPTION

  • perlbot โ€” Links to information on object-oriented programming in Perl ๐Ÿซถ
    • DESCRIPTION
  • perlrepository โ€” Links to current information on the Perl source repository โœจ
    • DESCRIPTION
  • perltodo โ€” Link to the Perl to-do list ๐Ÿ“
    • DESCRIPTION
  • perltooc โ€” Links to information on object-oriented programming in Perl ๐Ÿ’œ
    • DESCRIPTION
  • perltoot โ€” Links to information on object-oriented programming in Perl ๐Ÿ‘‘
    • DESCRIPTION

๐Ÿฆ‹ PRAGMA DOCUMENTATION ๐Ÿฆ‹

okay bestie, this next chunk is the pragma era โ€” all those little use-able modules that tweak how Perl itself behaves. icons only, no filler ๐Ÿ’…

  • attributes โ€” get/set subroutine or variable attributes
    • SYNOPSIS
    • DESCRIPTION
      • What import does
      • Built-in Attributes
        • lvalue, method, prototype(..), const, shared
      • Available Subroutines
        • get, reftype
      • Package-specific Attribute Handling
        • FETCH_type_ATTRIBUTES, MODIFY_type_ATTRIBUTES
      • Syntax of Attribute Lists
    • EXPORTS
      • Default exports
      • Available exports
      • Export tags defined
    • EXAMPLES
    • MORE EXAMPLES
    • SEE ALSO
  • autodie โ€” Replace functions with ones that succeed or die with lexical scope ๐Ÿ’€
    • SYNOPSIS
    • DESCRIPTION
    • EXCEPTIONS
    • CATEGORIES
    • FUNCTION SPECIFIC NOTES
      • print
      • flock
      • system/exec
    • GOTCHAS
    • DIAGNOSTICS
      • :void cannot be used with lexical scope, No user hints defined for %s
    • Tips and Tricks
      • Importing autodie into another namespace than caller
    • BUGS
      • autodie and string eval
      • REPORTING BUGS
    • FEEDBACK
    • AUTHOR
    • LICENSE
    • SEE ALSO
    • ACKNOWLEDGEMENTS
  • autodie::Scope::Guard โ€” Wrapper class for calling subs at end of scope ๐ŸŽ€
    • SYNOPSIS
    • DESCRIPTION
      • Methods
    • AUTHOR
    • LICENSE
  • autodie::Scope::GuardStack โ€” Hook stack for managing scopes via %^H ๐ŸŒธ
    • SYNOPSIS
    • DESCRIPTION
      • Methods
    • AUTHOR
    • LICENSE
  • autodie::Util โ€” Internal Utility subroutines for autodie and Fatal ๐Ÿงš
    • SYNOPSIS
    • DESCRIPTION
      • Methods
    • AUTHOR
    • LICENSE
  • autodie::exception โ€” Exceptions from autodying functions.
    • SYNOPSIS
    • DESCRIPTION
      • Common Methods
    • Advanced methods
    • SEE ALSO
    • LICENSE
    • AUTHOR
  • autodie::exception::system โ€” Exceptions from autodying system().
    • SYNOPSIS
    • DESCRIPTION
    • stringify
    • LICENSE
    • AUTHOR
  • autodie::hints โ€” Provide hints about user subroutines to autodie ๐Ÿ’ซ
    • SYNOPSIS
    • DESCRIPTION
      • Introduction
      • What are hints?
      • Example hints
    • Manually setting hints from within your program
    • Adding hints to your module
    • Insisting on hints
    • Diagnostics
      • Attempts to set_hints_for unidentifiable subroutine, fail hints cannot be provided with either scalar or list hints for %s, %s hint missing for %s
    • ACKNOWLEDGEMENTS
    • AUTHOR
    • LICENSE
    • SEE ALSO
  • autodie::skip โ€” Skip a package when throwing autodie exceptions ๐Ÿ™ˆ
    • SYNPOSIS
    • DESCRIPTION
    • AUTHOR
    • LICENSE
    • SEE ALSO
  • autouse โ€” postpone load of modules until a function is used ๐Ÿฆ‹
    • SYNOPSIS
    • DESCRIPTION
    • WARNING
    • AUTHOR
    • SEE ALSO
  • base โ€” Establish an ISA relationship with base classes at compile time ๐ŸŒˆ
    • SYNOPSIS
    • DESCRIPTION
    • DIAGNOSTICS
      • Base class package "%s" is empty, Class 'Foo' tried to inherit from itself
    • HISTORY
    • CAVEATS
    • SEE ALSO
  • bigfloat โ€” transparent big floating point number support for Perl ๐Ÿ”ฅ
    • SYNOPSIS
    • DESCRIPTION
      • Options
        • a or accuracy, p or precision, t or trace, l, lib, try, or only, hex, oct, v or version
      • Math Library
      • Method calls
      • Methods
        • inf(), NaN(), e, PI, bexp(), bpi(), accuracy(), precision(), round_mode(), div_scale(), upgrade(), downgrade(), in_effect()
    • CAVEATS
      • Hexadecimal, octal, and binary floating point literals, Operator vs literal overloading, Ranges, in_effect(), hex()/oct()
    • EXAMPLES
    • BUGS
    • SUPPORT
      • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
    • LICENSE
    • SEE ALSO
    • AUTHORS
  • bigint โ€” transparent big integer support for Perl โญ
    • SYNOPSIS
    • DESCRIPTION
      • use integer vs. use bigint
      • Options
        • a or accuracy, p or precision, t or trace, l, lib, try, or only, hex, oct, v or version
      • Math Library
      • Method calls
      • Methods
        • inf(), NaN(), e, PI, bexp(), bpi(), accuracy(), precision(), round_mode(), div_scale(), in_effect()
    • CAVEATS
      • Hexadecimal, octal, and binary floating point literals, Operator vs literal overloading, Ranges, in_effect(), hex()/oct()
    • EXAMPLES
    • BUGS
    • SUPPORT
      • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
    • LICENSE
    • SEE ALSO
    • AUTHORS
  • bignum โ€” transparent big number support for Perl ๐Ÿ‘‘
    • SYNOPSIS
    • DESCRIPTION
      • Literal numeric constants
      • Upgrading and downgrading
      • Overloading
      • Options
        • a or accuracy, p or precision, l, lib, try, or only, hex, oct, v or version
      • Math Library
      • Method calls
      • Methods
        • inf(), NaN(), e, PI, bexp(), bpi(), accuracy(), precision(), round_mode(), div_scale(), upgrade(), downgrade(), in_effect()
    • CAVEATS
      • The upgrade() and downgrade() methods, Hexadecimal, octal, and binary floating point literals, Operator vs literal overloading, Ranges, in_effect(), hex()/oct()
    • EXAMPLES
    • BUGS
    • SUPPORT
      • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
    • LICENSE
    • SEE ALSO
    • AUTHORS
  • bigrat โ€” transparent big rational number support for Perl ๐Ÿ“
    • SYNOPSIS
    • DESCRIPTION
      • Options
        • a or accuracy, p or precision, t or trace, l, lib, try, or only, hex, oct, v or version
      • Math Library
      • Method calls
      • Methods
        • inf(), NaN(), e, PI, bexp(), bpi(), accuracy(), precision(), round_mode(), div_scale(), in_effect()
    • CAVEATS
      • Hexadecimal, octal, and binary floating point literals, Operator vs literal overloading, Ranges, in_effect(), hex()/oct()
    • EXAMPLES
    • BUGS
    • SUPPORT
      • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
    • LICENSE
    • SEE ALSO
    • AUTHORS
  • blib โ€” Use MakeMaker's uninstalled version of a package ๐ŸŽ€
    • SYNOPSIS
    • DESCRIPTION
    • BUGS
    • AUTHOR
  • builtin โ€” Perl pragma to import built-in utility functions ๐Ÿ’–
    • SYNOPSIS
    • DESCRIPTION
      • Lexical Import
      • Version Bundles
      • Function Optimisations
    • FUNCTIONS
      • true
      • false
      • is_bool
      • inf
      • nan
      • weaken
      • unweaken
      • is_weak
      • blessed
      • refaddr
      • reftype
      • created_as_string
      • created_as_number
      • stringify
      • ceil
      • floor
      • indexed
      • trim
      • is_tainted
      • export_lexically
      • load_module
    • SEE ALSO
  • bytes โ€” Perl pragma to expose the individual bytes of characters ๐ŸŒธ
    • NOTICE
    • SYNOPSIS
    • DESCRIPTION
    • LIMITATIONS
    • SEE ALSO
  • charnames โ€” access to Unicode character names and named character sequences; also define character names โœจ
    • SYNOPSIS
    • DESCRIPTION
    • LOOSE MATCHES
    • ALIASES
    • CUSTOM ALIASES
    • charnames::string_vianame(name)
    • charnames::vianame(name)
    • charnames::viacode(code)
    • CUSTOM TRANSLATORS
    • BUGS
  • constant โ€” Perl pragma to declare constants ๐Ÿ’œ
    • SYNOPSIS
    • DESCRIPTION
    • NOTES
      • List constants
      • Defining multiple constants at once
      • Magic constants
    • TECHNICAL NOTES
    • CAVEATS
    • SEE ALSO
    • BUGS
    • AUTHORS
    • COPYRIGHT & LICENSE
  • deprecate โ€” Perl pragma for deprecating the inclusion of a module in core ๐Ÿซถ
    • SYNOPSIS
    • DESCRIPTION
      • Important Caveat
    • EXPORT
    • SEE ALSO
    • AUTHOR
    • COPYRIGHT AND LICENSE
  • diagnostics, splain โ€” produce verbose warning diagnostics ๐Ÿ”
    • SYNOPSIS
    • DESCRIPTION
      • The diagnostics Pragma
      • The splain Program
    • EXAMPLES
    • INTERNALS
    • BUGS
    • AUTHOR
  • encoding โ€” allows you to write your script in non-ASCII and non-UTF-8 ๐ŸŒˆ
    • WARNING
    • SYNOPSIS
    • DESCRIPTION
      • use encoding ['ENCNAME'] ;, use encoding ENCNAME, Filter=>1;, no encoding;
    • OPTIONS
      • Setting STDIN and/or STDOUT individually
      • The :locale sub-pragma
    • CAVEATS
      • SIDE EFFECTS
      • DO NOT MIX MULTIPLE ENCODINGS
      • Prior to Perl v5.22
      • Prior to Encode version 1.87
      • Prior to Perl v5.8.1
        • NON-EUC doublebyte encodings, tr///, Legend of characters above
    • EXAMPLE - Greekperl
    • BUGS
      • Thread safety, Can't be used by more than one module in a single program, Other modules using STDIN and STDOUT get the encoded stream, literals in regex that are longer than 127 bytes, EBCDIC, format, See also CAVEATS in encoding
    • HISTORY
    • SEE ALSO
  • encoding::warnings โ€” Warn on implicit encoding conversions ๐Ÿ˜ญ
    • VERSION
    • NOTICE
    • SYNOPSIS
    • DESCRIPTION
      • Overview of the problem
      • Detecting the problem
      • Solving the problem
        • Upgrade both sides to unicode-strings, Downgrade both sides to byte-strings, Specify the encoding for implicit byte-string upgrading, PerlIO layers for STDIN and STDOUT, Literal conversions, Implicit upgrading for byte-strings
    • CAVEATS
    • SEE ALSO
    • AUTHORS
    • COPYRIGHT
  • experimental โ€” experimental features, but make it easy โœจ (the pragma that hands you all the shiny new stuff)
    • VERSION
    • SYNOPSIS
    • DESCRIPTION โ€” and here's the whole lineup of things you can switch on, bestie:
      • args_array_with_signatures โ€” lets you use @_ inside subs that have signatures
      • array_base โ€” lets you use $[ to change where @array starts counting from
      • autoderef โ€” lets you call push, each, keys and the other built-ins right on references
      • bitwise โ€” lets you use the new stringwise bit operators
      • builtin โ€” lets you use the functions in the builtin:: namespace
      • const_attr โ€” lets you put the :const attribute on subs
      • declared_refs โ€” enables aliasing by assigning to references
      • defer โ€” enables defer blocks
      • extra_paired_delimiters โ€” unlocks more paired string delimiters than the classic four, < >, ( ), { } and [ ]
      • for_list โ€” lets for iterate over multiple values at a time
      • isa โ€” lets you use the isa infix operator
      • lexical_topic โ€” lets you have a lexical $_ via my $_
      • lexical_subs โ€” lets you use lexical subroutines
      • postderef โ€” lets you use postfix dereferencing expressions
      • postderef_qq โ€” postfix dereferencing expressions, but inside interpolating strings
      • re_strict โ€” turns on strict mode in regular expressions
      • refaliasing โ€” lets you alias via \$x = \$y
      • regex_sets โ€” lets you use extended bracketed character classes in regexps
      • signatures โ€” lets you use subroutine signatures (for named arguments)
      • smartmatch โ€” lets you use ~~
      • switch โ€” lets you use ~~, given, and when
      • try โ€” lets you use try and catch
      • win32_perlio โ€” lets you use the :win32 IO layer
      • Ordering matters
      • Disclaimer
    • SEE ALSO
    • AUTHOR
    • COPYRIGHT AND LICENSE

  • feature โ€” the Perl pragma for turning on new features ๐ŸŽ€
    • SYNOPSIS
    • DESCRIPTION
      • Lexical effect
      • "no feature"
    • AVAILABLE FEATURES โ€” the whole roster, no skips:
      • The 'say' feature
      • The 'state' feature
      • The 'smartmatch' feature
      • The 'switch' feature
      • The 'unicode_strings' feature
      • The 'unicode_eval' and 'evalbytes' features
      • The 'current_sub' feature
      • The 'array_base' feature
      • The 'fc' feature
      • The 'lexical_subs' feature
      • The 'postderef' and 'postderef_qq' features
      • The 'signatures' feature
      • The 'refaliasing' feature
      • The 'bitwise' feature
      • The 'declared_refs' feature
      • The 'isa' feature
      • The 'indirect' feature
      • The 'multidimensional' feature
      • The 'bareword_filehandles' feature
      • The 'try' feature
      • The 'defer' feature
      • The 'extra_paired_delimiters' feature
      • The 'module_true' feature
      • The 'class' feature
      • The 'apostrophe_as_package_separator' feature
      • The 'keyword_any' feature
      • The 'keyword_all' feature
    • FEATURE BUNDLES
    • IMPLICIT LOADING
    • CHECKING FEATURES
      • feature_enabled($feature), feature_enabled($feature, $depth), features_enabled(), features_enabled($depth), feature_bundle(), feature_bundle($depth)

  • fields โ€” compile-time class fields, periodt
    • SYNOPSIS
    • DESCRIPTION
      • new, phash
    • SEE ALSO

  • filetest โ€” the Perl pragma that controls the filetest permission operators ๐Ÿ”
    • SYNOPSIS
    • DESCRIPTION
      • Consider this carefully
      • The "access" sub-pragma
      • Limitation with regard to "_"
    • SEE ALSO

  • if โ€” use a Perl module only if some condition holds ๐Ÿ‘€
    • SYNOPSIS
    • DESCRIPTION
      • "use if"
      • "no if"
    • BUGS
    • SEE ALSO
    • AUTHOR
    • COPYRIGHT AND LICENCE

  • integer โ€” the Perl pragma for doing integer arithmetic instead of floating point ๐Ÿงฎ
    • SYNOPSIS
    • DESCRIPTION

  • less โ€” the perl pragma for requesting less of something (yes, really)
    • SYNOPSIS
    • DESCRIPTION
    • FOR MODULE AUTHORS
      • "BOOLEAN = less->of( FEATURE )"
      • "FEATURES = less->of()"
    • CAVEATS
      • This probably does nothing, This works only on 5.10+

  • lib โ€” manipulate @INC at compile time ๐Ÿ“š
    • SYNOPSIS
    • DESCRIPTION
      • Adding directories to @INC
      • Deleting directories from @INC
      • Restoring original @INC
    • CAVEATS
    • NOTES
    • SEE ALSO
    • AUTHOR
    • COPYRIGHT AND LICENSE

  • locale โ€” the Perl pragma to use or avoid POSIX locales for built-in operations ๐ŸŒ
    • SYNOPSIS
    • DESCRIPTION

  • mro โ€” Method Resolution Order, aka who inherits from who and in what order ๐Ÿ•ต๏ธ
    • SYNOPSIS
    • DESCRIPTION
    • OVERVIEW
    • The C3 MRO
      • What is C3?
      • How does C3 work
    • Functions
      • mro::get_linear_isa($classname[, $type])
      • mro::set_mro ($classname, $type)
      • mro::get_mro($classname)
      • mro::get_isarev($classname)
      • mro::is_universal($classname)
      • mro::invalidate_all_method_caches()
      • mro::method_changed_in($classname)
      • mro::get_pkg_gen($classname)
      • next::method
      • next::can
      • maybe::next::method
    • SEE ALSO
    • AUTHOR

  • ok โ€” the alternative to Test::More::use_ok ๐Ÿ’…
    • SYNOPSIS
    • DESCRIPTION
    • CC0 1.0 Universal

  • open โ€” the perl pragma for setting default PerlIO layers on input and output ๐Ÿšช
    • SYNOPSIS
    • DESCRIPTION
    • IMPLEMENTATION DETAILS
    • SEE ALSO

  • ops โ€” the Perl pragma that restricts unsafe operations while compiling ๐Ÿšง
    • SYNOPSIS
    • DESCRIPTION
    • SEE ALSO

  • overload โ€” the Package for overloading Perl operations, this one is a whole journey ๐ŸŒˆ
    • SYNOPSIS
    • DESCRIPTION
      • Fundamentals
      • Overloadable Operations
        • "not", "neg", "++", "--", Assignments, Non-mutators with a mutator variant, "int", String, numeric, boolean, and regexp conversions, Iteration, File tests, Matching, Dereferencing, Special
      • Magic Autogeneration
      • Special Keys for "use overload"
        • defined, but FALSE, "undef", TRUE
      • How Perl Chooses an Operator Implementation
      • Losing Overloading
      • Inheritance and Overloading
        • Method names in the "use overload" directive, Overloading of an operation is inherited by derived classes
      • Run-time Overloading
      • Public Functions
        • overload::StrVal(arg), overload::Overloaded(arg), overload::Method(obj,op)
      • Overloading Constants
        • integer, float, binary, q, qr
    • IMPLEMENTATION
    • COOKBOOK
      • Two-face Scalars
      • Two-face References
      • Symbolic Calculator
      • Really Symbolic Calculator
    • AUTHOR
    • SEE ALSO
    • DIAGNOSTICS
      • Odd number of arguments for overload::constant, '%s' is not an overloadable type, '%s' is not a code reference, overload arg '%s' is invalid
    • BUGS AND PITFALLS

  • overloading โ€” the perl pragma to control overloading lexically โœจ
    • SYNOPSIS
    • DESCRIPTION
      • "no overloading", "no overloading @ops", "use overloading", "use overloading @ops"

  • parent โ€” establishes an ISA relationship with base classes at compile time ๐Ÿ‘‘
    • SYNOPSIS
    • DESCRIPTION
    • HISTORY
    • CAVEATS
    • SEE ALSO
      • base, parent::versioned
    • AUTHORS AND CONTRIBUTORS
    • MAINTAINER
    • LICENSE

  • re โ€” the Perl pragma that alters regular expression behaviour ๐ŸŽ€ (so much going on here, obsessed)
    • SYNOPSIS
    • DESCRIPTION
      • 'taint' mode
      • 'eval' mode
      • 'strict' mode
      • '/flags' mode
      • 'debug' mode
      • 'Debug' mode
        • Compile related options, COMPILE, PARSE, OPTIMISE, TRIEC, DUMP, FLAGS, TEST, Execute related options, EXECUTE, MATCH, TRIEE, INTUIT, Extra debugging options, EXTRA, BUFFERS, TRIEM, STATE, STACK, GPOS, OPTIMISEM, DUMP_PRE_OPTIMIZE, WILDCARD, Other useful flags, ALL, All, MORE, More
      • Exportable Functions
        • is_regexp($ref), regexp_pattern($ref), regname($name,$all), regnames($all), regnames_count(), regmust($ref), optimization($ref), minlen, minlenret, gofs, noscan, isall, anchor SBOL, anchor MBOL, anchor GPOS, skip, implicit, anchored/floating, anchored utf8/floating utf8, anchored min offset/floating min offset, anchored max offset/floating max offset, anchored end shift/floating end shift, checking, stclass
    • SEE ALSO

  • sigtrap โ€” the Perl pragma for enabling simple signal handling ๐Ÿšจ
    • SYNOPSIS
    • DESCRIPTION
    • OPTIONS
      • SIGNAL HANDLERS
        • stack-trace, die, handler your-handler
      • SIGNAL LISTS
        • normal-signals, error-signals, old-interface-signals
      • OTHER
        • untrapped, any, signal, number
    • EXAMPLES

  • sort โ€” the perl pragma that controls sort() behaviour ๐Ÿ”€
    • SYNOPSIS
    • DESCRIPTION
    • CAVEATS

  • source::encoding โ€” Declare Perl source code encoding ๐Ÿ“
    • SYNOPSIS
    • DESCRIPTION
    • SEE ALSO

  • stable โ€” experimental features made easy, once we know they're actually stable ๐Ÿฆ‹
    • VERSION
    • SYNOPSIS
    • DESCRIPTION
      • bitwise โ€” stable as of perl 5.22, available via stable 0.031
      • isa โ€” stable as of perl 5.32, available via stable 0.031
      • lexical_subs โ€” stable as of perl 5.22, available via stable 0.031
      • postderef โ€” stable as of perl 5.20, available via stable 0.031
      • const_attr โ€” stable as of perl 5.22, available via stable 0.032
      • for_list โ€” stable as of perl 5.36, available via stable 0.032
    • SEE ALSO
    • AUTHOR
    • COPYRIGHT AND LICENSE

  • strict โ€” the Perl pragma that restricts unsafe constructs, aka your bestie keeping you out of trouble ๐Ÿ’€
    • SYNOPSIS
    • DESCRIPTION
      • "strict refs", "strict vars", "strict subs"
    • HISTORY

  • subs โ€” the Perl pragma to predeclare subroutine names ๐Ÿท๏ธ
    • SYNOPSIS
    • DESCRIPTION

  • threads โ€” Perl interpreter-based threads, big main character energy ๐Ÿงต
    • VERSION
    • WARNING
    • SYNOPSIS
    • DESCRIPTION
      • $thr = threads->create(FUNCTION, ARGS), $thr->join(), $thr->detach(), threads->detach(), threads->self(), $thr->tid(), threads->tid(), "$thr", threads->object($tid), threads->yield(), threads->list(), threads->list(threads::all), threads->list(threads::running), threads->list(threads::joinable), $thr1->equal($thr2), async BLOCK;, $thr->error(), $thr->_handle(), threads->_handle()
    • EXITING A THREAD
      • threads->exit(), threads->exit(status), die(), exit(status), use threads 'exit' => 'threads_only', threads->create({'exit' => 'thread_only'}, ...), $thr->set_thread_exit_only(boolean), threads->set_thread_exit_only(boolean)
    • THREAD STATE
      • $thr->is_running(), $thr->is_joinable(), $thr->is_detached(), threads->is_detached()
    • THREAD CONTEXT
      • Explicit context
      • Implicit context
      • $thr->wantarray()
      • threads->wantarray()
    • THREAD STACK SIZE
      • threads->get_stack_size();, $size = $thr->get_stack_size();, $old_size = threads->set_stack_size($new_size);, use threads ('stack_size' => VALUE);, $ENV{'PERL5_ITHREADS_STACK_SIZE'}, threads->create({'stack_size' => VALUE}, FUNCTION, ARGS), $thr2 = $thr1->create(FUNCTION, ARGS)

โœจ THREAD SIGNALLING โœจ

Okay bestie, this is the bit about yeeting a signal at a thread. The one and only entry:

  • $thr->kill('SIG...');

โš ๏ธ WARNINGS โš ๏ธ

The warning messages this thing can hit you with. All of them, no skips, fr fr:

  • Perl exited with active threads:
  • Thread creation failed: pthread_create returned #
  • Thread # terminated abnormally: ..
  • Using minimum thread stack size of #
  • Thread creation failed: pthread_attr_setstacksize(SIZE) returned 22

๐Ÿ˜ญ ERRORS ๐Ÿ˜ญ

And the actual errors, iykyk:

  • This Perl not built to support threads
  • Cannot change stack size of an existing thread
  • Cannot signal threads without safe signals
  • Unrecognized signal name: ..

๐Ÿ’€ BUGS AND LIMITATIONS ๐Ÿ’€

This is the long one. Every single crumb, because we do not gatekeep:

  • Thread-safe modules
  • Using non-thread-safe modules
  • Memory consumption
  • Current working directory
  • Locales
  • Environment variables
  • Catching signals
  • Parent-child threads
  • Unsafe signals
  • Perl has been built with "PERL_OLD_SIGNALS" (see "perl -V")
  • The environment variable "PERL_SIGNALS" is set to "unsafe" (see "PERL_SIGNALS" in perlrun)
  • The module Perl::Unsafe::Signals is used
  • Identity of objects returned from threads
  • Returning blessed objects from threads
  • END blocks in threads
  • Open directory handles
  • Detached threads and global destruction
  • Perl Bugs and the CPAN Version of threads

๐ŸŒธ REQUIREMENTS ๐ŸŒธ

No sub-entries under this one, just the heading itself. Periodt.

๐Ÿซถ SEE ALSO ๐Ÿซถ

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

๐Ÿ“œ LICENSE ๐Ÿ“œ

๐ŸŽ€ ACKNOWLEDGEMENTS ๐ŸŽ€


๐Ÿงต threads::shared - Perl extension for sharing data structures between threads

Sharing data structures between threads! Here's the whole map, bestie:

VERSION

SYNOPSIS

DESCRIPTION

EXPORT

FUNCTIONS

  • share VARIABLE
  • shared_clone REF
  • is_shared VARIABLE
  • lock VARIABLE
  • cond_wait VARIABLE
  • cond_wait CONDVAR, LOCKVAR
  • cond_timedwait VARIABLE, ABS_TIMEOUT
  • cond_timedwait CONDVAR, ABS_TIMEOUT, LOCKVAR
  • cond_signal VARIABLE
  • cond_broadcast VARIABLE

OBJECTS

NOTES

WARNINGS

  • cond_broadcast() called on unlocked variable
  • cond_signal() called on unlocked variable

BUGS AND LIMITATIONS

SEE ALSO

AUTHOR

LICENSE


๐ŸŒˆ utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code

SYNOPSIS

DESCRIPTION

  • Utility functions
    • $num_octets = utf8::upgrade($string)
    • $success = utf8::downgrade($string[, $fail_ok])
    • utf8::encode($string)
    • $success = utf8::decode($string)
    • $unicode = utf8::native_to_unicode($code_point)
    • $native = utf8::unicode_to_native($code_point)
    • $flag = utf8::is_utf8($string)
    • $flag = utf8::valid($string)

BUGS

SEE ALSO


๐ŸŒธ vars - Perl pragma to predeclare global variable names

Short and sweet, this one. Just two sections:

SYNOPSIS

DESCRIPTION


๐ŸŽ€ version - Perl extension for Version Objects

Version objects, bestie โ€” the whole breakdown:

SYNOPSIS

DESCRIPTION

TYPES OF VERSION OBJECTS

  • Decimal Versions
  • Dotted Decimal Versions

DECLARING VERSIONS

  • How to convert a module from decimal to dotted-decimal
  • How to declare() a dotted-decimal version

PARSING AND COMPARING VERSIONS

  • How to parse() a version
  • How to check for a legal version string
    • is_lax(), is_strict()
  • How to compare version objects

OBJECT METHODS

  • is_alpha()
  • is_qv()
  • normal()
  • numify()
  • to_decimal
  • to_dotted_decimal
  • tuple()
  • from_tuple(...)
  • stringify()
  • tuple

EXPORTED FUNCTIONS

  • qv()
  • is_lax()
  • is_strict()

AUTHOR

SEE ALSO


๐Ÿฆ‹ version::Internals - Perl extension for Version Objects

DESCRIPTION

WHAT IS A VERSION?

  • Decimal versions, Dotted-Decimal versions
  • Decimal Versions
  • Dotted-Decimal Versions
  • Alpha Versions
  • Regular Expressions for Version Parsing
    • $version::LAX, $version::STRICT, v1.234.5

IMPLEMENTATION DETAILS

  • Equivalence between Decimal and Dotted-Decimal Versions
  • Quoting Rules
  • What about v-strings?
  • Replacement UNIVERSAL::VERSION

USAGE DETAILS

  • Using modules that use version.pm
    • Decimal versions always work, Dotted-Decimal version work sometimes
  • Object Methods
    • new(), qv(), Normal Form, Numification, Stringification, Comparison operators, Logical Operators

AUTHOR

SEE ALSO


๐Ÿ’œ vmsish - Perl pragma to control VMS-specific language features

SYNOPSIS

DESCRIPTION

  • vmsish status
  • vmsish exit
  • vmsish time
  • vmsish hushed

๐Ÿ“ warnings - Perl pragma to control optional warnings

SYNOPSIS

DESCRIPTION

  • Default Warnings and Optional Warnings
  • "Negative warnings"
  • What's wrong with -w and $^W
  • Controlling Warnings from the Command Line
    • -w, -W, -X
  • Backward Compatibility
  • Category Hierarchy
  • Fatal Warnings
  • Reporting Warnings from a Module

FUNCTIONS

  • use warnings::register
  • warnings::enabled()
  • warnings::enabled($category)
  • warnings::enabled($object)
  • warnings::enabled_at_level($category, $level)
  • warnings::fatal_enabled()
  • warnings::fatal_enabled($category)
  • warnings::fatal_enabled($object)
  • warnings::fatal_enabled_at_level($category, $level)
  • warnings::warn($message)
  • warnings::warn($category, $message)
  • warnings::warn($object, $message)
  • warnings::warn_at_level($category, $level, $message)
  • warnings::warnif($message)
  • warnings::warnif($category, $message)
  • warnings::warnif($object, $message)
  • warnings::warnif_at_level($category, $level, $message)
  • warnings::register_categories(@names)

๐Ÿงš warnings::register - warnings import function

SYNOPSIS

DESCRIPTION


โœจ MODULE DOCUMENTATION โœจ


๐Ÿ—„๏ธ AnyDBM_File - provide framework for multiple DBMs

SYNOPSIS

DESCRIPTION

  • DBM Comparisons
    • [0]
    • [1]
    • [2]
    • [3]

SEE ALSO


๐Ÿ›ฐ๏ธ App::Cpan - easily interact with CPAN from the command line

SYNOPSIS

DESCRIPTION

  • Options
    • -a
    • -A module [ module ... ]
    • -c module
    • -C module [ module ... ]
    • -D module [ module ... ]
    • -f
    • -F
    • -g module [ module ... ]
    • -G module [ module ... ]
    • -h
    • -i module [ module ... ]
    • -I
    • -j Config.pm
    • -J
    • -l
    • -L author [ author ... ]
    • -m
    • -M mirror1,mirror2,..
    • -n
    • -O
    • -p
    • -P
    • -r
    • -s
    • -t module [ module ... ]
    • -T
    • -u
    • -v
    • -V
    • -w
    • -x module [ module ... ]
    • -X
  • Examples
  • Environment variables
    • NONINTERACTIVE_TESTING
    • PERL_MM_USE_DEFAULT
    • CPAN_OPTS
    • CPANSCRIPT_LOGLEVEL
    • GIT_COMMAND
  • Methods

run( ARGS )

EXIT VALUES

TO DO

BUGS

SEE ALSO

SOURCE AVAILABILITY

CREDITS

AUTHOR


๐Ÿงช App::Prove - Implements the "prove" command.

VERSION

DESCRIPTION

SYNOPSIS

METHODS

  • Class Methods

Attributes

  • archive
  • argv
  • backwards
  • blib
  • color
  • directives
  • dry
  • exec
  • extensions
  • failures
  • comments
  • formatter
  • harness
  • ignore_exit
  • includes
  • jobs
  • lib
  • merge
  • modules
  • parse
  • plugins
  • quiet
  • really_quiet
  • recurse
  • rules
  • show_count
  • show_help
  • show_man
  • show_version
  • shuffle
  • state
  • state_class
  • taint_fail
  • taint_warn
  • test_args
  • timer
  • verbose
  • warnings_fail
  • warnings_warn
  • tapversion
  • trap

PLUGINS

  • Sample Plugin

SEE ALSO


๐Ÿ“Š App::Prove::State - State storage for the "prove" command.

VERSION

DESCRIPTION

SYNOPSIS

METHODS

  • Class Methods
    • store
    • extensions (optional)
    • result_class (optional)

result_class

extensions

results

commit

Instance Methods

  • last
  • failed
  • passed
  • all
  • hot
  • todo
  • slow
  • fast
  • new
  • old
  • save

๐Ÿ“ฆ App::Prove::State::Result - Individual test suite results.

VERSION

DESCRIPTION

SYNOPSIS

METHODS

  • Class Methods

state_version

test_class


๐Ÿงพ App::Prove::State::Result::Test - Individual test results.

VERSION

DESCRIPTION

SYNOPSIS

METHODS

  • Class Methods

Instance Methods


๐Ÿ—œ๏ธ Archive::Tar - module for manipulations of tar archives

The big one, bestie. Buckle up:

SYNOPSIS

DESCRIPTION

Object Methods

  • Archive::Tar->new( [$file, $compressed] )

$tar->read ( $filename|$handle, [$compressed, {opt => 'val'}] )

  • limit
  • filter
  • md5
  • extract

$tar->contains_file( $filename )

$tar->extract( [@filenames] )

$tar->extract_file( $file, [$extract_path] )

$tar->list_files( [\@properties] )

$tar->get_files( [@filenames] )

$tar->get_content( $file )

$tar->replace_content( $file, $content )

$tar->rename( $file, $new_name )

$tar->chmod( $file, $mode )

$tar->chown( $file, $uname [, $gname] )

$tar->remove (@filenamelist)

$tar->clear

$tar->write ( [$file, $compressed, $prefix] )

$tar->add_files( @filenamelist )

$tar->add_data ( $filename, $data, [$opthashref] )

  • FILE
  • HARDLINK
  • SYMLINK
  • CHARDEV
  • BLOCKDEV
  • DIR
  • FIFO
  • SOCKET

$tar->error( [$BOOL] )

$tar->setcwd( $cwd );

Class Methods

  • Archive::Tar->create_archive($file, $compressed, @filelist)
  • Archive::Tar->iter( $filename, [ $compressed, {opt => $val} ] )
  • Archive::Tar->list_archive($file, $compressed, [\@properties])
  • Archive::Tar->extract_archive($file, $compressed)
  • $bool = Archive::Tar->has_io_string
  • $bool = Archive::Tar->has_perlio
  • $bool = Archive::Tar->has_zlib_support
  • $bool = Archive::Tar->has_bzip2_support
  • $bool = Archive::Tar->has_xz_support
  • Archive::Tar->can_handle_compressed_files

GLOBAL VARIABLES

  • $Archive::Tar::FOLLOW_SYMLINK
  • $Archive::Tar::CHOWN
  • $Archive::Tar::CHMOD
  • $Archive::Tar::SAME_PERMISSIONS
  • $Archive::Tar::DO_NOT_USE_PREFIX
  • $Archive::Tar::DEBUG
  • $Archive::Tar::WARN
  • $Archive::Tar::error
  • $Archive::Tar::INSECURE_EXTRACT_MODE
  • $Archive::Tar::EXTRACT_HARDLINK
  • $Archive::Tar::HAS_PERLIO
  • $Archive::Tar::HAS_IO_STRING
  • $Archive::Tar::ZERO_PAD_NUMBERS
  • Tuning the way RESOLVE_SYMLINK will works
    • none
    • speed (default)
    • memory
  • $Archive::Tar::EXTRACT_BLOCK_SIZE
  • $Archive::Tar::MAX_FILE_SIZE

FAQ

  • What's the minimum perl version required to run Archive::Tar?
  • Isn't Archive::Tar slow?
  • Isn't Archive::Tar heavier on memory than /bin/tar?
  • Can you lazy-load data instead?
  • How much memory will an X kb tar file need?
  • What do you do with unsupported filetypes in an archive?
  • I'm using WinZip, or some other non-POSIX client, and files are not being extracted properly!
  • How do I extract only files that have property X from an archive?
  • How do I access .tar.Z files?
  • How do I handle Unicode strings?

CAVEATS

TODO

  • Check if passed in handles are open for read/write
  • Allow archives to be passed in as string
  • Facilitate processing an opened filehandle of a compressed archive

SEE ALSO

  • The GNU tar specification
  • The PAX format specification
  • AUTHOR
  • ACKNOWLEDGEMENTS
  • COPYRIGHT

๐ŸŽ€ Archive::Tar::File โ€” a subclass for in-memory extracted file from Archive::Tar

ngl this one is giving "files but make it an object" and we're obsessed ๐Ÿ’– here's the whole map:

SYNOPSIS

DESCRIPTION

โœจ Accessors

bestie these are the little getters that let you pull info straight off a file object:

  • name, mode, uid, gid, size, mtime, chksum, type, linkname, magic, version, uname, gname, devmajor, devminor, prefix, raw

๐Ÿซถ Methods

the way these constructors SLAP:

  • Archive::Tar::File->new( file => $path )
  • Archive::Tar::File->new( data => $path, $data, $opt )
  • Archive::Tar::File->new( chunk => $chunk )

and then the doing-things ones:

  • $bool = $file->extract( [ $alternative_name ] )
  • $path = $file->full_path
  • $bool = $file->validate
  • $bool = $file->has_content
  • $content = $file->get_content
  • $cref = $file->get_content_by_ref
  • $bool = $file->replace_content( $content )
  • $bool = $file->rename( $new_name )
  • $bool = $file->chmod( $mode )
  • $bool = $file->chown( $user [, $group])

๐ŸŒธ Convenience methods

the little vibe-check squad, all in a row:

  • $file->is_file, $file->is_dir, $file->is_hardlink, $file->is_symlink, $file->is_chardev, $file->is_blockdev, $file->is_fifo, $file->is_socket, $file->is_longlink, $file->is_label, $file->is_unknown

๐Ÿงš Attribute::Handlers โ€” Simpler definition of attribute handlers

okay so this one is literally about making attribute handlers easier, and the section list is a whole journey:

VERSION

SYNOPSIS

DESCRIPTION

these are the numbered sub-topics, bestie โ€” yes they're actually named [0] through [7]:

  • [0], [1], [2], [3], [4], [5], [6], [7]

and then the vibes:

  • Typed lexicals
  • Type-specific attribute handlers
  • Non-interpretive attribute handlers
  • Phase-specific attribute handlers
  • Attributes as "tie" interfaces

EXAMPLES

UTILITY FUNCTIONS

one lone function holding it down:

  • findsym

DIAGNOSTICS

the error messages, quoted exactly because they're iconic in a cursed way ๐Ÿ’€:

  • "Bad attribute type: ATTR(%s)"
  • "Attribute handler %s doesn't handle %s attributes"
  • "Declaration of %s attribute in package %s may clash with future reserved word"
  • "Can't have two ATTR specifiers on one subroutine"
  • "Can't autotie a %s"
  • "Internal error: %s symbol went missing"
  • "Won't be able to apply END handler"

AUTHOR

BUGS


๐ŸŒˆ AutoLoader โ€” load subroutines only on demand

lazy loading but make it vintage โœจ the sections go:

SYNOPSIS

DESCRIPTION

๐Ÿฆ‹ Subroutine Stubs

๐Ÿฆ‹ Using AutoLoader's AUTOLOAD Subroutine

๐Ÿฆ‹ Overriding AutoLoader's AUTOLOAD Subroutine

๐Ÿฆ‹ Package Lexicals

๐Ÿฆ‹ Not Using AutoLoader

๐Ÿฆ‹ AutoLoader vs. SelfLoader

๐Ÿฆ‹ Forcing AutoLoader to Load a Function

CAVEATS

SEE ALSO

AUTHOR


๐Ÿ’… AutoSplit โ€” split a package for autoloading

SYNOPSIS

DESCRIPTION

โœจ $keep, $check, $modtime

โœจ Multiple packages

DIAGNOSTICS

AUTHOR


๐Ÿ‘‘ B โ€” The Perl Compiler Backend

this is the big one, bestie. compiler guts. buckle up ๐Ÿซถ

SYNOPSIS

DESCRIPTION

OVERVIEW

Utility Functions

๐Ÿ”ฅ Functions Returning "B::SV", "B::AV", "B::HV", and "B::CV" objects

  • sv_undef, sv_yes, sv_no, svref_2object(SVREF), amagic_generation, init_av, check_av, unitcheck_av, begin_av, end_av, comppadlist, regex_padav, main_cv

๐Ÿ”ฅ Functions for Examining the Symbol Table

  • walksymtable(SYMREF, METHOD, RECURSE, PREFIX)

๐Ÿ”ฅ Functions Returning "B::OP" objects or for walking op trees

  • main_root, main_start, walkoptree(OP, METHOD), walkoptree_debug(DEBUG)

๐Ÿ”ฅ Miscellaneous Utility Functions

  • ppname(OPNUM), hash(STR), cast_I32(I), minus_c, cstring(STR), perlstring(STR), safename(STR), class(OBJ), threadsv_names

๐Ÿ”ฅ Exported utility variables

  • @optype, @specialsv_name

OVERVIEW OF CLASSES

๐Ÿ’œ B::SV Methods

  • REFCNT, FLAGS, IsBOOL, object_2svref, TRUE, TRUE_nomg

๐Ÿ’œ B::IV Methods

  • IV, IVX, UVX, int_value, needs64bits, packiv

๐Ÿ’œ B::NV Methods

  • NV, NVX, COP_SEQ_RANGE_LOW, COP_SEQ_RANGE_HIGH

๐Ÿ’œ B::RV Methods

  • RV

๐Ÿ’œ B::PV Methods

  • PV, RV, PVX, CUR, LEN

๐Ÿ’œ B::PVMG Methods

  • MAGIC, SvSTASH

๐Ÿ’œ B::MAGIC Methods

  • MOREMAGIC, precomp, PRIVATE, TYPE, FLAGS, OBJ, PTR, REGEX

๐Ÿ’œ B::INVLIST Methods

  • prev_index, is_offset, array_len, get_invlist_array

๐Ÿ’œ B::PVLV Methods

  • TARGOFF, TARGLEN, TYPE, TARG

๐Ÿ’œ B::BM Methods

  • USEFUL, PREVIOUS, RARE, TABLE

๐Ÿ’œ B::REGEXP Methods

  • REGEX, precomp, qr_anoncv, compflags

๐Ÿ’œ B::GV Methods

  • is_empty, NAME, SAFENAME, STASH, SV, IO, FORM, AV, HV, EGV, CV, CVGEN, LINE, FILE, FILEGV, GvREFCNT, FLAGS, GPFLAGS

๐Ÿ’œ B::IO Methods

  • LINES, PAGE, PAGE_LEN, LINES_LEFT, TOP_NAME, TOP_GV, FMT_NAME, FMT_GV, BOTTOM_NAME, BOTTOM_GV, SUBPROCESS, IoTYPE, IoFLAGS, IsSTD

๐Ÿ’œ B::AV Methods

  • FILL, MAX, ARRAY, ARRAYelt

๐Ÿ’œ B::CV Methods

  • STASH, START, ROOT, GV, FILE, DEPTH, PADLIST, OUTSIDE, OUTSIDE_SEQ, XSUB, XSUBANY, CvFLAGS, const_sv, NAME_HEK

๐Ÿ’œ B::HV Methods

  • FILL, MAX, KEYS, RITER, NAME, ARRAY

โญ B::OP Methods

  • next, sibling, parent, name, ppaddr, desc, targ, type, opt, flags, private, spare

โญ B::UNOP Method

  • first

โญ B::UNOP_AUX Methods (since 5.22)

  • aux_list(cv), string(cv)

โญ B::BINOP Method

  • last

โญ B::LOGOP Method

  • other

โญ B::LISTOP Method

  • children

โญ B::PMOP Methods

  • pmreplroot, pmreplstart, pmflags, precomp, pmoffset, code_list, pmregexp

โญ B::SVOP Methods

  • sv, gv

โญ B::PADOP Method

  • padix

โญ B::PVOP Method

  • pv

โญ B::LOOP Methods

  • redoop, nextop, lastop

โญ B::COP Methods

  • label, stash, stashpv, stashoff (threaded only), file, cop_seq, line, warnings, io, hints, hints_hash

โญ B::METHOP Methods (Since Perl 5.22)

  • first, meth_sv

๐Ÿ“ B::PADLIST Methods

  • MAX, ARRAY, ARRAYelt, NAMES, REFCNT, id, outid

๐Ÿ“ B::PADNAMELIST Methods

  • MAX, ARRAY, ARRAYelt, REFCNT

๐Ÿ“ B::PADNAME Methods

  • PV, PVX, LEN, REFCNT, GEN, FLAGS, TYPE, SvSTASH, OURSTASH, PROTOCV, COP_SEQ_RANGE_LOW, COP_SEQ_RANGE_HIGH, PARENT_PAD_INDEX, PARENT_FAKELEX_FLAGS, IsUndef

๐Ÿ“ $B::overlay

AUTHOR


๐Ÿ’€ B::Concise โ€” Walk Perl syntax tree, printing concise info about ops

SYNOPSIS

DESCRIPTION

EXAMPLE

OPTIONS

โœจ Options for Opcode Ordering

  • -basic, -exec, -tree

โœจ Options for Line-Style

  • -concise, -terse, -linenoise, -debug, -env

โœจ Options for tree-specific formatting

  • -compact, -loose, -vt, -ascii

โœจ Options controlling sequence numbering

  • -basen, -bigendian, -littleendian

โœจ Other options

  • -src, -stash="somepackage", -main, -nomain, -nobanner, -banner, -banneris => subref

โœจ Option Stickiness

ABBREVIATIONS

๐ŸŽ€ OP class abbreviations

๐ŸŽ€ OP flags abbreviations

FORMATTING SPECIFICATIONS

๐ŸŒŸ Special Patterns

  • (x(exec_text;basic_text)x), (*(text)*), (*(text1;text2)*), (?(text1#varText2)?), ~

๐ŸŒŸ # Variables

  • #var, #varN, #Var, #addr, #arg, #class, #classsym, #coplabel, #exname, #extarg, #firstaddr, #flags, #flagval, #hints, #hintsval, #hyphseq, #label, #lastaddr, #name, #NAME, #next, #nextaddr, #noise, #private, #privval, #seq, #opt, #sibaddr, #svaddr, #svclass, #svval, #targ, #targarg, #targarglife, #typenum

One-Liner Command tips

these are literal commands, bestie, copy them exactly ๐Ÿ‘‡

perl -MO=Concise,bar foo.pl
perl -MDigest::MD5=md5 -MO=Concise,md5 -e1
perl -MPOSIX -MO=Concise,_POSIX_ARG_MAX -e1
perl -MPOSIX -MO=Concise,a -e 'print _POSIX_SAVED_IDS'
perl -MPOSIX -MO=Concise,a -e 'sub a{_POSIX_SAVED_IDS}'
perl -MB::Concise -e 'B::Concise::compile("-exec","-src", \%B::Concise::)->()'

Using B::Concise outside of the O framework

๐ŸŒธ Example: Altering Concise Renderings

๐ŸŒธ set_style()

๐ŸŒธ set_style_standard($name)

๐ŸŒธ add_style ()

๐ŸŒธ add_callback ()

๐ŸŒธ Running B::Concise::compile()

๐ŸŒธ B::Concise::reset_sequence()

๐ŸŒธ Errors

AUTHOR


๐Ÿฆ‹ B::Deparse โ€” Perl compiler backend to produce perl code

SYNOPSIS

DESCRIPTION

OPTIONS

all the flags, listed exactly:

  • -d, -fFILE, -l, -p, -P, -q, -sLETTERS, C, iNUMBER, T, vSTRING., -xLEVEL

USING B::Deparse AS A MODULE

๐Ÿ’œ Synopsis

๐Ÿ’œ Description

๐Ÿ’œ new

๐Ÿ’œ ambient_pragmas

and the pragma-ish things it takes:

  • strict, $[, bytes, utf8, integer, re, warnings, hint_bits, warning_bits, %^H

๐Ÿ’œ coderef2text

BUGS

AUTHOR


๐ŸŒˆ B::Op_private โ€” OP op_private flag definitions

SYNOPSIS

DESCRIPTION

the four hashes, no notes, no drama:

  • %bits
  • %defines
  • %labels
  • %ops_using

โญ B::Showlex โ€” Show lexical variables used in functions or files

SYNOPSIS

DESCRIPTION

EXAMPLES

๐ŸŽ€ OPTIONS

SEE ALSO

TODO

AUTHOR


๐Ÿงš B::Terse โ€” Walk Perl syntax tree, printing terse info about ops

SYNOPSIS

DESCRIPTION

AUTHOR


๐Ÿ’… B::Xref โ€” Generates cross reference reports for Perl programs

SYNOPSIS

DESCRIPTION

these four little symbols, exactly as written:

  • i, &, s, r

OPTIONS

  • "-oFILENAME", "-r", "-d", "-D[tO]"

BUGS

AUTHOR


๐Ÿ”ฅ Benchmark โ€” Benchmark running times of Perl code

SYNOPSIS

DESCRIPTION

โœจ Methods

  • new, debug, iters

โœจ Standard Exports

  • timeit(COUNT, CODE), timethis ( COUNT, CODE, [ TITLE, [ STYLE ]] ), timethese ( COUNT, CODEHASHREF, [ STYLE ] ), timediff ( T1, T2 ), timestr ( TIMEDIFF, [ STYLE, [ FORMAT ] ] )

โœจ Optional Exports

  • clearcache ( COUNT ), clearallcache ( ), cmpthese ( COUNT, CODEHASHREF, [ STYLE ] ), cmpthese ( RESULTSHASHREF, [ STYLE ] ), countit(TIME, CODE), disablecache ( ), enablecache ( ), timesum ( T1, T2 )

โœจ :hireswallclock

Benchmark Object

  • cpu_p, cpu_c, cpu_a, real, iters

NOTES

EXAMPLES

INHERITANCE

CAVEATS

SEE ALSO

AUTHORS

MODIFICATION HISTORY


๐Ÿ’– CORE โ€” Namespace for Perl's core routines

SYNOPSIS

DESCRIPTION

OVERRIDING CORE FUNCTIONS

AUTHOR

SEE ALSO


๐ŸŒธ CPAN โ€” query, download and build perl modules from CPAN sites

SYNOPSIS

DESCRIPTION

๐Ÿ’œ CPAN::shell([$prompt, $command]) Starting Interactive Mode

and inside that, all these sub-topics:

  • Searching for authors, bundles, distribution files and modules
  • "get", "make", "test", "install", "clean" modules or distributions
  • "readme", "perldoc", "look" module or distribution
  • "ls" author
  • "ls" globbing_expression
  • "failed"
  • Persistence between sessions
  • The "force" and the "fforce" pragma
  • Lockfile
  • Signals

okay so the CPAN.pm tour is STILL GOING and the command list literally has not stopped being iconic ๐Ÿ’… here's the rest of it bestie, no cap:

  • CPAN::Shell
  • autobundle
  • hosts
  • install_tested
  • is_tested
  • mkmyconfig
  • r [Module|/Regexp/]...
  • recent EXPERIMENTAL COMMAND
  • recompile
  • report Bundle|Distribution|Module
  • smoke EXPERIMENTAL COMMAND
  • upgrade [Module|/Regexp/]...
  • The four "CPAN::*" Classes: Author, Bundle, Module, Distribution
  • Integrating local directories
  • Redirection
  • Plugin support EXPERIMENTAL

๐Ÿ’– CONFIGURATION ๐Ÿ’–

the glow-up section fr fr, here's everything it covers:

  • completion support, displaying some help: o conf help
  • displaying current values: o conf [KEY]
  • changing of scalar values: o conf KEY VALUE
  • changing of list values: o conf KEY SHIFT|UNSHIFT|PUSH|POP|SPLICE|LIST
  • reverting to saved: o conf defaults
  • saving the config: o conf commit

โœจ Config Variables โœจ

  • "o conf <scalar option>"
  • "o conf <scalar option> <value>"
  • "o conf <list option>"
  • "o conf <list option> [shift|pop]"
  • "o conf <list option> [unshift|push|splice] <list>"
  • interactive editing: o conf init [MATCH|LIST]

๐ŸŒ€ CPAN::anycwd($path): Note on config variable getcwd

  • cwd
  • getcwd
  • fastcwd
  • getdcwd
  • backtickcwd

๐Ÿ“ Note on the format of the urllist parameter

๐Ÿ“€ The urllist parameter has CD-ROM support

๐Ÿ”ง Maintaining the urllist parameter

๐Ÿงฉ The "requires" and "build_requires" dependency declarations

๐Ÿšง Configuration of the allow_installing_* parameters

๐ŸŽ€ Configuration for individual distributions (Distroprefs)

๐Ÿ“‚ Filenames

๐Ÿ” Fallback Data::Dumper and Storable

๐Ÿ“˜ Blueprint

๐Ÿ—ฃ๏ธ Language Specs

  • comment [scalar]
  • cpanconfig [hash]
  • depends [hash] * EXPERIMENTAL FEATURE *
  • disabled [boolean]
  • features [array] * EXPERIMENTAL FEATURE *
  • goto [string]
  • install [hash]
  • make [hash]
  • match [hash]
  • patches [array]
  • pl [hash]
  • test [hash]

โš™๏ธ Processing Instructions

  • args [array]
  • commandline
  • eexpect [hash]
  • env [hash]
  • expect [array]

๐Ÿ” Schema verification with "Kwalify"

๐Ÿ—‚๏ธ Example Distroprefs Files


๐Ÿง‘โ€๐Ÿ’ป PROGRAMMER'S INTERFACE ๐Ÿง‘โ€๐Ÿ’ป

  • expand($type,@things)
  • expandany(@things)
  • Programming Examples

๐Ÿ› ๏ธ Methods in the other Classes

okay this list is long but every single one of them is here, i promise ๐Ÿซถ

  • CPAN::Author::as_glimpse(), CPAN::Author::as_string(), CPAN::Author::email(), CPAN::Author::fullname(), CPAN::Author::name()
  • CPAN::Bundle::as_glimpse(), CPAN::Bundle::as_string(), CPAN::Bundle::clean(), CPAN::Bundle::contains(), CPAN::Bundle::force($method,@args), CPAN::Bundle::get(), CPAN::Bundle::inst_file(), CPAN::Bundle::inst_version(), CPAN::Bundle::uptodate(), CPAN::Bundle::install(), CPAN::Bundle::make(), CPAN::Bundle::readme(), CPAN::Bundle::test()
  • CPAN::Distribution::as_glimpse(), CPAN::Distribution::as_string(), CPAN::Distribution::author, CPAN::Distribution::pretty_id(), CPAN::Distribution::base_id(), CPAN::Distribution::clean(), CPAN::Distribution::containsmods(), CPAN::Distribution::cvs_import(), CPAN::Distribution::dir(), CPAN::Distribution::force($method,@args), CPAN::Distribution::get(), CPAN::Distribution::install(), CPAN::Distribution::isa_perl(), CPAN::Distribution::look(), CPAN::Distribution::make(), CPAN::Distribution::perldoc(), CPAN::Distribution::prefs(), CPAN::Distribution::prereq_pm(), CPAN::Distribution::readme(), CPAN::Distribution::reports(), CPAN::Distribution::read_yaml(), CPAN::Distribution::test(), CPAN::Distribution::uptodate()
  • CPAN::Index::force_reload(), CPAN::Index::reload()
  • CPAN::InfoObj::dump()
  • CPAN::Module::as_glimpse(), CPAN::Module::as_string(), CPAN::Module::clean(), CPAN::Module::cpan_file(), CPAN::Module::cpan_version(), CPAN::Module::cvs_import(), CPAN::Module::description(), CPAN::Module::distribution(), CPAN::Module::dslip_status(), CPAN::Module::force($method,@args), CPAN::Module::get(), CPAN::Module::inst_file(), CPAN::Module::available_file(), CPAN::Module::inst_version(), CPAN::Module::available_version(), CPAN::Module::install(), CPAN::Module::look(), CPAN::Module::make(), CPAN::Module::manpage_headline(), CPAN::Module::perldoc(), CPAN::Module::readme(), CPAN::Module::reports(), CPAN::Module::test(), CPAN::Module::uptodate(), CPAN::Module::userid()

๐Ÿ—ƒ๏ธ Cache Manager

๐ŸŽ Bundles


๐ŸŒŸ PREREQUISITES ๐ŸŒŸ

๐Ÿงฐ UTILITIES ๐Ÿงฐ

๐Ÿ”Ž Finding packages and VERSION

๐Ÿ› Debugging

  • o debug package..
  • o debug -package..
  • o debug all
  • o debug number

๐Ÿ’พ Floppy, Zip, Offline Mode

๐Ÿงช Basic Utilities for Programmers

  • has_inst($module)
  • use_inst($module)
  • has_usable($module)
  • instance($module)
  • frontend()
  • frontend($new_frontend)

๐Ÿ” SECURITY ๐Ÿ”

โœ๏ธ Cryptographically signed modules

๐Ÿ“ค EXPORT ๐Ÿ“ค

๐ŸŒ ENVIRONMENT ๐ŸŒ

๐Ÿ“ฆ POPULATE AN INSTALLATION WITH LOTS OF MODULES ๐Ÿ“ฆ

๐Ÿงฑ WORKING WITH CPAN.pm BEHIND FIREWALLS ๐Ÿงฑ

๐Ÿšง Three basic types of firewalls

  • http firewall
  • ftp firewall
  • One-way visibility
  • SOCKS
  • IP Masquerade

๐Ÿˆ Configuring lynx or ncftp for going through a firewall


๐ŸŽ€ FAQ ๐ŸŽ€

  • 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)

๐Ÿ”„ COMPATIBILITY ๐Ÿ”„

๐Ÿฆ• OLD PERL VERSIONS

๐Ÿงก CPANPLUS

๐Ÿ’š CPANMINUS

๐Ÿ›ก๏ธ SECURITY ADVICE ๐Ÿ›ก๏ธ

๐Ÿ’€ BUGS ๐Ÿ’€

โœ๏ธ AUTHOR โœ๏ธ

๐Ÿ“œ LICENSE ๐Ÿ“œ

๐ŸŒ TRANSLATIONS ๐ŸŒ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


๐Ÿ“ CPAN::API::HOWTO โ€” a recipe book for programming with CPAN.pm

  • RECIPES
    • What distribution contains a particular module?
    • What modules does a particular distribution contain?
  • SEE ALSO
  • LICENSE
  • AUTHOR

๐Ÿž CPAN::Debug โ€” internal debugging for CPAN.pm

  • LICENSE

๐ŸŽฏ CPAN::Distroprefs -- read and match distroprefs

  • SYNOPSIS
  • DESCRIPTION
  • INTERFACE
    • a CPAN::Distroprefs::Result object, "undef", indicating that no prefs files remain to be found
  • RESULTS
    • Common
    • Errors
    • Successes
  • PREFS
  • LICENSE

๐ŸŒฑ CPAN::FirstTime โ€” Utility for CPAN::Config file Initialization

  • SYNOPSIS
  • DESCRIPTION

and then the iconic config variable roster, every single one, bestie:

  • allow_installing_module_downgrades, allow_installing_outdated_dists, auto_commit, build_cache, build_dir, build_dir_reuse, build_requires_install_policy, cache_metadata
  • check_sigs, cleanup_after_install, colorize_output, colorize_print, colorize_warn, colorize_debug, commandnumber_in_prompt, connect_to_internet_ok
  • ftp_passive, ftpstats_period, ftpstats_size, getcwd, halt_on_failure, histfile, histsize, inactivity_timeout
  • index_expire, inhibit_startup_message, keep_source_where, load_module_verbosity, makepl_arg, make_arg, make_install_arg, make_install_make_command
  • mbuildpl_arg, mbuild_arg, mbuild_install_arg, mbuild_install_build_command, pager, prefer_installer, prefs_dir, prerequisites_policy
  • pushy_https, randomize_urllist, recommends_policy, scan_cache, shell, show_unparsable_versions, show_upload_date, show_zero_versions
  • suggests_policy, tar_verbosity, term_is_latin, term_ornaments, test_report, perl5lib_verbosity, prefer_external_tar, trust_test_report_history
  • urllist_ping_external, urllist_ping_verbose, use_prompt_default, use_sqlite, version_timeout, yaml_load_code, yaml_module
  • LICENSE

๐Ÿง  CPAN::HandleConfig โ€” internal configuration handling for CPAN.pm

  • "CLASS->safe_quote ITEM"
  • LICENSE

โœ… CPAN::Kwalify โ€” Interface between CPAN.pm and Kwalify.pm

  • SYNOPSIS
  • DESCRIPTION
    • _validate($schema_name, $data, $file, $doc), yaml($schema_name)
  • AUTHOR
  • LICENSE

๐Ÿ—‚๏ธ CPAN::Meta โ€” the distribution metadata for a CPAN dist

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • new
    • create
    • load_file
    • load_yaml_string
    • load_json_string
    • load_string
    • save
    • meta_spec_version
    • effective_prereqs
    • should_index_file
    • should_index_package
    • features
    • feature
    • as_struct
    • as_string
  • STRING DATA
  • LIST DATA
  • MAP DATA
  • CUSTOM DATA
  • BUGS
  • SEE ALSO
  • SUPPORT
    • Bugs / Feature Requests
    • Source Code
  • AUTHORS
  • CONTRIBUTORS
  • COPYRIGHT AND LICENSE

๐Ÿ”„ CPAN::Meta::Converter โ€” Convert CPAN distribution metadata structures

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • new
    • convert
    • upgrade_fragment
  • BUGS
  • AUTHORS
  • COPYRIGHT AND LICENSE

โญ CPAN::Meta::Feature โ€” an optional feature provided by a CPAN distribution

  • VERSION
  • DESCRIPTION
  • METHODS
    • new
    • identifier
    • description
    • prereqs
  • BUGS
  • AUTHORS
  • COPYRIGHT AND LICENSE

๐Ÿ“š CPAN::Meta::History โ€” history of CPAN Meta Spec changes

  • VERSION
  • DESCRIPTION
  • HISTORY
    • Version 2
    • Version 1.4
    • Version 1.3
    • Version 1.2
    • Version 1.1
    • Version 1.0
  • AUTHORS
  • COPYRIGHT AND LICENSE

๐Ÿ•ฐ๏ธ CPAN::Meta::History::Meta_1_0 โ€” Version 1.0 metadata specification for META.yml

  • PREFACE
  • DESCRIPTION
  • Format
  • Fields
    • name, version, license, perl, gpl, lgpl, artistic, bsd, open_source, unrestricted, restrictive, distribution_type, requires, recommends, build_requires, conflicts, dynamic_config, generated_by
  • Related Projects
    • DOAP
  • History

๐Ÿ•ฐ๏ธ CPAN::Meta::History::Meta_1_1 โ€” Version 1.1 metadata specification for META.yml

  • PREFACE
  • DESCRIPTION
  • Format
  • Fields
    • name, version, license, perl, gpl, lgpl, artistic, bsd, open_source, unrestricted, restrictive, license_uri, distribution_type, private, requires, recommends, build_requires, conflicts, dynamic_config, generated_by
    • Ingy's suggestions
      • short_description, description, maturity, author_id, owner_id, categorization, keyword, chapter_id, URL for further information, namespaces
  • History

๐Ÿ•ฐ๏ธ CPAN::Meta::History::Meta_1_2 โ€” Version 1.2 metadata specification for META.yml

  • PREFACE
  • SYNOPSIS
  • DESCRIPTION
  • FORMAT
  • TERMINOLOGY
    • distribution
    • module
  • VERSION SPECIFICATIONS
  • HEADER
  • FIELDS
    • meta-spec
    • name
    • version
    • abstract
    • author
    • license
      • perl, gpl, lgpl, artistic, bsd, open_source, unrestricted, restrictive
    • distribution_type
    • requires
    • recommends
    • build_requires
    • conflicts
    • dynamic_config
    • private
    • provides
    • no_index
    • keywords
    • resources
      • homepage, license, bugtracker
    • generated_by

(still deep in the module from before, bestie โ€” its SEE ALSO and HISTORY are the last two things it's got, so here they are, no heading repeat, we just slide right in ๐Ÿ’…)

  • SEE ALSO
  • HISTORY
    • March 14, 2003 (Pi day), May 8, 2003, November 13, 2003, November 16, 2003, December 9, 2003, December 15, 2003, July 26, 2005, August 23, 2005

okay and now we're into the metadata-spec history era of this TOC and honestly? it's giving archivists. two whole snapshots of the old META.yml spec, side by side, so you can see exactly what got added when. ๐Ÿซถ

  • CPAN::Meta::History::Meta_1_3 โ€” the version 1.3 metadata spec for META.yml
    • PREFACE
    • SYNOPSIS
    • DESCRIPTION
    • FORMAT
    • TERMINOLOGY
      • distribution, module
    • HEADER
    • FIELDS
      • meta-spec
      • name
      • version
      • abstract
      • author
      • license
        • apache, artistic, bsd, gpl, lgpl, mit, mozilla, open_source, perl, restrictive, unrestricted
      • distribution_type
      • requires
      • recommends
      • build_requires
      • conflicts
      • dynamic_config
      • private
      • provides
      • no_index
      • keywords
      • resources
        • homepage, license, bugtracker
      • generated_by
    • VERSION SPECIFICATIONS
    • SEE ALSO
    • HISTORY
      • March 14, 2003 (Pi day), May 8, 2003, November 13, 2003, November 16, 2003, December 9, 2003, December 15, 2003, July 26, 2005, August 23, 2005
  • CPAN::Meta::History::Meta_1_4 โ€” the version 1.4 metadata spec for META.yml
    • PREFACE
    • SYNOPSIS
    • DESCRIPTION
    • FORMAT
    • TERMINOLOGY
      • distribution, module
    • HEADER
    • FIELDS
      • meta-spec
      • name
      • version
      • abstract
      • author
      • license
        • apache, artistic, bsd, gpl, lgpl, mit, mozilla, open_source, perl, restrictive, unrestricted
      • distribution_type
      • requires
      • recommends
      • build_requires
      • configure_requires
      • conflicts
      • dynamic_config
      • private
      • provides
      • no_index
      • keywords
      • resources
        • homepage, license, bugtracker
      • generated_by
    • VERSION SPECIFICATIONS
    • SEE ALSO
    • HISTORY
      • March 14, 2003 (Pi day), May 8, 2003, November 13, 2003, November 16, 2003, December 9, 2003, December 15, 2003, July 26, 2005, August 23, 2005, June 12, 2007
notice the glow-up between 1.3 and 1.4? configure_requires showed up in FIELDS and a whole extra date โ€” June 12, 2007 โ€” landed in HISTORY. that's the whole diff, no cap. โœจ

and now the CPAN::Meta squad proper. five modules, all about describing a distribution before anyone even builds it. it's the group chat of metadata. ๐Ÿ˜Œ

  • CPAN::Meta::Merge โ€” merging CPAN Meta fragments
    • VERSION
    • SYNOPSIS
    • DESCRIPTION
    • METHODS
      • new
      • merge(@fragments)
    • MERGE STRATEGIES
      • identical, set_addition, uniq_map, improvise
    • AUTHORS
    • COPYRIGHT AND LICENSE
  • CPAN::Meta::Prereqs โ€” a set of distribution prerequisites by phase and type
    • VERSION
    • DESCRIPTION
    • METHODS
      • new
      • requirements_for
      • phases
      • types_in
      • with_merged_prereqs
      • merged_requirements
      • as_string_hash
      • is_finalized
      • finalize
      • clone
    • BUGS
    • AUTHORS
    • COPYRIGHT AND LICENSE
  • CPAN::Meta::Requirements โ€” a set of version requirements for a CPAN dist
    • VERSION
    • SYNOPSIS
    • DESCRIPTION
    • METHODS
      • new
      • add_minimum
      • add_maximum
      • add_exclusion
      • exact_version
      • version_range_for_module
      • add_requirements
      • accepts_module
      • clear_requirement
      • requirements_for_module
      • structured_requirements_for_module
      • required_modules
      • clone
      • is_simple
      • is_finalized
      • finalize
      • as_string_hash
      • add_string_requirement
        • >= 1.3, <= 1.3, != 1.3, > 1.3, < 1.3, >= 1.3, != 1.5, <= 2.0
      • from_string_hash
    • SUPPORT
      • Bugs / Feature Requests
      • Source Code
    • AUTHORS
    • CONTRIBUTORS
    • COPYRIGHT AND LICENSE
  • CPAN::Meta::Requirements::Range โ€” a set of version requirements for a CPAN dist
    • VERSION
    • SYNOPSIS
    • DESCRIPTION
    • METHODS
      • with_string_requirement
        • >= 1.3, <= 1.3, != 1.3, > 1.3, < 1.3, >= 1.3, != 1.5, <= 2.0
      • with_range
      • with_exact_version
      • with_minimum
      • with_maximum
      • with_exclusion
      • as_struct
      • as_string
      • accepts
      • is_simple
    • AUTHORS
    • COPYRIGHT AND LICENSE
  • CPAN::Meta::Spec โ€” the specification for CPAN distribution metadata
    • VERSION
    • SYNOPSIS
    • DESCRIPTION
    • TERMINOLOGY
      • distribution, module, package, consumer, producer, must, should, may, etc
    • DATA TYPES
      • Boolean
      • String
      • List
      • Map
      • License String
      • URL
      • Version
      • Version Range
    • STRUCTURE
      • REQUIRED FIELDS
        • version, url, stable, testing, unstable
      • OPTIONAL FIELDS
        • file, directory, package, namespace, description, prereqs, file, version, homepage, license, bugtracker, repository
      • DEPRECATED FIELDS
    • VERSION NUMBERS
      • Version Formats
        • Decimal versions, Dotted-integer versions
      • Version Ranges
    • PREREQUISITES
      • Prereq Spec
        • configure, build, test, runtime, develop, requires, recommends, suggests, conflicts
      • Merging and Resolving Prerequisites
    • SERIALIZATION
    • NOTES FOR IMPLEMENTORS
      • Extracting Version Numbers from Perl Modules
      • Comparing Version Numbers
      • Prerequisites for dynamically configured distributions
      • Indexing distributions a la PAUSE
    • SEE ALSO
    • HISTORY
    • AUTHORS
    • COPYRIGHT AND LICENSE
  • CPAN::Meta::Validator โ€” validate CPAN distribution metadata structures
    • VERSION
    • SYNOPSIS
    • DESCRIPTION
    • METHODS
      • new
      • is_valid
      • errors
      • Check Methods
      • Validator Methods
    • BUGS
    • AUTHORS
    • COPYRIGHT AND LICENSE
  • CPAN::Meta::YAML โ€” read and write a subset of YAML for CPAN Meta files
    • VERSION
    • SYNOPSIS
    • DESCRIPTION
    • SUPPORT
    • SEE ALSO
    • AUTHORS
    • CONTRIBUTOR
    • COPYRIGHT AND LICENSE
shoutout to OPTIONAL FIELDS up there listing file twice โ€” yes bestie, it really does, we are not fixing it, we are reporting it. ๐Ÿ’€

then there's this next block, and ngl its module header didn't ride along in this chunk, but the section list is fully here so let's just lay it out. it's very "mirror directory, but make it a class". ๐ŸŒˆ

  • SYNOPSIS
  • DESCRIPTION
  • new( LOCAL_FILE_NAME )
  • continents()
  • countries( [CONTINENTS] )
  • mirrors( [COUNTRIES] )
  • get_mirrors_by_countries( [COUNTRIES] )
  • get_mirrors_by_continents( [CONTINENTS] )
  • get_countries_by_continents( [CONTINENTS] )
  • default_mirror
  • best_mirrors
  • get_n_random_mirrors_by_continents( N, [CONTINENTS] )
  • get_mirrors_timings( MIRROR_LIST, SEEN, CALLBACK, %ARGS );
  • find_best_continents( HASH_REF );
  • AUTHOR
  • LICENSE

back to the CPAN::* utility shelf โ€” the little helpers nobody thinks about but everybody depends on. ๐Ÿงš

  • CPAN::Nox โ€” a wrapper around CPAN.pm that doesn't use any XS module
    • SYNOPSIS
    • DESCRIPTION
    • LICENSE
    • SEE ALSO
  • CPAN::Plugin โ€” the base class for CPAN shell extensions
    • SYNOPSIS
    • DESCRIPTION
      • Alpha Status
      • How Plugins work?
    • METHODS
      • plugin_requires
      • distribution_object
      • distribution
      • distribution_info
      • build_dir
      • is_xs
    • AUTHOR
  • CPAN::Plugin::Specfile โ€” a proof of concept implementation of a trivial CPAN::Plugin
    • SYNOPSIS
    • DESCRIPTION
      • OPTIONS
    • AUTHOR
  • CPAN::Queue โ€” internal queue support for CPAN.pm
    • LICENSE
  • CPAN::Tarzip โ€” internal handling of tar archives for CPAN.pm
    • LICENSE
  • CPAN::Version โ€” utility functions to compare CPAN versions
    • SYNOPSIS
    • DESCRIPTION
    • LICENSE

and NOW, bestie, the moment the whole TOC has been building toward: Carp. ๐ŸŽ€ it's the reason your error messages have a whole little story about who called whom. iconic. no notes.

  • Carp โ€” alternative warn and die for modules
    • SYNOPSIS
    • DESCRIPTION
      • Forcing a Stack Trace
      • Stack Trace formatting
    • GLOBAL VARIABLES
      • $Carp::MaxEvalLen
      • $Carp::MaxArgLen
      • $Carp::MaxArgNums
      • $Carp::Verbose
      • $Carp::RefArgFormatter
      • @CARP_NOT
      • %Carp::Internal
      • %Carp::CarpInternal
      • $Carp::CarpLevel
    • BUGS
    • SEE ALSO
    • CONTRIBUTING
    • AUTHOR
    • COPYRIGHT AND LICENSE
  • Class::Struct โ€” declare struct-like datatypes as Perl classes
    • SYNOPSIS
    • DESCRIPTION
      • The struct() function
      • Class Creation at Compile Time
      • Element Types and Accessor Methods
        • Scalar ('$' or '*$'), Array ('@' or '*@'), Hash ('%' or '*%'), Class ('Class_Name' or '*Class_Name')
      • Initializing with "new"
    • EXAMPLES
      • Example 1, Example 2, Example 3
    • Author and Modification History

finally, the Compress::Raw corner โ€” straight-up low-level bindings, the kind of thing that makes you feel like you're holding the compression library with your bare hands. ๐Ÿ’œ

  • Compress::Raw::Bzip2 โ€” low-level interface to the bzip2 compression library
    • SYNOPSIS
    • DESCRIPTION
    • Compression
      • ($z, $status) = new Compress::Raw::Bzip2 $appendOutput, $blockSize100k, $workfactor;
        • $appendOutput, $blockSize100k, $workfactor
      • $status = $bz->bzdeflate($input, $output);
      • $status = $bz->bzflush($output);
      • $status = $bz->bzclose($output);
      • Example
    • Uncompression
      • ($z, $status) = new Compress::Raw::Bunzip2 $appendOutput, $consumeInput, $small, $verbosity, $limitOutput;
        • $appendOutput, $consumeInput, $small, $limitOutput, $verbosity
      • $status = $z->bzinflate($input, $output);
    • Misc
      • my $version = Compress::Raw::Bzip2::bzlibversion();
    • Constants
    • SUPPORT
    • SEE ALSO
    • AUTHOR
    • MODIFICATION HISTORY
    • COPYRIGHT AND LICENSE
  • Compress::Raw::Zlib โ€” low-level interface to the zlib or zlib-ng compression library
    • SYNOPSIS
    • DESCRIPTION
    • Compress::Raw::Zlib::Deflate
      • ($d, $status) = new Compress::Raw::Zlib::Deflate( [OPT] )
        • -Level, -Method, -WindowBits, -MemLevel, -Strategy, -Dictionary, -Bufsize, -AppendOutput, -CRC32, -ADLER32
      • $status = $d->deflate($input, $output)
      • $status = $d->flush($output [, $flush_type])
      • $status = $d->deflateReset()
      • $status = $d->deflateParams([OPT])
        • -Level, -Strategy, -BufSize
      • $status = $d->deflateTune($good_length, $max_lazy, $nice_length, $max_chain)
      • $d->dict_adler()
      • $d->crc32()
      • $d->adler32()
      • $d->msg()
      • $d->total_in()
      • $d->total_out()
      • $d->get_Strategy()
      • $d->get_Level()
      • $d->get_Bufsize()
      • Example
    • Compress::Raw::Zlib::Inflate
      • ($i, $status) = new Compress::Raw::Zlib::Inflate( [OPT] )
        • -WindowBits, -Bufsize, -Dictionary, -AppendOutput, -CRC32, -ADLER32, -ConsumeInput, -LimitOutput
      • $status = $i->inflate($input, $output [,$eof])
      • $status = $i->inflateSync($input)
      • $status = $i->inflateReset()
      • $i->dict_adler()
      • $i->crc32()
      • $i->adler32()
      • $i->msg()
      • $i->total_in()
      • $i->total_out()
      • $d->get_Bufsize()
      • Examples
    • CHECKSUM FUNCTIONS
    • Misc
      • my $version = Compress::Raw::Zlib::zlib_version();
      • my $version = Compress::Raw::Zlib::zlibng_version();
      • my $flags = Compress::Raw::Zlib::zlibCompileFlags();
      • is_zlib_native(); =head2 is_zlibng_native(); =head2 is_zlibng_compat(); =head2 is_zlibng();
    • The LimitOutput option.
    • ACCESSING ZIP FILES
    • FAQ
      • Compatibility with Unix compress/uncompress.
      • Accessing .tar.Z files
      • Zlib Library Version Support
    • CONSTANTS
    • SUPPORT
    • SEE ALSO
    • AUTHOR
    • MODIFICATION HISTORY
    • COPYRIGHT AND LICENSE

Compress::Zlib โ€” Interface to zlib compression library ๐Ÿซถ

bestie, this one is the zlib serve โ€” a whole compression library interface โ€” and it comes with a lil family of subsections, so we're listing every single one, no skipping, periodt ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
    • Notes for users of Compress::Zlib version 1
  • GZIP INTERFACE ๐ŸŒธ
    • $gz = gzopen($filename, $mode)
    • $gz = gzopen($filehandle, $mode)
    • $bytesread = $gz->gzread($buffer [, $size]) ;
    • $bytesread = $gz->gzreadline($line) ;
    • $byteswritten = $gz->gzwrite($buffer) ;
    • $status = $gz->gzflush($flush_type) ;
    • $offset = $gz->gztell() ;
    • $status = $gz->gzseek($offset, $whence) ;
    • $gz->gzclose
    • $gz->gzsetparams($level, $strategy, $level, $strategy, $gz->gzerror, $gzerrno
    • Examples
    • Compress::Zlib::memGzip
    • Compress::Zlib::memGunzip
  • COMPRESS/UNCOMPRESS ๐ŸŽ€
    • $dest = compress($source [, $level] ) ;
    • $dest = uncompress($source) ;
  • Deflate Interface ๐Ÿฆ‹
    • ($d, $status) = deflateInit( [OPT] )
      • -Level, -Method, -WindowBits, -MemLevel, -Strategy, -Dictionary, -Bufsize
    • ($out, $status) = $d->deflate($buffer)
    • ($out, $status) = $d->flush() =head2 ($out, $status) = $d->flush($flush_type)
    • $status = $d->deflateParams([OPT])
      • -Level, -Strategy
    • $d->dict_adler()
    • $d->msg()
    • $d->total_in()
    • $d->total_out()
    • Example
  • Inflate Interface ๐Ÿงš
    • ($i, $status) = inflateInit()
      • -WindowBits, -Bufsize, -Dictionary
    • ($out, $status) = $i->inflate($buffer)
    • $status = $i->inflateSync($buffer)
    • $i->dict_adler()
    • $i->msg()
    • $i->total_in()
    • $i->total_out()
    • Example
  • CHECKSUM FUNCTIONS ๐Ÿ’œ
  • Misc ๐Ÿ“
    • my $version = Compress::Zlib::zlib_version();
  • CONSTANTS
  • SUPPORT
  • SEE ALSO
  • AUTHOR
  • MODIFICATION HISTORY
  • COPYRIGHT AND LICENSE

Config ๐Ÿฆ‹

okay so bestie, lowkey important heads-up before anything else, no cap:

๐Ÿ’€ this whole file is Generated by configpm. Any changes made here will be lost! โ€” so do NOT hand-edit it, it'll just get wiped, fr fr ๐Ÿ˜ญ
  • SYNOPSIS
  • DESCRIPTION
    • myconfig()
    • config_sh()
    • config_re($regex)
    • config_vars(@names)
    • bincompat_options()
    • non_bincompat_options()
    • compile_date()
    • local_patches()
    • header_files()
  • EXAMPLE
  • WARNING โš ๏ธ
  • GLOSSARY ๐Ÿ“–

and then the glossary is literally just an alphabetical vibe check of every config variable, grouped by first letter, so let's go letter by letter, the way that the alphabet intended โœจ

  • P โ€” "PERL_API_REVISION", "PERL_API_SUBVERSION", "PERL_API_VERSION", "PERL_CONFIG_SH", "PERL_PATCHLEVEL", "PERL_REVISION", "PERL_SUBVERSION", "PERL_VERSION"
  • _ โ€” "_a", "_exe", "_o"
  • a โ€” "afs", "afsroot", "alignbytes", "aphostname", "api_revision", "api_subversion", "api_version", "api_versionstring", "ar", "archlib", "archlibexp", "archname", "archname64", "archobjs", "asctime_r_proto", "awk"
  • b โ€” "baserev", "bash", "bin", "bin_ELF", "binexp", "bison", "byacc", "byteorder"
  • c โ€” "c", "castflags", "cat", "cc", "cccdlflags", "ccdlflags", "ccflags", "ccflags_uselargefiles", "ccname", "ccsymbols", "ccversion", "cf_by", "cf_email", "cf_time", "charbits", "charsize", "chgrp", "chmod", "chown", "clocktype", "comm", "compiler_warning", "compress", "config_arg0", "config_argc", "config_args", "contains", "cp", "cpio", "cpp", "cpp_stuff", "cppccsymbols", "cppflags", "cpplast", "cppminus", "cpprun", "cppstdin", "cppsymbols", "crypt_r_proto", "cryptlib", "csh", "ctermid_r_proto", "ctime_r_proto"

okay bestie we are STILL in the d_ pile and honestly she has stamina ๐Ÿ’… no shade, this list is a whole personality. keep your eyes on the code blocks, the names are the names, I'm not touching a single character:

d_Gconvert
d_PRIEUldbl
d_PRIFUldbl
d_PRIGUldbl
d_PRIXU64
d_PRId64
d_PRIeldbl
d_PRIfldbl
d_PRIgldbl
d_PRIi64
d_PRIo64
d_PRIu64
d_PRIx64
d_SCNfldbl

the PRI girlies and their one SCN bestie ๐ŸŽ€ iconic little format-macro family, no notes.

d__fwalk
d_accept4
d_access
d_accessx
d_acosh
d_aintl
d_alarm
d_archlib
d_asctime64
d_asctime_r
d_asinh
d_atanh
d_atolf
d_atoll

and then the attribute section, which is lowkey the most main-character block in here:

d_attribute_always_inline
d_attribute_deprecated
d_attribute_format
d_attribute_malloc
d_attribute_nonnull
d_attribute_noreturn
d_attribute_pure
d_attribute_unused
d_attribute_visibility
d_attribute_warn_unused_result
d_backtrace
d_bsd
d_bsdgetpgrp
d_bsdsetpgrp
d_builtin_add_overflow
d_builtin_choose_expr
d_builtin_expect
d_builtin_mul_overflow
d_builtin_sub_overflow
d_c99_variadic_macros
d_casti32
d_castneg
d_cbrt
d_chown
d_chroot
d_chsize
d_class
d_clearenv
d_closedir
d_cmsghdr_s
d_copysign
d_copysignl
d_cplusplus
d_crypt
d_crypt_r
d_csh
d_ctermid
d_ctermid_r
d_ctime64
d_ctime_r
d_cuserid

the d_builtin_* ones?? math girlies eating, no cap โœจ

d_dbminitproto
d_difftime
d_difftime64
d_dir_dd_fd
d_dirfd
d_dirnamlen
d_dladdr
d_dlerror
d_dlopen
d_dlsymun
d_dosuid
d_double_has_inf
d_double_has_nan
d_double_has_negative_zero
d_double_has_subnormals
d_double_style_cray
d_double_style_ibm
d_double_style_ieee
d_double_style_vax
d_drand48_r
d_drand48proto
d_dup2
d_dup3
d_duplocale
d_eaccess
d_endgrent
d_endgrent_r
d_endhent
d_endhostent_r
d_endnent
d_endnetent_r
d_endpent
d_endprotoent_r
d_endpwent
d_endpwent_r
d_endsent
d_endservent_r
d_eofnblk
d_erf
d_erfc
d_eunice
d_exp2
d_expm1

not the d_double_style_* quartet, it's giving four-way vibe check ๐Ÿฆ‹ and the d_end* run is just chef's kiss commitment.

d_faststdio
d_fchdir
d_fchmod
d_fchmodat
d_fchown
d_fcntl
d_fcntl_can_lock
d_fd_macros
d_fd_set
d_fdclose
d_fdim
d_fdopendir
d_fds_bits
d_fegetround
d_ffs
d_ffsl
d_fgetpos
d_finite
d_finitel
d_flexfnam
d_flock
d_flockproto
d_fma
d_fmax
d_fmin
d_fork
d_fp_class
d_fp_classify
d_fp_classl
d_fpathconf
d_fpclass
d_fpclassify
d_fpclassl
d_fpgetround
d_fpos64_t
d_freelocale
d_frexpl
d_fs_data_s
d_fseeko
d_fsetpos
d_fstatfs
d_fstatvfs
d_fsync
d_ftello
d_ftime
d_futimes

the d_f block is SO long, she's the friend who sends 47 texts in a row and honestly? respect ๐Ÿ’š

d_gai_strerror
d_gdbm_ndbm_h_uses_prototypes
d_gdbmndbm_h_uses_prototypes
d_getaddrinfo
d_getcwd
d_getenv_preserves_other_thread
d_getespwnam
d_getfsstat
d_getgrent
d_getgrent_r
d_getgrgid_r
d_getgrnam_r
d_getgrps
d_gethbyaddr
d_gethbyname
d_gethent
d_gethname
d_gethostbyaddr_r
d_gethostbyname_r
d_gethostent_r
d_gethostprotos
d_getitimer
d_getlogin
d_getlogin_r
d_getmnt
d_getmntent
d_getnameinfo
d_getnbyaddr
d_getnbyname
d_getnent
d_getnetbyaddr_r
d_getnetbyname_r
d_getnetent_r
d_getnetprotos
d_getpagsz
d_getpbyname
d_getpbynumber
d_getpent
d_getpgid
d_getpgrp
d_getpgrp2
d_getppid
d_getprior
d_getprotobyname_r
d_getprotobynumber_r
d_getprotoent_r
d_getprotoprotos
d_getprpwnam
d_getpwent
d_getpwent_r
d_getpwnam_r
d_getpwuid_r
d_getsbyname
d_getsbyport
d_getsent
d_getservbyname_r
d_getservbyport_r
d_getservent_r
d_getservprotos
d_getspnam
d_getspnam_r
d_gettimeod
d_gmtime64
d_gmtime_r
d_gnulibc

okay the d_get* marathon?? bestie she does NOT stop ๐Ÿ˜ญ and I love that for her. note that both d_gdbm_ndbm_h_uses_prototypes AND d_gdbmndbm_h_uses_prototypes are in here โ€” two of them!! do not merge them, do not "fix" them, they are BOTH valid and BOTH staying ๐Ÿซถ

d_grpasswd
d_has_C_UTF8
d_hasmntopt
d_htonl
d_hypot
d_ilogb
d_ilogbl
d_inc_version_list
d_inetaton
d_inetntop
d_inetpton
d_int64_t
d_ip_mreq
d_ip_mreq_source
d_ipv6_mreq
d_ipv6_mreq_source
d_isascii
d_isblank
d_isfinite
d_isfinitel
d_isinf
d_isinfl
d_isless
d_isnan
d_isnanl
d_isnormal
d_j0
d_j0l
d_killpg
d_lc_monetary_2008
d_lchown
d_ldbl_dig
d_ldexpl
d_lgamma
d_lgamma_r
d_libm_lib_version
d_libname_unique
d_link
d_linkat
d_llrint
d_llrintl
d_llround
d_llroundl
d_localeconv_l
d_localtime64
d_localtime_r
d_localtime_r_needs_tzset
d_locconv
d_lockf
d_log1p
d_log2
d_logb
d_long_double_style_ieee
d_long_double_style_ieee_doubledouble
d_long_double_style_ieee_extended
d_long_double_style_ieee_std
d_long_double_style_vax
d_longdbl
d_longlong
d_lrint
d_lrintl
d_lround
d_lroundl
d_lseekproto
d_lstat

the d_long_double_style_* set is literally a five-part series, and d_long_double_style_ieee_doubledouble is the longest name here and she KNOWS it ๐Ÿ‘‘

d_madvise
d_malloc_good_size
d_malloc_size
d_malloc_usable_size
d_mblen
d_mbrlen
d_mbrtowc
d_mbstowcs
d_mbtowc
d_memmem
d_memrchr
d_mkdir
d_mkdtemp
d_mkfifo
d_mkostemp
d_mkstemp
d_mkstemps
d_mktime
d_mktime64
d_mmap
d_modfl
d_modflproto
d_mprotect
d_msg
d_msg_ctrunc
d_msg_dontroute
d_msg_oob
d_msg_peek
d_msg_proxy
d_msgctl
d_msgget
d_msghdr_s
d_msgrcv
d_msgsnd
d_msync
d_munmap
d_mymalloc
d_nan
d_nanosleep
d_ndbm
d_ndbm_h_uses_prototypes
d_nearbyint
d_newlocale
d_nextafter
d_nexttoward
d_nice
d_nl_langinfo
d_nl_langinfo_l
d_non_int_bitfields
d_nv_preserves_uv
d_nv_zero_is_allbits_zero
d_off64_t
d_old_pthread_create_joinable
d_oldpthreads
d_oldsock
d_open3
d_openat
d_pathconf
d_pause
d_perl_lc_all_category_positions_init
d_perl_lc_all_separator
d_perl_lc_all_uses_name_value_pairs
d_perl_otherlibdirs
d_phostname
d_pipe
d_pipe2
d_poll
d_portable
d_prctl
d_prctl_set_name
d_printf_format_null

the d_mkstemp / d_mkstemps / d_mkostemp trioโ€ฆ sisters, not twins, don't mix them up ๐Ÿ’š and d_msg* really said "we're a whole friend group".

d_procselfexe
d_pseudofork
d_pthread_atfork
d_pthread_attr_setscope
d_pthread_yield
d_ptrdiff_t
d_pwage
d_pwchange
d_pwclass
d_pwcomment
d_pwexpire
d_pwgecos
d_pwpasswd
d_pwquota
d_qgcvt
d_quad
d_querylocale
d_random_r
d_re_comp
d_readdir
d_readdir64_r
d_readdir_r
d_readlink
d_readv
d_recvmsg
d_regcmp
d_regcomp
d_remainder
d_remquo
d_rename
d_renameat
d_rewinddir
d_rint
d_rmdir
d_round
d_sbrkproto
d_scalbn
d_scalbnl
d_sched_yield
d_scm_rights
d_seekdir
d_select
d_sem
d_semctl
d_semctl_semid_ds
d_semctl_semun
d_semget
d_semop
d_sendmsg
d_setegid
d_setenv
d_seteuid
d_setgrent
d_setgrent_r
d_setgrps
d_sethent
d_sethostent_r
d_setitimer
d_setlinebuf
d_setlocale
d_setlocale_accepts_any_locale_name
d_setlocale_r
d_setnent
d_setnetent_r
d_setpent
d_setpgid
d_setpgrp
d_setpgrp2
d_setprior
d_setproctitle
d_setprotoent_r
d_setpwent
d_setpwent_r
d_setregid
d_setresgid
d_setresuid
d_setreuid
d_setrgid
d_setruid
d_setsent
d_setservent_r
d_setsid

the d_pw* block is giving very "old system file fields" energy and I am OBSESSED ๐ŸŒธ also d_setlocale_accepts_any_locale_name is a whole sentence in a variable name, she's the overachiever.

d_setvbuf
d_shm
d_shmat
d_shmatprototype
d_shmctl
d_shmdt
d_shmget
d_sigaction
d_siginfo_si_addr
d_siginfo_si_band
d_siginfo_si_errno
d_siginfo_si_fd
d_siginfo_si_pid
d_siginfo_si_status
d_siginfo_si_uid
d_siginfo_si_value
d_signbit
d_sigprocmask
d_sigsetjmp
d_sin6_scope_id
d_sitearch
d_snprintf
d_sockaddr_in6
d_sockaddr_sa_len
d_sockaddr_storage
d_sockatmark
d_sockatmarkproto
d_socket
d_socklen_t
d_sockpair
d_socks5_init
d_sqrtl
d_srand48_r
d_srandom_r
d_sresgproto
d_sresuproto
d_stat
d_statblks
d_statfs_f_flags
d_statfs_s
d_static_inline
d_statvfs
d_stdio_cnt_lval
d_stdio_ptr_lval
d_stdio_ptr_lval_nochange_cnt
d_stdio_ptr_lval_sets_cnt
d_stdio_stream_array
d_stdiobase
d_stdstdio
d_strcoll
d_strerror_l
d_strerror_r
d_strftime
d_strlcat
d_strlcpy
d_strnlen
d_strtod
d_strtod_l
d_strtol
d_strtold
d_strtold_l
d_strtoll
d_strtoq
d_strtoul
d_strtoull
d_strtouq
d_strxfrm
d_strxfrm_l
d_suidsafe
d_symlink
d_syscall
d_syscallproto
d_sysconf
d_sysernlst
d_syserrlst
d_system

the d_siginfo_si_* run is EIGHT of them, eight!! a whole octet ๐ŸŽ€ and the d_stdio_ptr_lval* trio is out here with the longest suffixes. not d_stdio_ptr_lval_nochange_cnt and d_stdio_ptr_lval_sets_cnt being opposites, they're enemies to lovers fr ๐Ÿ’œ

d_tcgetpgrp
d_tcsetpgrp
d_telldir
d_telldirproto
d_tgamma
d_thread_local
d_time
d_timegm
d_times
d_tm_tm_gmtoff
d_tm_tm_zone
d_tmpnam_r
d_towlower
d_towupper
d_trunc
d_truncate
d_truncl
d_ttyname_r
d_tzname
d_u32align
d_ualarm
d_umask
d_uname
d_union_semun
d_unlinkat
d_unordered
d_unsetenv
d_uselocale
d_usleep
d_usleepproto
d_ustat
d_vendorarch
d_vendorbin
d_vendorlib
d_vendorscript
d_vfork
d_void_closedir
d_voidsig
d_voidtty
d_vsnprintf
d_wait4
d_waitpid
d_wcrtomb
d_wcscmp
d_wcstombs
d_wcsxfrm
d_wctomb
d_writev
d_xenix
date
db_hashtype
db_prefixtype
db_version_major
db_version_minor
db_version_patch
default_inc_excludes_dot
direntrytype
dlext
dlsrc
doubleinfbytes
doublekind
doublemantbits
doublenanbytes
doublesize
drand01
drand48_r_proto
dtrace
dtraceobject
dtracexnolibs
dynamic_ext

and THAT, bestie, is the end of the d_ run โ€” she finally put her phone down. then we pivot into the lowercase letters and they're way shorter, breathe ๐Ÿ’š


e

eagain
ebcdic
echo
egrep
emacs
endgrent_r_proto
endhostent_r_proto
endnetent_r_proto
endprotoent_r_proto
endpwent_r_proto
endservent_r_proto
eunicefix
exe_ext
expr
extensions
extern_C
extras

the e girlies came in, said their piece, and left. short king energy ๐Ÿ‘‘


f

fflushNULL
fflushall
find
firstmakefile
flex
fpossize
fpostype
freetype
from
full_ar
full_csh
full_sed

note fflushNULL with the capital NULL right there in the middle โ€” do NOT lowercase it, do NOT "clean it up", it is exactly that ๐Ÿ’…


g

gccansipedantic
gccosandvers
gccversion
getgrent_r_proto
getgrgid_r_proto
getgrnam_r_proto
gethostbyaddr_r_proto
gethostbyname_r_proto
gethostent_r_proto
getlogin_r_proto
getnetbyaddr_r_proto
getnetbyname_r_proto
getnetent_r_proto
getprotobyname_r_proto
getprotobynumber_r_proto
getprotoent_r_proto
getpwent_r_proto
getpwnam_r_proto
getpwuid_r_proto
getservbyname_r_proto
getservbyport_r_proto
getservent_r_proto
getspnam_r_proto
gidformat
gidsign
gidsize
gidtype
glibpth
gmake
gmtime_r_proto
gnulibc_version
grep
groupcat
groupstype
gzip

the whole get*_r_proto squad all in one place โ€” it's giving a class photo ๐Ÿ“ธ every single one ends in _r_proto, no stragglers, we love consistency.


h

h_fcntl
h_sysfile
hint
hostcat
hostgenerate
hostosname
hostperl
html1dir
html1direxp
html3dir
html3direxp

and that's the h block closing out this chunk โ€” the html1dir/html1direxp and html3dir/html3direxp pairs are matching sets, absolutely coordinated ๐Ÿฆ‹

๐Ÿ’œ i

okay the i block is unhinged in the best way โ€” it's giving "every header you have ever met, plus every install path ever" energy:

  • "i16size", "i16type", "i32dformat", "i32size", "i32type", "i64size", "i64type", "i8size", "i8type", "i_arpainet", "i_bfd", "i_bsdioctl", "i_crypt", "i_db", "i_dbm", "i_dirent", "i_dlfcn", "i_execinfo", "i_fcntl", "i_fenv", "i_fp", "i_fp_class", "i_gdbm", "i_gdbm_ndbm", "i_gdbmndbm", "i_grp", "i_ieeefp", "i_inttypes", "i_langinfo", "i_libutil", "i_locale", "i_machcthr", "i_malloc", "i_mallocmalloc", "i_mntent", "i_ndbm", "i_netdb", "i_neterrno", "i_netinettcp", "i_niin", "i_poll", "i_prot", "i_pthread", "i_pwd", "i_quadmath", "i_rpcsvcdbm", "i_sgtty", "i_shadow", "i_socks", "i_stdbool", "i_stdint", "i_stdlib", "i_sunmath", "i_sysaccess", "i_sysdir", "i_sysfile", "i_sysfilio", "i_sysin", "i_sysioctl", "i_syslog", "i_sysmman", "i_sysmode", "i_sysmount", "i_sysndir", "i_sysparam", "i_syspoll", "i_sysresrc", "i_syssecrt", "i_sysselct", "i_syssockio", "i_sysstat", "i_sysstatfs", "i_sysstatvfs", "i_syssyscall", "i_systime", "i_systimek", "i_systimes", "i_systypes", "i_sysuio", "i_sysun", "i_sysutsname", "i_sysvfs", "i_syswait", "i_termio", "i_termios", "i_time", "i_unistd", "i_ustat", "i_utime", "i_vfork", "i_wchar", "i_wctype", "i_xlocale"
  • "ignore_versioned_solibs", "inc_version_list", "inc_version_list_init", "incpath", "incpth", "inews", "initialinstalllocation", "installarchlib", "installbin", "installhtml1dir", "installhtml3dir", "installman1dir", "installman3dir", "installprefix", "installprefixexp", "installprivlib", "installscript", "installsitearch", "installsitebin", "installsitehtml1dir", "installsitehtml3dir", "installsitelib", "installsiteman1dir", "installsiteman3dir", "installsitescript", "installstyle", "installusrbinperl", "installvendorarch", "installvendorbin", "installvendorhtml1dir", "installvendorhtml3dir", "installvendorlib", "installvendorman1dir", "installvendorman3dir", "installvendorscript", "intsize", "issymlink", "ivdformat", "ivsize", "ivtype"

๐ŸŒธ k

short and sweet, two lil besties:

  • "known_extensions", "ksh"

๐Ÿฆ‹ l

the linker-and-library zone, lowkey iconic:

  • "ld", "ld_can_script", "lddlflags", "ldflags", "ldflags_uselargefiles", "ldlibpthname", "less", "lib_ext", "libc", "libperl", "libpth", "libs", "libsdirs", "libsfiles", "libsfound", "libspath", "libswanted", "libswanted_uselargefiles", "line", "lint", "lkflags", "ln", "lns", "localtime_r_proto", "locincpth", "loclibpth", "longdblinfbytes", "longdblkind", "longdblmantbits", "longdblnanbytes", "longdblsize", "longlongsize", "longsize", "lp", "lpr", "ls", "lseeksize", "lseektype"

๐ŸŽ€ m

mail, make, man, malloc, mystery (jk there's no mystery, it's all right here):

  • "mail", "mailx", "make", "make_set_make", "mallocobj", "mallocsrc", "malloctype", "man1dir", "man1direxp", "man1ext", "man3dir", "man3direxp", "man3ext", "mips_type", "mistrustnm", "mkdir", "mmaptype", "modetype", "more", "multiarch", "mv", "myarchname", "mydomain", "myhostname", "myuname"

โญ n

netdb, nm, nv formats โ€” nerd central and we love her:

  • "n", "need_va_copy", "netdb_hlen_type", "netdb_host_type", "netdb_name_type", "netdb_net_type", "nm", "nm_opt", "nm_so_opt", "nonxs_ext", "nroff", "nvEUformat", "nvFUformat", "nvGUformat", "nv_overflows_integers_at", "nv_preserves_uv_bits", "nveformat", "nvfformat", "nvgformat", "nvmantbits", "nvsize", "nvtype"

๐Ÿ”ฅ o

options and os stuff, periodt:

  • "o_nonblock", "obj_ext", "old_pthread_create_joinable", "optimize", "orderlib", "osname", "osvers", "otherlibdirs"

๐Ÿ’– p

the p pile, and yes it's long โ€” perl paths for days:

  • "package", "pager", "passcat", "patchlevel", "path_sep", "perl", "perl5", "perl_lc_all_category_positions_init", "perl_lc_all_separator", "perl_patchlevel", "perl_static_inline", "perl_thread_local", "perladmin", "perllibs", "perlpath", "pg", "phostname", "pidtype", "plibpth", "pmake", "pr", "prefix", "prefixexp", "privlib", "privlibexp", "procselfexe", "ptrsize"

๐Ÿงš q

two (2) items. tiny. perfect:

  • "quadkind", "quadtype"

๐Ÿ’… r

rand, readdir, rm โ€” the "just do the thing" section:

  • "randbits", "randfunc", "random_r_proto", "randseedtype", "ranlib", "rd_nodata", "readdir64_r_proto", "readdir_r_proto", "revision", "rm", "rm_try", "rmail", "run", "runnm"

โœจ s

okay bestie the s block is massive and it ate, no notes:

  • "sGMTIME_max", "sGMTIME_min", "sLOCALTIME_max", "sLOCALTIME_min", "sPRIEUldbl", "sPRIFUldbl", "sPRIGUldbl", "sPRIXU64", "sPRId64", "sPRIeldbl", "sPRIfldbl", "sPRIgldbl", "sPRIi64", "sPRIo64", "sPRIu64", "sPRIx64", "sSCNfldbl", "sched_yield", "scriptdir", "scriptdirexp", "sed", "seedfunc", "selectminbits", "selecttype", "sendmail", "setgrent_r_proto", "sethostent_r_proto", "setlocale_r_proto", "setnetent_r_proto", "setprotoent_r_proto", "setpwent_r_proto", "setservent_r_proto", "sh", "shar", "sharpbang", "shmattype", "shortsize", "shrpenv", "shsharp", "sig_count", "sig_name", "sig_name_init", "sig_num", "sig_num_init", "sig_size", "signal_t", "sitearch", "sitearchexp", "sitebin", "sitebinexp", "sitehtml1dir", "sitehtml1direxp", "sitehtml3dir", "sitehtml3direxp", "sitelib", "sitelib_stem", "sitelibexp", "siteman1dir", "siteman1direxp", "siteman3dir", "siteman3direxp", "siteprefix", "siteprefixexp", "sitescript", "sitescriptexp", "sizesize", "sizetype", "sleep", "smail", "so", "sockethdr", "socketlib", "socksizetype", "sort", "spackage", "spitshell", "srand48_r_proto", "srandom_r_proto", "src", "ssizetype", "st_dev_sign", "st_dev_size", "st_ino_sign", "st_ino_size", "startperl", "startsh", "static_ext", "stdchar", "stdio_base", "stdio_bufsiz", "stdio_cnt", "stdio_filbuf", "stdio_ptr", "stdio_stream_array", "strerror_r_proto", "submit", "subversion", "sysman", "sysroot"

๐ŸŒˆ t

tools and types, we stay tooling:

  • "tail", "taint_disabled", "taint_support", "tar", "targetarch", "targetdir", "targetenv", "targethost", "targetmkdir", "targetport", "targetsh", "tbl", "tee", "test", "timeincl", "timetype", "tmpnam_r_proto", "to", "touch", "tr", "trnl", "troff", "ttyname_r_proto"

๐Ÿ‘‘

๐Ÿ‘‘ u

the use* section, aka the "which features did we turn on" vibe check:

  • "u16size", "u16type", "u32XUformat", "u32oformat", "u32size", "u32type", "u32uformat", "u32xformat", "u64size", "u64type", "u8size", "u8type", "uidformat", "uidsign", "uidsize", "uidtype", "uname", "uniq", "uquadtype", "use64bitall", "use64bitint", "usecbacktrace", "usecrosscompile", "usedefaultstrict", "usedevel", "usedl", "usedtrace", "usefaststdio", "useithreads", "usekernprocpathname", "uselanginfo", "uselargefiles", "uselongdouble", "usemallocwrap", "usemorebits", "usemultiplicity", "usemymalloc", "usenm", "usensgetexecutablepath", "useopcode", "useperlio", "useposix", "usequadmath", "usereentrant", "userelocatableinc", "useshrplib", "usesitecustomize", "usesocks", "usethreads", "usevendorprefix", "useversionedarchname", "usevfork", "usrinc", "uuname", "uvXUformat", "uvoformat", "uvsize", "uvtype", "uvuformat", "uvxformat"

๐Ÿ“ v

vendor paths + version, the classic:

  • "vendorarch", "vendorarchexp", "vendorbin", "vendorbinexp", "vendorhtml1dir", "vendorhtml1direxp", "vendorhtml3dir", "vendorhtml3direxp", "vendorlib", "vendorlib_stem", "vendorlibexp", "vendorman1dir", "vendorman1direxp", "vendorman3dir", "vendorman3direxp", "vendorprefix", "vendorprefixexp", "vendorscript", "vendorscriptexp", "version", "version_patchlevel_string", "versiononly", "vi"

๐Ÿซถ x

  • "xlibpth", "xlocale_needed"

๐Ÿ™ˆ y

  • "yacc", "yaccflags"

๐Ÿ’€ z

and that's the alphabet, we did it bestie:

  • "zcat", "zip"

๐ŸŒŸ GIT DATA

๐ŸŒŸ NOTE


๐Ÿ’– Config::Extensions - hash lookup of which core extensions were built.

๐ŸŽ€ SYNOPSIS

๐ŸŽ€ DESCRIPTION

the three flavors you might see in here:

  • dynamic
  • nonxs
  • static

๐ŸŽ€ AUTHOR


๐Ÿ’œ Config::Perl::V - Structured data retrieval of perl -V output

โœจ SYNOPSIS

โœจ DESCRIPTION

  • $conf = myconfig ()
  • $conf = plv2hash ($text [, ...])
  • $info = summary ([$conf])
  • $md5 = signature ([$conf])

๐ŸŒธ The hash structure

  • build, osname, stamp, options, derived, patches, environment, config, inc

โœจ REASONING

โœจ BUGS

โœจ TODO

โœจ AUTHOR


๐Ÿฆ‹ Cwd - get pathname of current working directory

๐Ÿ’… SYNOPSIS

๐Ÿ’… DESCRIPTION

๐ŸŽ€ getcwd and friends

  • getcwd, cwd, fastcwd, fastgetcwd, getdcwd

๐ŸŽ€ abs_path and friends

  • abs_path, realpath, fast_abs_path

๐ŸŽ€ $ENV{PWD}

๐Ÿ’… NOTES

๐Ÿ’… AUTHOR

๐Ÿ’… SEE ALSO


๐Ÿ”ฅ DB - programmatic interface to the Perl debugging API

โญ SYNOPSIS

โญ DESCRIPTION

๐Ÿ’– Global Variables

  • $DB::sub, %DB::sub, $DB::single, $DB::signal, $DB::trace, @DB::args, @DB::dbline, %DB::dbline, $DB::package, $DB::filename, $DB::subname, $DB::lineno

๐Ÿ’– API Methods

  • CLIENT->register(), CLIENT->evalcode(STRING), CLIENT->skippkg('D::hide'), CLIENT->run(), CLIENT->step(), CLIENT->next(), CLIENT->done()

๐Ÿ’– Client Callback Methods

  • CLIENT->init(), CLIENT->prestop([STRING]), CLIENT->stop(), CLIENT->idle(), CLIENT->poststop([STRING]), CLIENT->evalcode(STRING), CLIENT->cleanup(), CLIENT->output(LIST)

โญ BUGS

โญ AUTHOR


๐ŸŒˆ DBM_Filter -- Filter DBM keys/values

๐Ÿงš SYNOPSIS

๐Ÿงš DESCRIPTION

๐Ÿ“ What is a DBM Filter?

๐Ÿ“ So what's new?

๐Ÿงš METHODS

๐Ÿ“ $db->Filter_Push() / $db->Filter_Key_Push() / $db->Filter_Value_Push()

๐Ÿ“ Filter_Push, Filter_Key_Push, Filter_Value_Push

๐Ÿ“ $db->Filter_Pop()

๐Ÿ“ $db->Filtered()

๐Ÿ“ Writing a Filter

๐Ÿ“ Immediate Filters

๐Ÿ“ Canned Filters

  • "name", params

๐Ÿ“ Filters Included

  • utf8, encode, compress, int32, null

๐Ÿงš NOTES

๐Ÿ“ Maintain Round Trip Integrity

๐Ÿ“ Don't mix filtered & non-filtered data in the same database file.

๐Ÿงš EXAMPLE

๐Ÿงš SEE ALSO

๐Ÿงš AUTHOR


๐Ÿ‘‘ DBM_Filter::compress - filter for DBM_Filter

๐Ÿ’– SYNOPSIS

๐Ÿ’– DESCRIPTION

๐Ÿ’– SEE ALSO

๐Ÿ’– AUTHOR


๐Ÿ‘‘ DBM_Filter::encode - filter for DBM_Filter

๐Ÿ’– SYNOPSIS

๐Ÿ’– DESCRIPTION

๐Ÿ’– SEE ALSO

๐Ÿ’– AUTHOR


๐Ÿ‘‘ DBM_Filter::int32 - filter for DBM_Filter

๐Ÿ’– SYNOPSIS

๐Ÿ’– DESCRIPTION

๐Ÿ’– SEE ALSO

๐Ÿ’– AUTHOR


๐Ÿ‘‘ DBM_Filter::null - filter for DBM_Filter

๐Ÿ’– SYNOPSIS

๐Ÿ’– DESCRIPTION

๐Ÿ’– SEE ALSO

๐Ÿ’– AUTHOR


๐Ÿ‘‘ DBM_Filter::utf8 - filter for DBM_Filter

๐Ÿ’– SYNOPSIS

๐Ÿ’– DESCRIPTION

๐Ÿ’– SEE ALSO

๐Ÿ’– AUTHOR


๐Ÿ’€ DB_File - Perl5 access to Berkeley DB version 1.x

โœจ SYNOPSIS

โœจ DESCRIPTION

the three DB flavors, right off the bat:

  • DB_HASH, DB_BTREE, DB_RECNO

๐ŸŒธ Using DB_File with Berkeley DB version 2 or greater

๐ŸŒธ Interface to Berkeley DB

๐ŸŒธ Opening a Berkeley DB Database File

๐ŸŒธ Default Parameters

๐ŸŒธ In Memory Databases

โœจ DB_HASH

๐ŸŽ€ A Simple Example

โœจ DB_BTREE

๐ŸŽ€ Changing the BTREE sort order

๐ŸŽ€ Handling Duplicate Keys

๐ŸŽ€ The get_dup() Method

๐ŸŽ€ The find_dup() Method

๐ŸŽ€ The del_dup() Method

๐ŸŽ€ Matching Partial Keys

โœจ DB_RECNO

๐ŸŽ€ The 'bval' Option

๐ŸŽ€ A Simple Example

๐ŸŽ€ Extra RECNO Methods

  • $X->push(list) ;
  • $value = $X->pop ;
  • $X->shift
  • $X->unshift(list) ;
  • $X->length
  • $X->splice(offset, length, elements);

๐ŸŽ€ Another Example

  • THE API INTERFACE โ€” the whole method lineup, bestie, right here:
$status = $X->get($key, $value [, $flags]) ;
$status = $X->put($key, $value [, $flags]) ;
$status = $X->del($key [, $flags]) ;
$status = $X->fd ;
$status = $X->seq($key, $value, $flags) ;
$status = $X->sync([$flags]) ;
  • DBM FILTERS
    • DBM Filter Low-level API โ€” the four little legends: filter_store_key, filter_store_value, filter_fetch_key, filter_fetch_value
    • The Filter ๐Ÿซถ
    • An Example -- the NULL termination problem.
    • Another Example -- Key is a C int.
  • HINTS AND TIPS
    • Locking: The Trouble with fd โ€” yes, the drama
    • Safe ways to lock a database
      • Tie::DB_Lock, Tie::DB_LockFile, DB_File::Lock โ€” pick your fighter ๐Ÿ’…
    • Sharing Databases With C Applications
    • The untie() Gotcha โ€” not a vibe, but you gotta know
  • COMMON QUESTIONS
    • Why is there Perl source in my database?
    • How do I store complex data structures with DB_File?
    • What does "wide character in subroutine entry" mean?
    • What does "Invalid Argument" mean?
    • What does "Bareword 'DB_File' not allowed" mean?
  • REFERENCES
  • HISTORY
  • BUGS
  • SUPPORT
  • AVAILABILITY
  • COPYRIGHT
  • SEE ALSO
  • AUTHOR

Data::Dumper โ€” stringified perl data structures, suitable for both printing and eval ๐Ÿ’–

  • SYNOPSIS
  • DESCRIPTION
    • Methods
      • PACKAGE->new(ARRAYREF [, ARRAYREF]), $OBJ->Dump or PACKAGE->Dump(ARRAYREF [, ARRAYREF]), $OBJ->Seen([HASHREF]), $OBJ->Values([ARRAYREF]), $OBJ->Names([ARRAYREF]), $OBJ->Reset
    • Functions
      • Dumper(LIST)
    • Configuration Variables or Methods
    • Exports
      • Dumper
  • EXAMPLES
  • BUGS
    • NOTE
  • AUTHOR
  • VERSION
  • SEE ALSO

Devel::PPPort โ€” Perl/Pollution/Portability โœจ

  • SYNOPSIS
  • Start using Devel::PPPort for XS projects
  • DESCRIPTION
    • Why use ppport.h?
    • How to use ppport.h
    • Running ppport.h
  • FUNCTIONS
    • WriteFile
    • GetFileContents
  • COMPATIBILITY
    • Provided Perl compatibility API
    • Supported Perl API, sorted by version

okay so this next bit is a whole wall of versions and honestly? iconic. every single one of these is in the list, no skips, we do not gatekeep:

perl 5.35.9, perl 5.35.8, perl 5.35.7, perl 5.35.6, perl 5.35.5, perl 5.35.4, perl 5.35.1, perl 5.33.8, perl 5.33.7, perl 5.33.5, perl 5.33.2, perl 5.32.1, perl 5.31.9, perl 5.31.7, perl 5.31.5, perl 5.31.4, perl 5.31.3, perl 5.29.10, perl 5.29.9, perl 5.27.11, perl 5.27.9, perl 5.27.8, perl 5.27.7, perl 5.27.6, perl 5.27.5, perl 5.27.4, perl 5.27.3, perl 5.27.2, perl 5.27.1, perl 5.25.11, perl 5.25.10, perl 5.25.9, perl 5.25.8, perl 5.25.7, perl 5.25.6, perl 5.25.5, perl 5.25.4, perl 5.25.3, perl 5.25.2, perl 5.25.1, perl 5.24.0, perl 5.23.9, perl 5.23.8, perl 5.23.6, perl 5.23.5, perl 5.23.2, perl 5.23.0, perl 5.21.10, perl 5.21.9, perl 5.21.8, perl 5.21.7, perl 5.21.6, perl 5.21.5, perl 5.21.4, perl 5.21.3, perl 5.21.2, perl 5.21.1, perl 5.19.10, perl 5.19.9, perl 5.19.7, perl 5.19.5, perl 5.19.4, perl 5.19.3, perl 5.19.2, perl 5.19.1, perl 5.18.0, perl 5.17.11, perl 5.17.8, perl 5.17.7, perl 5.17.6, perl 5.17.5, perl 5.17.4, perl 5.17.2, perl 5.17.1, perl 5.16.0, perl 5.15.8, perl 5.15.7, perl 5.15.6, perl 5.15.4, perl 5.15.3, perl 5.15.2, perl 5.15.1, perl 5.13.10, perl 5.13.9, perl 5.13.8, perl 5.13.7, perl 5.13.6, perl 5.13.5, perl 5.13.4, perl 5.13.3, perl 5.13.2, perl 5.13.1, perl 5.13.0, perl 5.11.5, perl 5.11.4, perl 5.11.2, perl 5.11.0, perl 5.10.1, perl 5.10.0, perl 5.9.5, perl 5.9.4, perl 5.9.3, perl 5.9.2, perl 5.9.1, perl 5.9.0, perl 5.8.9, perl 5.8.8, perl 5.8.3, perl 5.8.1, perl 5.8.0, perl 5.7.3, perl 5.7.2, perl 5.7.1, perl 5.7.0, perl 5.6.1, perl 5.6.0, perl 5.005_03, perl 5.005, perl 5.004_05, perl 5.004, perl 5.003_07 (or maybe earlier), and Backported version unknown

  • BUGS
  • AUTHORS
  • COPYRIGHT
  • SEE ALSO

Devel::Peek โ€” A data debugging tool for the XS programmer ๐Ÿ”

  • SYNOPSIS
  • DESCRIPTION
    • Runtime debugging
    • Memory footprint debugging
  • EXAMPLES
    • A simple scalar string
    • A simple scalar number
    • A simple scalar with an extra reference
    • A reference to a simple scalar
    • A reference to an array
    • A reference to a hash
    • Dumping a large array or hash
    • A reference to an SV which holds a C pointer
    • A reference to a subroutine
  • EXPORTS
  • BUGS
  • AUTHOR
  • SEE ALSO

Devel::SelfStubber โ€” generate stubs for a SelfLoading module ๐Ÿงš

  • SYNOPSIS
  • DESCRIPTION

Digest โ€” Modules that calculate message digests ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
    • binary, hex, base64
  • OO INTERFACE

these are the moves, bestie, memorise them:

$ctx = Digest->XXX($arg,...)
$ctx = Digest->new(XXX => $arg,...)
$ctx = Digest::XXX->new($arg,...)
$other_ctx = $ctx->clone
$ctx->reset
$ctx->add( $data )
$ctx->add( $chunk1, $chunk2, ... )
$ctx->addfile( $io_handle )
$ctx->add_bits( $data, $nbits )
$ctx->add_bits( $bitstring )
$ctx->digest
$ctx->hexdigest
$ctx->b64digest
$ctx->base64_padded_digest
  • Digest speed
  • SEE ALSO
  • AUTHOR

Digest::MD5 โ€” Perl interface to the MD5 Algorithm ๐ŸŒˆ

  • SYNOPSIS
  • DESCRIPTION
  • FUNCTIONS
    • md5($data,...), md5_hex($data,...), md5_base64($data,...)
  • METHODS
    • $md5 = Digest::MD5->new, $md5->reset, $md5->clone, $md5->add($data,...), $md5->addfile($io_handle), $md5->add_bits($data, $nbits), $md5->add_bits($bitstring), $md5->digest, $md5->hexdigest, $md5->b64digest, @ctx = $md5->context, $md5->context(@ctx)
  • EXAMPLES
  • SEE ALSO
  • COPYRIGHT
  • AUTHORS

Digest::SHA โ€” Perl extension for SHA-1/224/256/384/512 ๐Ÿ”

  • SYNOPSIS
  • SYNOPSIS (HMAC-SHA)
  • ABSTRACT
  • DESCRIPTION
  • UNICODE AND SIDE EFFECTS
  • NIST STATEMENT ON SHA-1
  • PADDING OF BASE64 DIGESTS
  • EXPORT
  • EXPORTABLE FUNCTIONS

okay this next list is long long but every single one matters, no cutting:

  • sha1($data, ...), sha224($data, ...), sha256($data, ...), sha384($data, ...), sha512($data, ...), sha512224($data, ...), sha512256($data, ...)
  • sha1_hex($data, ...), sha224_hex($data, ...), sha256_hex($data, ...), sha384_hex($data, ...), sha512_hex($data, ...), sha512224_hex($data, ...), sha512256_hex($data, ...)
  • sha1_base64($data, ...), sha224_base64($data, ...), sha256_base64($data, ...), sha384_base64($data, ...), sha512_base64($data, ...), sha512224_base64($data, ...), sha512256_base64($data, ...)
  • new($alg), reset($alg), hashsize, algorithm, clone, add($data, ...), add_bits($data, $nbits), add_bits($bits), addfile(*FILE), addfile($filename [, $mode]), getstate, putstate($str), dump($filename), load($filename), digest, hexdigest, b64digest
  • hmac_sha1($data, $key), hmac_sha224($data, $key), hmac_sha256($data, $key), hmac_sha384($data, $key), hmac_sha512($data, $key), hmac_sha512224($data, $key), hmac_sha512256($data, $key)
  • hmac_sha1_hex($data, $key), hmac_sha224_hex($data, $key), hmac_sha256_hex($data, $key), hmac_sha384_hex($data, $key), hmac_sha512_hex($data, $key), hmac_sha512224_hex($data, $key), hmac_sha512256_hex($data, $key)
  • hmac_sha1_base64($data, $key), hmac_sha224_base64($data, $key), hmac_sha256_base64($data, $key), hmac_sha384_base64($data, $key), hmac_sha512_base64($data, $key), hmac_sha512224_base64($data, $key), hmac_sha512256_base64($data, $key)
  • SEE ALSO
  • AUTHOR
  • ACKNOWLEDGMENTS
  • COPYRIGHT AND LICENSE

Digest::base โ€” Digest base class ๐ŸŽ€

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO

Digest::file โ€” Calculate digests of files ๐Ÿ“

  • SYNOPSIS
  • DESCRIPTION
    • digest_file( $file, $algorithm, [$arg,...] ), digest_file_hex( $file, $algorithm, [$arg,...] ), digest_file_base64( $file, $algorithm, [$arg,...] )
  • SEE ALSO

DirHandle โ€” (obsolete) supply object methods for directory handles ๐Ÿ’€

bestie. it says obsolete right there in the title. just so we're clear. ๐Ÿ™ˆ
  • SYNOPSIS
  • DESCRIPTION

Dumpvalue โ€” provides screen dump of Perl data. ๐Ÿ–ฅ๏ธ

  • SYNOPSIS
  • DESCRIPTION
    • Creation
      • "arrayDepth", "hashDepth", "compactDump", "veryCompact", "globPrint", "dumpDBFiles", "dumpPackages", "dumpReused", "tick", "quoteHighBit", "printUndef", "usageOnly", unctrl, subdump, bareStringify, quoteHighBit, stopDbSignal
    • Methods
      • dumpValue, dumpValues, stringify, dumpvars, set_quote, set_unctrl, compactDump, veryCompact, set, get

DynaLoader โ€” Dynamically load C libraries into Perl code โšก

  • SYNOPSIS
  • DESCRIPTION
    • @dl_library_path, @dl_resolve_using, @dl_require_symbols, @dl_librefs, @dl_modules, @dl_shared_objects, dl_error(), $dl_debug, $dl_dlext, dl_findfile(), dl_expandspec(), dl_load_file(), dl_unload_file(), dl_load_flags(), dl_find_symbol(), dl_find_symbol_anywhere(), dl_undef_symbols(), dl_install_xsub(), bootstrap()
  • AUTHOR

Encode โ€” character encodings in Perl ๐ŸŒ๐Ÿ’–

  • SYNOPSIS
    • Table of Contents
      • Encode::Alias - Alias definitions to encodings, Encode::Encoding - Encode Implementation Base Class, Encode::Supported - List of Supported Encodings, Encode::CN - Simplified Chinese Encodings, Encode::JP - Japanese Encodings, Encode::KR - Korean Encodings, Encode::TW - Traditional Chinese Encodings
  • DESCRIPTION
    • TERMINOLOGY
  • THE PERL ENCODING API
    • Basic methods
    • Listing available encodings
    • Defining Aliases
    • Finding IANA Character Set Registry names
  • Encoding via PerlIO
  • Handling Malformed Data
    • List of CHECK values
      • perlqq mode (CHECK = Encode::FB_PERLQQ), HTML charref mode (CHECK = Encode::FB_HTMLCREF), XML charref mode (CHECK = Encode::FB_XMLCREF)
    • coderef for CHECK
  • Defining Encodings
  • The UTF8 flag
    • Goal #1:, Goal #2:, Goal #3:, Goal #4:
    • Messing with Perl's Internals
  • UTF-8 vs. utf8 vs. UTF8
  • SEE ALSO
  • MAINTAINER
  • COPYRIGHT

Encode::Alias โ€” alias definitions to encodings ๐Ÿฆ‹

  • SYNOPSIS
  • DESCRIPTION
    • As a simple string, As a qr// compiled regular expression, e.g.:, As a code reference, e.g.:
    • Alias overloading
  • SEE ALSO

Encode::Byte โ€” Single Byte Encodings ๐Ÿ”ค

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • SEE ALSO

Encode::CJKConstants -- Internally used by Encode::??::ISO_2022_* ๐ŸŒธ


Encode::CN โ€” China-based Chinese Encodings ๐Ÿ‡จ๐Ÿ‡ณ

  • SYNOPSIS
  • DESCRIPTION
  • NOTES
  • BUGS
  • SEE ALSO

Encode::CN::HZ -- internally used by Encode::CN โœจ


Encode::Config -- internally used by Encode ๐ŸŽ€


Encode::EBCDIC โ€” EBCDIC Encodings ๐Ÿ’พ

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • SEE ALSO

Encode::Encoder -- Object Oriented Encoder ๐Ÿ‘‘

  • SYNOPSIS
  • ABSTRACT
  • Description
    • Predefined Methods
      • $e = Encode::Encoder->new([$data, $encoding]), encoder(), $e->data([$data]), $e->encoding([$encoding]), $e->bytes([$encoding])
  • Example: base64 transcoder โ€” a full worked example, lowkey a tutorial, we love to see it โœจ
  • Operator Overloading โ€” yes bestie, Encode does the fancy operator thing too ๐Ÿ’…
  • SEE ALSO โ€” the cross-refs, the receipts, the "go read these next" energy ๐ŸŽ€

Encode::Encoding - Encode Implementation Base Class

  • SYNOPSIS โ€” the lil sneak peek, always first, always demure
  • DESCRIPTION โ€” the whole plot, buckle up
    • Methods you should implement โ€” your homework, no skipping ๐Ÿ˜ค
      • ->encode($string [,$check]), ->decode($octets [,$check]), ->cat_decode($destination, $octets, $offset, $terminator [,$check])
    • Other methods defined in Encode::Encodings โ€” the freebies you inherit, so generous ๐Ÿซถ
      • ->name, ->mime_name, ->renew, ->renewed, ->perlio_ok(), ->needs_lines()
    • Example: Encode::ROT13 โ€” baby's first encoding, it's giving beginner-friendly ๐Ÿ’–
  • Why the heck Encode API is different? โ€” literally the question everyone asks, and yes the section title really is that dramatic ๐Ÿ˜ญ
    • Compiled Encodings
  • SEE ALSO
    • Scheme 1, Scheme 2, Other Schemes

Encode::GSM0338 -- ETSI GSM 03.38 Encoding

  • SYNOPSIS
  • DESCRIPTION
    • Septets โ€” the septet saga continues, iconic in its own niche way ๐Ÿ“ฑ
  • BUGS โ€” transparency section, we respect it ๐Ÿ’€
  • SEE ALSO

Encode::Guess -- Guesses encoding from data

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
    • Encode::Guess->set_suspects, Encode::Guess->add_suspects, Encode::decode("Guess" ...), Encode::Guess->guess($data), guess_encoding($data, [, list of suspects]) โ€” the whole suspect lineup, very detective-coded ๐Ÿ”
  • CAVEATS โ€” read this part bestie, fr fr
  • TO DO
  • SEE ALSO

Encode::JP - Japanese Encodings

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • Note on ISO-2022-JP(-1)? โ€” a note, with a question mark, very mysterious, very "iykyk" ๐Ÿ‘€
  • BUGS
  • SEE ALSO

Encode::JP::H2Z -- internally used by Encode::JP::2022_JP*

no subsections, just vibes, it's a backstage module ๐Ÿ’…


Encode::JP::JIS7 -- internally used by Encode::JP

also strictly behind-the-scenes, the crew nobody claps for but we appreciate them ๐Ÿซถ


Encode::KR - Korean Encodings

  • SYNOPSIS
  • DESCRIPTION
  • BUGS
  • SEE ALSO

Encode::KR::2022_KR -- internally used by Encode::KR

again, internal-only, the hidden helper energy โœจ


Encode::MIME::Header -- MIME encoding for an unstructured email header

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • BUGS
  • AUTHORS โ€” plural, it took a village ๐Ÿ˜๏ธ
  • SEE ALSO

Encode::MIME::Name, Encode::MIME::NAME -- internally used by Encode

  • SEE ALSO

Encode::PerlIO -- a detailed document on Encode and PerlIO

  • Overview
  • How does it work? โ€” the question we're all asking, and yes there's a whole section for it ๐ŸŒ€
  • Line Buffering
    • How can I tell whether my encoding fully supports PerlIO ? โ€” a whole subsection with a question mark, so real
  • SEE ALSO

Encode::Supported -- Encodings supported by Encode

  • DESCRIPTION
    • Encoding Names
  • Supported Encodings
    • Built-in Encodings
    • Encode::Unicode -- other Unicode encodings
    • Encode::Byte -- Extended ASCII
      • ISO-8859 and corresponding vendor mappings, KOI8 - De Facto Standard for the Cyrillic world
    • gsm0338 - Hentai Latin 1
      • gsm0338 support before 2.19 โ€” the pre-2.19 lore, for the historians ๐Ÿซก
    • CJK: Chinese, Japanese, Korean (Multibyte)
      • Encode::CN -- Continental China, Encode::JP -- Japan, Encode::KR -- Korea, Encode::TW -- Taiwan, Encode::HanExtra -- More Chinese via CPAN, Encode::JIS2K -- JIS X 0213 encodings via CPAN โ€” the whole CJK squad plus the CPAN extras, slay ๐ŸŒ
    • Miscellaneous encodings
      • Encode::EBCDIC, Encode::Symbol, Encode::MIME::Header, Encode::Guess
  • Unsupported encodings โ€” the "we don't do this here" list, tragic but honest ๐Ÿ˜”
    • ISO-2022-JP-2 [RFC1554], ISO-2022-CN [RFC1922], Various HP-UX encodings, Cyrillic encoding ISO-IR-111, ISO-8859-8-1 [Hebrew], ISIRI 3342, Iran System, ISIRI 2900 [Farsi], Thai encoding TCVN, Vietnamese encodings VPS, Various Mac encodings, (Mac) Indic encodings
  • Encoding vs. Charset -- terminology โ€” the terminology talk, essential for the discourse ๐Ÿ’ฌ
  • Encoding Classification (by Anton Tagunov and Dan Kogai)
    • Microsoft-related naming mess โ€” a whole subsection dedicated to the naming chaos, and honestly, fair ๐Ÿ˜ญ
      • KS_C_5601-1987, GB2312, Big5, Shift_JIS
  • Glossary
    • character repertoire, coded character set (CCS), character encoding scheme (CES), charset (in MIME context), EUC, ISO-2022, UCS, UCS-2, Unicode, UTF, UTF-16 โ€” the vocab list, study up bestie ๐Ÿ“š
  • See Also
  • References
    • ECMA, ECMA-035 (eq "ISO-2022"), IANA, Assigned Charset Names by IANA, ISO, RFC, UC, Unicode Glossary
    • Other Notable Sites
      • czyborra.com, CJK.inf, Jungshik Shin's Hangul FAQ, debian.org: "Introduction to i18n"
    • Offline sources
      • "CJKV Information Processing" by Ken Lunde โ€” yes, an actual physical book, vintage ๐Ÿ’€

Encode::Symbol - Symbol Encodings

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • SEE ALSO

Encode::TW - Taiwan-based Chinese Encodings

  • SYNOPSIS
  • DESCRIPTION
  • NOTES
  • BUGS
  • SEE ALSO

Encode::Unicode -- Various Unicode Transformation Formats

  • SYNOPSIS
  • ABSTRACT
  • Size, Endianness, and BOM โ€” the big three, the holy trinity of Unicode drama ๐Ÿ‘‘
    • by size
    • by endianness
      • BOM as integer when fetched in network byte order โ€” very specific, very niche, very iconic
  • Surrogate Pairs
  • Error Checking
  • SEE ALSO

Encode::Unicode::UTF7 -- UTF-7 encoding

  • SYNOPSIS
  • ABSTRACT
  • In Practice โ€” theory is cute but let's see it IRL โœจ
  • SEE ALSO

English - use nice English (or awk) names for ugly punctuation variables

  • SYNOPSIS
  • DESCRIPTION
  • PERFORMANCE

Env - perl module that imports environment variables as scalars or arrays

  • SYNOPSIS
  • DESCRIPTION
  • LIMITATIONS โ€” the fine print, read it bestie
  • AUTHOR

Errno - System errno constants

  • SYNOPSIS
  • DESCRIPTION
  • CAVEATS
  • AUTHOR
  • COPYRIGHT

Exporter - Implements default import method for modules

  • SYNOPSIS
  • DESCRIPTION
    • How to Export
    • Selecting What to Export
    • How to Import
      • "use YourModule;", "use YourModule ();", "use YourModule qw(...);" โ€” the three flavors of import, pick your fighter ๐ŸฅŠ
  • Advanced Features
    • Specialised Import Lists
    • Exporting Without Using Exporter's import Method
    • Exporting Without Inheriting from Exporter
    • Module Version Checking
    • Managing Unknown Symbols
    • Tag Handling Utility Functions
    • Generating Combined Tags
    • "AUTOLOAD"ed Constants โ€” yes the quotes around AUTOLOAD are part of it, so โœจspookyโœจ
  • Good Practices
    • Declaring @EXPORT_OK and Friends โ€” "and Friends" is doing so much heavy lifting and I love it ๐Ÿ’–
    • Playing Safe
    • What Not to Export
  • SEE ALSO
  • LICENSE

Exporter::Heavy - Exporter guts

  • SYNOPSIS
  • DESCRIPTION

  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • new, have_compiler, have_cplusplus, compile, "object_file", "include_dirs", "extra_compiler_flags", "C++", link, lib_file, module_name, extra_linker_flags, link_executable, exe_file, object_file, lib_file, exe_file, prelink, need_prelink, extra_link_args_after_prelink โ€” yes object_file, lib_file, and exe_file each show up twice, that's not a typo, that's the list ๐Ÿคท
  • TO DO
  • HISTORY
  • SUPPORT
  • AUTHOR
  • COPYRIGHT
  • SEE ALSO

ExtUtils::CBuilder::Platform::Windows - Builder class for Windows platforms

  • DESCRIPTION
  • AUTHOR
  • SEE ALSO

ExtUtils::Command - utilities to replace common UNIX commands in Makefiles etc.

  • SYNOPSIS
  • DESCRIPTION
    • FUNCTIONS
  • cat
  • eqtime
  • rm_rf
  • rm_f
  • touch
  • mv
  • cp
  • chmod
  • mkpath
  • test_f
  • test_d
  • dos2unix
  • SEE ALSO
  • AUTHOR

ExtUtils::Command::MM - Commands for the MM's to use in Makefiles

  • SYNOPSIS
  • DESCRIPTION
    • test_harness
  • pod2man
  • warn_if_old_packlist
  • perllocal_install
  • uninstall
  • test_s
  • cp_nonempty

ExtUtils::Constant - generate XS code to import C header constants

  • SYNOPSIS
  • DESCRIPTION
  • USAGE
    • IV, UV, NV, PV, PVN, SV, YES, NO, UNDEF โ€” the type roster, memorize it bestie ๐Ÿ“
  • FUNCTIONS
  • constant_types
  • XS_constant PACKAGE, TYPES, XS_SUBNAME, C_SUBNAME
  • autoload PACKAGE, VERSION, AUTOLOADER
  • WriteMakefileSnippet
  • WriteConstants ATTRIBUTE => VALUE [, ...], NAME, DEFAULT_TYPE, BREAKOUT_AT, NAMES, PROXYSUBS, C_FH, C_FILE, XS_FH, XS_FILE, XS_SUBNAME, C_SUBNAME
  • AUTHOR

ExtUtils::Constant::Base - base class for ExtUtils::Constant objects

  • SYNOPSIS
  • DESCRIPTION
  • USAGE
  • header
  • memEQ_clause args_hashref
  • dump_names arg_hashref, ITEM..
  • assign arg_hashref, VALUE..
  • return_clause arg_hashref, ITEM
  • switch_clause arg_hashref, NAMELEN, ITEMHASH, ITEM..
  • params WHAT
  • dogfood arg_hashref, ITEM.. โ€” yes there's literally a method called dogfood, eating its own cooking, king behavior ๐Ÿ‘‘
  • normalise_items args, default_type, seen_types, seen_items, ITEM..
  • C_constant arg_hashref, ITEM.., name, type, value, macro, default, pre, post, def_pre, def_post, utf8, weight
  • BUGS
  • AUTHOR

ExtUtils::Constant::Utils - helper functions for ExtUtils::Constant

  • SYNOPSIS
  • DESCRIPTION
  • USAGE
    • C_stringify NAME
  • perl_stringify NAME
  • AUTHOR

ExtUtils::Constant::XS - generate C code for XS modules' constants.

  • SYNOPSIS
  • DESCRIPTION
  • BUGS
  • AUTHOR

ExtUtils::Embed - Utilities for embedding Perl in C/C++ applications

  • SYNOPSIS
  • DESCRIPTION
  • @EXPORT
  • FUNCTIONS
    • xsinit(), Examples, ldopts(), Examples, perl_inc(), ccflags(), ccdlflags(), ccopts(), xsi_header(), xsi_protos(@modules), xsi_body(@modules) โ€” yes Examples appears twice in there, once after xsinit() and once after ldopts(), iconic duplication โœจ
  • EXAMPLES
  • SEE ALSO
  • AUTHOR

ExtUtils::Install - install files from here to there

  • SYNOPSIS
  • VERSION
  • DESCRIPTION
    • _chmod($$;$)
    • _warnonce(@)
    • _choke(@)
  • _move_file_at_boot( $file, $target, $moan ) โ€” yes those spaces around $moan are in the original, we preserve everything here ๐Ÿ’…
  • _unlink_or_rename( $file, $tryhard, $installing )
  • Functions
    • _get_install_skip
  • _have_write_access
  • _can_write_dir($dir)
  • _mkpath($dir,$show,$mode,$verbose,$dry_run)
  • _copy($from,$to,$verbose,$dry_run)
  • _chdir($from)
  • install
  • _do_cleanup
  • install_rooted_file( $file )
  • install_rooted_dir( $dir )
  • forceunlink( $file, $tryhard )
  • directory_not_empty( $dir )
  • install_default
  • uninstall
  • inc_uninstall($filepath,$libdir,$verbose,$dry_run,$ignore,$results)
  • run_filter($cmd,$src,$dest)
  • pm_to_blib
  • _autosplit
  • _invokant
  • ENVIRONMENT
    • PERL_INSTALL_ROOT, EU_INSTALL_IGNORE_SKIP, EU_INSTALL_SITE_SKIPFILE, EU_INSTALL_ALWAYS_COPY โ€” the env var squad, the secret knobs ๐Ÿ”ง
  • AUTHOR
  • LICENSE

ExtUtils::Installed - Inventory management of installed modules

  • SYNOPSIS
  • DESCRIPTION
  • USAGE
  • METHODS
    • new(), modules(), files(), directories(), directory_tree(), validate(), packlist(), version()
  • EXAMPLE
  • AUTHOR

ExtUtils::Liblist - determine libraries to use and how to use them

  • SYNOPSIS
  • DESCRIPTION
    • For static extensions, For dynamic extensions at build/link time, For dynamic extensions at load time โ€” three whole scenarios, pick your timeline โณ
    • EXTRALIBS
    • LDLOADLIBS and LD_RUN_PATH
    • BSLOADLIBS
  • PORTABILITY
    • VMS implementation
    • Win32 implementation
  • SEE ALSO

ExtUtils::MM - OS adjusted ExtUtils::MakeMaker subclass

  • SYNOPSIS
  • DESCRIPTION

ExtUtils::MM::Utils - ExtUtils::MM methods without dependency on ExtUtils::MakeMaker

  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • maybe_command
  • BUGS
  • SEE ALSO

ExtUtils::MM_AIX - AIX specific subclass of ExtUtils::MM_Unix

  • SYNOPSIS
  • DESCRIPTION
    • Overridden methods
  • AUTHOR
  • SEE ALSO

ExtUtils::MM_Any - Platform-agnostic MM methods

  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Cross-platform helper methods
  • Targets
  • Init methods
  • Tools
  • File::Spec wrappers
  • Misc
  • AUTHOR

ExtUtils::MM_BeOS - methods to override UN*X behaviour in ExtUtils::MakeMaker

  • SYNOPSIS
  • DESCRIPTION
  • os_flavor
  • init_linker

ExtUtils::MM_Cygwin - methods to override UN*X behaviour in ExtUtils::MakeMaker

  • SYNOPSIS
  • DESCRIPTION
    • os_flavor
  • cflags
  • replace_manpage_separator
  • init_linker
  • maybe_command
  • dynamic_lib
  • install

๐ŸŽ€ ExtUtils::MM_DOS - DOS specific subclass of ExtUtils::MM_Unix

SYNOPSIS

DESCRIPTION

Overridden methods

  • os_flavor

replace_manpage_separator

xs_static_lib_is_xs

AUTHOR

SEE ALSO


๐Ÿฆ‹ ExtUtils::MM_Darwin - special behaviors for OS X

SYNOPSIS

DESCRIPTION

Overridden Methods

๐Ÿ’œ ExtUtils::MM_MacOS - once produced Makefiles for MacOS Classic

SYNOPSIS

DESCRIPTION


๐ŸŒธ ExtUtils::MM_NW5 - methods to override UN*X behaviour in ExtUtils::MakeMaker

SYNOPSIS

DESCRIPTION

os_flavor

init_platform, platform_constants

static_lib_pure_cmd

xs_static_lib_is_xs

dynamic_lib


โœจ ExtUtils::MM_OS2 - methods to override UN*X behaviour in ExtUtils::MakeMaker

SYNOPSIS

DESCRIPTION

METHODS

init_dist

init_linker

os_flavor

xs_static_lib_is_xs


๐ŸŽ€ ExtUtils::MM_OS390 - OS390 specific subclass of ExtUtils::MM_Unix

SYNOPSIS

DESCRIPTION

Overriden methods

xs_make_dynamic_lib

AUTHOR

SEE ALSO


๐Ÿฆ‹ ExtUtils::MM_QNX - QNX specific subclass of ExtUtils::MM_Unix

SYNOPSIS

DESCRIPTION

Overridden methods

AUTHOR

SEE ALSO


๐Ÿ’… ExtUtils::MM_UWIN - U/WIN specific subclass of ExtUtils::MM_Unix

SYNOPSIS

DESCRIPTION

Overridden methods

os_flavor

replace_manpage_separator

AUTHOR

SEE ALSO


๐Ÿ‘‘ ExtUtils::MM_Unix - methods used by ExtUtils::MakeMaker

SYNOPSIS

DESCRIPTION

METHODS

Methods

  • os_flavor
  • c_o (o)
  • xs_obj_opt
  • dbgoutflag
  • cflags (o)
  • const_cccmd (o)
  • const_config (o)
  • const_loadlibs (o)
  • constants (o)
  • dep_constants (o)
  • depend (o)
  • init_DEST
  • init_dist
  • dist (o)
  • dist_basics (o)
  • dist_ci (o)
  • dist_core (o)
  • dist_target
  • tardist_target
  • zipdist_target
  • tarfile_target
  • zipfile_target
  • uutardist_target
  • shdist_target
  • dlsyms (o)
  • dynamic_bs (o)
  • dynamic_lib (o)
  • xs_dynamic_lib_macros
  • xs_make_dynamic_lib
  • exescan
  • extliblist
  • find_perl
  • fixin
  • force (o)
  • guess_name
  • has_link_code
  • init_dirscan
  • init_MANPODS
  • init_MAN1PODS
  • init_MAN3PODS
  • init_PM
  • init_DIRFILESEP
  • init_main
  • init_tools
  • init_linker
  • init_lib2arch
  • init_PERL
  • init_platform, platform_constants
  • init_PERM
  • init_xs
  • install (o)
  • installbin (o)
  • linkext (o)
  • lsdir
  • macro (o)
  • makeaperl (o)
  • xs_static_lib_is_xs (o)
  • makefile (o)
  • maybe_command
  • needs_linking (o)
  • parse_abstract
  • parse_version
  • pasthru (o)
  • perl_script
  • perldepend (o)
  • pm_to_blib
  • ppd
  • prefixify
  • processPL (o)
  • specify_shell
  • quote_paren
  • replace_manpage_separator
  • cd
  • oneliner
  • quote_literal
  • escape_newlines
  • max_exec_len
  • static (o)
  • xs_make_static_lib
  • static_lib_closures
  • static_lib_fixtures
  • static_lib_pure_cmd
  • staticmake (o)
  • subdir_x (o)
  • subdirs (o)
  • test (o)
  • test_via_harness (override)
  • test_via_script (override)
  • tool_xsubpp (o)
  • all_target
  • top_targets (o)
  • writedoc
  • xs_c (o)
  • xs_cpp (o)
  • xs_o (o)

SEE ALSO


๐ŸŒˆ ExtUtils::MM_VMS - methods to override UN*X behaviour in ExtUtils::MakeMaker

SYNOPSIS

DESCRIPTION

Methods always loaded

wraplist

Methods

guess_name (override)

find_perl (override)

_fixin_replace_shebang (override)

maybe_command (override)

pasthru (override)

pm_to_blib (override)

perl_script (override)

replace_manpage_separator

init_DEST

init_DIRFILESEP

init_main (override)

init_tools (override)

init_platform (override)

platform_constants

init_VERSION (override)

constants (override)

special_targets

cflags (override)

const_cccmd (override)

tools_other (override)

init_dist (override)

c_o (override)

xs_c (override)

xs_o (override)

_xsbuild_replace_macro (override)

_xsbuild_value (override)

dlsyms (override)

xs_obj_opt

dynamic_lib (override)

xs_make_static_lib (override)

static_lib_pure_cmd (override)

xs_static_lib_is_xs

extra_clean_files

zipfile_target, tarfile_target, shdist_target

install (override)

perldepend (override)

makeaperl (override)

maketext_filter (override)

prefixify (override)

cd

oneliner

echo

quote_literal

escape_dollarsigns

escape_all_dollarsigns

escape_newlines

max_exec_len

init_linker

catdir (override), catfile (override)

eliminate_macros

fixpath

os_flavor

is_make_type (override)

make_type (override)

AUTHOR


๐Ÿฆ„ ExtUtils::MM_VOS - VOS specific subclass of ExtUtils::MM_Unix

SYNOPSIS

DESCRIPTION

Overridden methods

AUTHOR

SEE ALSO


๐Ÿ”ฅ ExtUtils::MM_Win32 - methods to override UN*X behaviour in ExtUtils::MakeMaker

SYNOPSIS

DESCRIPTION

Overridden methods

dlsyms

xs_dlsyms_ext

replace_manpage_separator

maybe_command

init_DIRFILESEP

init_tools

init_others

init_platform, platform_constants

specify_shell

constants

dep_constants

special_targets

static_lib_pure_cmd

dynamic_lib

extra_clean_files

init_linker

perl_script

quote_dep

xs_obj_opt

pasthru

arch_check (override)

oneliner

cd

max_exec_len

os_flavor

dbgoutflag

cflags

make_type


๐Ÿ’– ExtUtils::MM_Win95 - method to customize MakeMaker for Win9X

SYNOPSIS

DESCRIPTION

Overridden methods

max_exec_len

os_flavor

AUTHOR


๐Ÿซถ ExtUtils::MY - ExtUtils::MakeMaker subclass for customization

SYNOPSIS

DESCRIPTION


๐Ÿ‘‘ ExtUtils::MakeMaker - Create a module Makefile

SYNOPSIS

DESCRIPTION

How To Write A Makefile.PL

Default Makefile Behaviour

make test

make testdb

make install

INSTALL_BASE

PREFIX and LIB attribute

AFS users

Static Linking of a new Perl Binary

Determination of Perl Library and Installation Locations

Which architecture dependent directory?

Using Attributes and Parameters

  • ABSTRACT
  • ABSTRACT_FROM
  • AUTHOR
  • BINARY_LOCATION
  • BUILD_REQUIRES
  • C
  • CCFLAGS
  • CONFIG
  • CONFIGURE
  • CONFIGURE_REQUIRES
  • DEFINE
  • DESTDIR
  • DIR
  • DISTNAME
  • DISTVNAME
  • DLEXT
  • DL_FUNCS
  • DL_VARS
  • EXCLUDE_EXT
  • EXE_FILES
  • FIRST_MAKEFILE
  • FULLPERL
  • FULLPERLRUN
  • FULLPERLRUNINST
  • FUNCLIST
  • H
  • IMPORTS
  • INC
  • INCLUDE_EXT
  • INSTALLARCHLIB
  • INSTALLBIN
  • INSTALLDIRS
  • INSTALLMAN1DIR
  • INSTALLMAN3DIR
  • INSTALLPRIVLIB
  • INSTALLSCRIPT
  • INSTALLSITEARCH
  • INSTALLSITEBIN
  • INSTALLSITELIB
  • INSTALLSITEMAN1DIR
  • INSTALLSITEMAN3DIR
  • INSTALLSITESCRIPT
  • INSTALLVENDORARCH
  • INSTALLVENDORBIN
  • INSTALLVENDORLIB
  • INSTALLVENDORMAN1DIR
  • INSTALLVENDORMAN3DIR
  • INSTALLVENDORSCRIPT
  • INST_ARCHLIB
  • INST_BIN
  • INST_LIB
  • INST_MAN1DIR
  • INST_MAN3DIR
  • INST_SCRIPT
  • LD
  • LDDLFLAGS
  • LDFROM
  • LIB
  • LIBPERL_A
  • LIBS
  • LICENSE
  • LINKTYPE
  • MAGICXS
  • MAKE
  • MAKEAPERL
  • MAKEFILE_OLD
  • MAN1PODS
  • MAN3PODS
  • MAP_TARGET
  • META_ADD
  • META_MERGE
  • MIN_PERL_VERSION
  • MYEXTLIB
  • NAME
  • NEEDS_LINKING
  • NOECHO
  • NORECURS
  • NO_META
  • NO_MYMETA
  • NO_PACKLIST
  • NO_PERLLOCAL
  • NO_VC
  • OBJECT
  • OPTIMIZE
  • PERL
  • PERL_CORE
  • PERLMAINCC
  • PERL_ARCHLIB
  • PERL_LIB
  • PERL_MALLOC_OK
  • PERLPREFIX
  • PERLRUN
  • PERLRUNINST
  • PERL_SRC
  • PERM_DIR
  • PERM_RW
  • PERM_RWX
  • PL_FILES
  • PM
  • PMLIBDIRS
  • PM_FILTER
  • POLLUTE
  • PPM_INSTALL_EXEC
  • PPM_INSTALL_SCRIPT
  • PPM_UNINSTALL_EXEC
  • PPM_UNINSTALL_SCRIPT
  • PREFIX
  • PREREQ_FATAL
  • PREREQ_PM
  • PREREQ_PRINT
  • PRINT_PREREQ
  • SITEPREFIX
  • SIGN
  • SKIP
  • TEST_REQUIRES
  • TYPEMAPS
  • USE_MM_LD_RUN_PATH
  • VENDORPREFIX
  • VERBINST
  • VERSION
  • VERSION_FROM
  • VERSION_SYM
  • XS
  • XSBUILD
  • XSMULTI
  • XSOPT
  • XSPROTOARG
  • XS_VERSION

Additional lowercase attributes

  • clean
  • depend
  • dist
  • dynamic_lib
  • linkext
  • macro
  • postamble
  • realclean
  • test
  • tool_autosplit

Overriding MakeMaker Methods

The End Of Cargo Cult Programming

"MAN3PODS => ' '"

Hintsfile support

Distribution Support

  • make distcheck
  • make skipcheck
  • make distclean
  • make veryclean
  • make manifest
  • make distdir
  • make disttest
  • make tardist
  • make dist
  • make uutardist
  • make shdist
  • make zipdist
  • make ci

Module Meta-Data (META and MYMETA)

Disabling an extension

Other Handy Functions

  • prompt
  • os_unsupported

Supported versions of Perl

ENVIRONMENT

  • PERL_MM_OPT
  • PERL_MM_USE_DEFAULT
  • PERL_CORE

SEE ALSO

AUTHORS

LICENSE


๐Ÿ’œ ExtUtils::MakeMaker::Config - Wrapper around Config.pm

SYNOPSIS

DESCRIPTION


๐ŸŒธ ExtUtils::MakeMaker::FAQ - Frequently Asked Questions About MakeMaker

DESCRIPTION

Module Installation

  • How do I install a module into my home directory?
  • How do I get MakeMaker and Module::Build to install to the same place?
  • How do I keep from installing man pages?
  • How do I use a module without installing it?
  • How can I organize tests into subdirectories and have them run?
  • PREFIX vs INSTALL_BASE from Module::Build::Cookbook
  • Generating *.pm files with substitutions eg of $VERSION

Common errors and problems

  • "No rule to make target /usr/lib/perl5/CORE/config.h', needed by Makefile'"

Philosophy and History

  • Why not just use <insert other build config tool here>?
  • What is Module::Build and how does it relate to MakeMaker?
  • pure perl. no make, no shell commands, easier to customize, cleaner internals, less cruft

Module Writing

  • How do I keep my $VERSION up to date without resetting it manually?
  • What's this META.yml thing and how did it get in my MANIFEST?!
  • How do I delete everything not in my MANIFEST?
  • Which tar should I use on Windows?
  • Which zip should I use on Windows for '[ndg]make zipdist'?

XS

  • How do I prevent "object version X.XX does not match bootstrap parameter Y.YY" errors?
  • How do I make two or more XS files coexist in the same directory?
  • XSMULTI
  • Separate directories
  • Bootstrapping

DESIGN

bestie, this section is literally just diagrams of how MakeMaker's objects relate to each other ๐Ÿ’…

  • MakeMaker object hierarchy (simplified)
  • MakeMaker object hierarchy (real)
  • The MM_* hierarchy

PATCHING

wanna send a fix? here are the official ways to slide into the maintainers' DMs ๐Ÿซถ

  • make a pull request on the MakeMaker github repository, raise a issue on the MakeMaker github repository, file an RT ticket, email makemaker@perl.org

AUTHOR

SEE ALSO


ExtUtils::MakeMaker::Locale โ€” bundled Encode::Locale ๐ŸŽ€

SYNOPSIS

DESCRIPTION

  • decode_argv( ), decode_argv( Encode::FB_CROAK ), env( $uni_key ), env( $uni_key => $uni_value ), reinit( ), reinit( $encoding ), $ENCODING_LOCALE, $ENCODING_LOCALE_FS, $ENCODING_CONSOLE_IN, $ENCODING_CONSOLE_OUT

NOTES

  • Windows
  • Mac OS X
  • POSIX (Linux and other Unixes)

SEE ALSO

AUTHOR


ExtUtils::MakeMaker::Tutorial โ€” Writing a module with MakeMaker โœจ

SYNOPSIS

DESCRIPTION

  • The Mantra
  • The Layout
    • Makefile.PL, MANIFEST, lib/, t/, Changes, README, INSTALL, MANIFEST.SKIP, bin/

SEE ALSO


ExtUtils::Manifest โ€” Utilities to write and check a MANIFEST file ๐Ÿฆ‹

VERSION

SYNOPSIS

DESCRIPTION

FUNCTIONS

  • mkmanifest
  • manifind
  • manicheck
  • filecheck
  • fullcheck
  • skipcheck
  • maniread
  • maniskip
  • manicopy
  • maniadd

MANIFEST

MANIFEST.SKIP

  • #!include_default, #!include /Path/to/another/manifest.skip

EXPORT_OK

GLOBAL VARIABLES

DIAGNOSTICS

  • "Not in MANIFEST:" file, "Skipping" file, "No such file:" file, "MANIFEST:" $!, "Added to MANIFEST:" file

ENVIRONMENT

  • PERL_MM_MANIFEST_DEBUG

SEE ALSO

AUTHOR


ExtUtils::Miniperl โ€” write the C code for miniperlmain.c and perlmain.c ๐Ÿ’œ

SYNOPSIS

DESCRIPTION

SEE ALSO


ExtUtils::Mkbootstrap โ€” make a bootstrap file for use by DynaLoader ๐ŸŒธ

SYNOPSIS

DESCRIPTION


ExtUtils::Mksymlists โ€” write linker options files for dynamic extension ๐Ÿ”ฅ

SYNOPSIS

DESCRIPTION

  • DLBASE, DL_FUNCS, DL_VARS, FILE, FUNCLIST, IMPORTS, NAME

AUTHOR

REVISION


ExtUtils::PL2Bat โ€” Batch file creation to run perl scripts on Windows ๐ŸŒˆ

VERSION

OVERVIEW

FUNCTIONS

  • pl2bat(%opts)
    • "in", "out", "ntargs", "otherargs", "stripsuffix", "usewarnings", "update"

ACKNOWLEDGEMENTS

AUTHOR

mkfh()

__find_relocations

okay so heads up: mkfh() and __find_relocations show up after COPYRIGHT AND LICENSE in the original ordering, which is kinda unhinged but we're keeping it exactly as-is, no cap ๐Ÿ™ˆ

ExtUtils::Packlist โ€” manage .packlist files ๐ŸŽ€

SYNOPSIS

DESCRIPTION

USAGE

FUNCTIONS

  • new(), read(), write(), validate(), packlist_file()

EXAMPLE

AUTHOR


ExtUtils::ParseXS โ€” converts Perl XS code into C code ๐Ÿ‘‘

SYNOPSIS

DESCRIPTION

EXPORT

METHODS

  • $pxs->new(), $pxs->process_file(), filename, C++, hiertype, except, typemap, prototypes, versioncheck, linenumbers, optimize, inout, argtypes, s, die_on_error, $pxs->report_error_count()

AUTHOR

SEE ALSO


ExtUtils::ParseXS::Constants โ€” Initialization values for some globals โญ

SYNOPSIS

DESCRIPTION


ExtUtils::ParseXS::Eval โ€” Clean package to evaluate code in ๐Ÿงš

SYNOPSIS

SUBROUTINES

  • $pxs->eval_output_typemap_code($typemapcode, $other_hashref)
  • $pxs->eval_input_typemap_code($typemapcode, $other_hashref)

TODO


ExtUtils::ParseXS::Node โ€” Classes for nodes of an ExtUtils::ParseXS AST ๐Ÿ’…

SYNOPSIS

DESCRIPTION


ExtUtils::ParseXS::Utilities โ€” Subroutines used with ExtUtils::ParseXS ๐Ÿซถ

SYNOPSIS

SUBROUTINES

  • standard_typemap_locations()
    • Purpose, Arguments, Return Value
  • trim_whitespace()
    • Purpose, Argument, Return Value
  • C_string()
    • Purpose, Arguments, Return Value
  • valid_proto_string()
    • Purpose, Arguments, Return Value
  • process_typemaps()
    • Purpose, Arguments, Return Value
  • "map_type($self, $type, $varname)"
  • standard_XS_defs()
    • Purpose, Arguments, Return Value
  • analyze_preprocessor_statement()
    • Purpose, Arguments
  • set_cond()
    • Purpose, Arguments, Return Value
  • current_line_number()
    • Purpose, Arguments, Return Value
  • Error handling methods
    • "$self->Warn(@messages)", "$self->blurt(@messages)", "$self->death(@messages)", "$self->WarnHint(@messages, $hints)"
  • check_conditional_preprocessor_statements()
    • Purpose, Arguments, Return Value
  • escape_file_for_line_directive()
    • Purpose, Arguments, Return Value
  • "report_typemap_failure"
    • Purpose, Arguments, Return Value

ExtUtils::Typemaps โ€” Read/Write/Modify Perl/XS typemap files ๐ŸŒธ

SYNOPSIS

DESCRIPTION

METHODS

  • new
  • file
  • add_typemap
  • add_inputmap
  • add_outputmap
  • add_string
  • remove_typemap
  • remove_inputmap
  • remove_outputmap
  • get_typemap
  • get_inputmap
  • get_outputmap
  • write
  • as_string
  • as_embedded_typemap
  • merge
  • is_empty
  • list_mapped_ctypes
  • _get_typemap_hash
  • _get_inputmap_hash
  • _get_outputmap_hash
  • _get_prototype_hash
  • clone
  • tidy_type

CAVEATS

SEE ALSO

AUTHOR


ExtUtils::Typemaps::Cmd โ€” Quick commands for handling typemaps โšก

SYNOPSIS

DESCRIPTION

EXPORTED FUNCTIONS

  • embeddable_typemap

SEE ALSO

AUTHOR


ExtUtils::Typemaps::InputMap โ€” Entry in the INPUT section of a typemap ๐ŸŽ€

SYNOPSIS

DESCRIPTION

METHODS

  • new
  • code
  • xstype
  • cleaned_code

SEE ALSO

AUTHOR


ExtUtils::Typemaps::OutputMap โ€” Entry in the OUTPUT section of a typemap ๐Ÿฆ‹

SYNOPSIS

DESCRIPTION

METHODS

  • new
  • code
  • xstype
  • cleaned_code
  • targetable_legacy
  • targetable

SEE ALSO

AUTHOR


ExtUtils::Typemaps::Type โ€” Entry in the TYPEMAP section of a typemap ๐Ÿ’œ

SYNOPSIS

DESCRIPTION

METHODS

  • new
  • proto
  • xstype
  • ctype
  • tidy_ctype

SEE ALSO

AUTHOR


ExtUtils::testlib โ€” add blib/* directories to @INC โœจ

SYNOPSIS

DESCRIPTION


Fatal โ€” Replace functions with equivalents which succeed or die ๐Ÿ’€

SYNOPSIS

BEST PRACTICE

DESCRIPTION

DIAGNOSTICS

  • Bad subroutine name for Fatal: %s, %s is not a Perl subroutine, %s is neither a builtin, nor a Perl subroutine, Cannot make the non-overridable %s fatal, Internal error: %s

BUGS

AUTHOR

LICENSE

SEE ALSO


Fcntl โ€” various flag constants and helper functions from C's fcntl.h ๐Ÿ”ฅ

SYNOPSIS

DESCRIPTION

EXPORTED SYMBOLS

Default exports and export tags

  • ":DEFAULT", ":flock", ":mode", ":seek", ":Fcompat"

Symbols for use with "fcntl"

  • "F_ALLOCSP", "F_ALLOCSP64", "F_DUP2FD", "F_DUPFD", "F_FREESP", "F_FREESP64", "F_FSYNC", "F_FSYNC64", "F_GETFD", "FD_CLOEXEC", "F_GETFL", "F_GETLEASE", "F_RDLCK", "F_WRLCK", "F_UNLCK", "F_GETLK", "F_GETLK64", "F_GETOWN", "F_GETPIPE_SZ", "F_GETSIG", "F_NOTIFY", "DN_ACCESS", "DN_ATTRIB", "DN_CREATE", "DN_DELETE", "DN_MODIFY", "DN_MULTISHOT", "DN_RENAME", "F_SETFD", "F_SETFL", "F_SETLEASE", "F_RDLCK", "F_WRLCK", "F_UNLCK", "F_SETLK", "F_SETLK64", "F_SETLKW", "F_SETLKW64", "F_SETOWN", "F_SETPIPE_SZ", "F_SETSIG", "F_SHARE", "F_UNSHARE", "F_COMPAT", "F_EXLCK", "F_NODNY", "F_POSIX", "F_RDACC", "F_RDDNY", "F_RWACC", "F_RWDNY", "F_SHLCK", "F_WRACC", "F_WRDNY"

Symbols for use with "flock"

  • "LOCK_EX", "LOCK_MAND", "LOCK_NB", "LOCK_READ", "LOCK_RW", "LOCK_SH", "LOCK_UN", "LOCK_WRITE"

Symbols for use with "sysopen"

  • "O_ACCMODE", "O_ALIAS", "O_ALT_IO", "O_APPEND", "O_ASYNC", "O_BINARY", "O_CREAT", "O_DEFER", "O_DIRECT", "O_DIRECTORY", "O_DSYNC", "O_EVTONLY", "O_EXCL", "O_EXLOCK", "O_IGNORE_CTTY", "O_LARGEFILE", "O_NDELAY", "O_NOATIME", "O_NOCTTY", "O_NOFOLLOW", "O_NOINHERIT", "O_NOLINK", "O_NONBLOCK", "O_NOSIGPIPE", "O_NOTRANS", "O_RANDOM", "O_RAW", "O_RDONLY", "O_RDWR", "O_RSRC", "O_RSYNC", "O_SEQUENTIAL", "O_SHLOCK", "O_SYMLINK", "O_SYNC", "O_TEMPORARY", "O_TEXT", "O_TMPFILE", "O_TRUNC", "O_TTY_INIT", "O_WRONLY", "FAPPEND", "FASYNC", "FCREAT", "FDEFER", "FDSYNC", "FEXCL", "FLARGEFILE", "FNDELAY", "FNONBLOCK", "FRSYNC", "FSYNC", "FTRUNC"

Symbols for use with "seek" and "sysseek"

  • "SEEK_CUR", "SEEK_END", "SEEK_SET"

Symbols for use with "stat" and "chmod"

  • "S_ENFMT", "S_IEXEC", "S_IFBLK", "S_IFCHR", "S_IFDIR", "S_IFIFO", "S_IFLNK", "S_IFMT", "_S_IFMT", "S_IFREG", "S_IFSOCK", "S_IFWHT", "S_IMODE", "S_IREAD", "S_IRGRP", "S_IROTH", "S_IRUSR", "S_IRWXG", "S_IRWXO", "S_IRWXU", "S_ISBLK", "S_ISCHR", "S_ISDIR", "S_ISFIFO", "S_ISGID", "S_ISLNK", "S_ISREG", "S_ISSOCK", "S_ISTXT", "S_ISUID", "S_ISVTX", "S_ISWHT", "S_IWGRP", "S_IWOTH", "S_IWRITE", "S_IWUSR", "S_IXGRP", "S_IXOTH", "S_IXUSR"

SEE ALSO

APPENDIX A


File::Basename โ€” Parse file paths into directory, filename and suffix. ๐ŸŒธ

SYNOPSIS

DESCRIPTION

"fileparse"

"basename"

"dirname"

"fileparse_set_fstype"

SEE ALSO


File::Compare โ€” Compare files or filehandles ๐Ÿ’…

SYNOPSIS

DESCRIPTION

RETURN

AUTHOR


File::Copy โ€” Copy files or filehandles โœจ

SYNOPSIS

DESCRIPTION

  • copy , move , syscopy , rmscopy($from,$to[,$date_flag])

RETURN

NOTES

AUTHOR


File::DosGlob โ€” DOS like globbing and then some ๐Ÿฆ‹

SYNOPSIS

DESCRIPTION

EXPORTS (by request only)

BUGS

AUTHOR

HISTORY

SEE ALSO


File::Fetch โ€” A generic file fetching mechanism ๐Ÿš€

SYNOPSIS

DESCRIPTION

ACCESSORS

  • $ff->uri, $ff->scheme, $ff->host, $ff->vol, $ff->share, $ff->path, $ff->file, $ff->file_default
  • $ff->output_file

METHODS

HOW IT WORKS

GLOBAL VARIABLES

  • $File::Fetch::FROM_EMAIL
  • $File::Fetch::USER_AGENT
  • $File::Fetch::FTP_PASSIVE
  • $File::Fetch::TIMEOUT
  • $File::Fetch::WARN
  • $File::Fetch::DEBUG
  • $File::Fetch::BLACKLIST
  • $File::Fetch::METHOD_FAIL

MAPPING

FREQUENTLY ASKED QUESTIONS

  • So how do I use a proxy with File::Fetch?
  • I used 'lynx' to fetch a file, but its contents is all wrong!
  • Files I'm trying to fetch have reserved characters or non-ASCII characters in them. What do I do?

TODO

  • Implement $PREFER_BIN

BUG REPORTS

AUTHOR


File::Find โ€” Traverse a directory tree. ๐ŸŒณ

SYNOPSIS

DESCRIPTION

  • find, finddepth

๐Ÿ“ %options ๐Ÿ“

okay bestie so this is the whole lil menu of option strings this module vibes with:

"wanted", "bydepth", "preprocess", "postprocess", "follow", "follow_fast", "follow_skip", "dangling_symlinks", "no_chdir", "untaint", "untaint_pattern", "untaint_skip"

that's the list, no more no less, don't make up extras ๐Ÿ’…

๐Ÿฆ‹ The wanted function ๐Ÿฆ‹

so when the wanted function fires: $File::Find::dir is the current directory name, $_ is the current filename within that directory, and $File::Find::name is the complete pathname to the file. three variables, three jobs, iconic behavior tbh.

๐Ÿ’€ WARNINGS ๐Ÿ’€

there's a whole WARNINGS section on this page โ€” go read it, it's not just decor ๐Ÿซถ

๐Ÿ˜ญ BUGS AND CAVEATS ๐Ÿ˜ญ

the caveats list hits:

  • $dont_use_nlink
  • Symlinks

๐ŸŒธ HISTORY ๐ŸŒธ

yep, there's a history section. the lore is real.

โœจ SEE ALSO โœจ

and a SEE ALSO, because everything connects โœจ


๐ŸŒˆ File::Glob โ€” Perl extension for BSD glob routine ๐ŸŒˆ

SYNOPSIS

DESCRIPTION

  • META CHARACTERS
  • EXPORTS
  • POSIX FLAGS

these are the flags, all of them, in order:

"GLOB_ERR", "GLOB_LIMIT", "GLOB_MARK", "GLOB_NOCASE", "GLOB_NOCHECK", "GLOB_NOSORT", "GLOB_BRACE", "GLOB_NOMAGIC", "GLOB_QUOTE", "GLOB_TILDE", "GLOB_CSH", "GLOB_ALPHASORT"

DIAGNOSTICS

"GLOB_NOSPACE", "GLOB_ABEND" โ€” that's the whole diagnostics roster, no cap.

NOTES

SEE ALSO

AUTHOR


๐ŸŽ€ File::GlobMapper โ€” Extend File Glob to Allow Input and Output Files ๐ŸŽ€

SYNOPSIS

DESCRIPTION

  • Behind The Scenes
  • Limitations
  • Input File Glob

the input-side magic chars, exactly these:

~, ~user, ., *, ?, \, [], {}, ()

  • Output File Glob

output side is just:

"*", #1

  • Returned Data

EXAMPLES

  • A Rename script
  • A few example globmaps

SEE ALSO

AUTHOR


๐Ÿฆ‹ File::Path โ€” Create or remove directory trees ๐Ÿฆ‹

VERSION

SYNOPSIS

DESCRIPTION

okay so the signatures this thing hands you, all of them, stay hydrated:

  • make_path( $dir1, $dir2, .... )
  • make_path( $dir1, $dir2, ...., \%opts )
  • mode => $num
  • chmod => $num
  • verbose => $bool
  • error => \$err
  • owner => $owner
  • user => $owner
  • uid => $owner
  • group => $group
  • mkpath( $dir )
  • mkpath( $dir, $verbose, $mode )
  • mkpath( [$dir1, $dir2,...], $verbose, $mode )
  • mkpath( $dir1, $dir2,..., \%opt )
  • remove_tree( $dir1, $dir2, .... )
  • remove_tree( $dir1, $dir2, ...., \%opts )
  • verbose => $bool
  • safe => $bool
  • keep_root => $bool
  • result => \$res
  • error => \$err
  • rmtree( $dir )
  • rmtree( $dir, $verbose, $safe )
  • rmtree( [$dir1, $dir2,...], $verbose, $safe )
  • rmtree( $dir1, $dir2,..., \%opt )

ERROR HANDLING

there's a NOTE: tucked in here. read it, it matters, fr fr.

NOTES

and the notes drop two CVE links, both here in full:

DIAGNOSTICS

the whole diagnostics lineup, every single message, verbatim because they're literal strings and I'm not messing with them:

  • mkdir [path]: [errmsg] (SEVERE)
  • No root path(s) specified
  • No such file or directory
  • cannot fetch initial working directory: [errmsg]
  • cannot stat initial working directory: [errmsg]
  • cannot chdir to [dir]: [errmsg]
  • directory [dir] changed before chdir, expected dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL)
  • cannot make directory [dir] read+writeable: [errmsg]
  • cannot read [dir]: [errmsg]
  • cannot reset chmod [dir]: [errmsg]
  • cannot remove [dir] when cwd is [dir]
  • cannot chdir to [parent-dir] from [child-dir]: [errmsg], aborting. (FATAL)
  • cannot stat prior working directory [dir]: [errmsg], aborting. (FATAL)
  • previous directory [parent-dir] changed before entering [child-dir], expected dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL)
  • cannot make directory [dir] writeable: [errmsg]
  • cannot remove directory [dir]: [errmsg]
  • cannot restore permissions of [dir] to [0nnn]: [errmsg]
  • cannot make file [file] writeable: [errmsg]
  • cannot unlink file [file]: [errmsg]
  • cannot restore permissions of [file] to [0nnn]: [errmsg]
  • unable to map [owner] to a uid, ownership not changed");
  • unable to map [group] to a gid, group ownership not changed

(the "); in that one is exactly how it appears, I'm not touching it, that's the original's business ๐Ÿ’€)

SEE ALSO

BUGS AND LIMITATIONS

  • MULTITHREADED APPLICATIONS
  • NFS Mount Points
  • REPORTING BUGS

ACKNOWLEDGEMENTS

AUTHORS

CONTRIBUTORS

the contributor roll call, everyone's handles exactly as written:

  • bulkdd@cpan.org
  • Charlie Gonzalez itcharlie@cpan.org
  • Craig A. Berry craigberry@mac.com
  • James E Keenan jkeenan@cpan.org
  • John Lightsey john@perlsec.org
  • Nigel Horne njh@bandsman.co.uk
  • Richard Elberger riche@cpan.org
  • Ryan Yee ryee@cpan.org
  • Skye Shaw shaw@cpan.org
  • Tom Lutz tommylutz@gmail.com
  • Will Sheppard willsheppard@github

LICENSE


๐ŸŒธ File::Spec โ€” portably perform operations on file names ๐ŸŒธ

SYNOPSIS

DESCRIPTION

METHODS

the method lineup, in order:

canonpath, catdir, catfile, curdir, devnull, rootdir, tmpdir, updir, no_upwards, case_tolerant, file_name_is_absolute, path, join, splitpath, splitdir, catpath(), abs2rel, rel2abs()

SEE ALSO

AUTHOR


๐Ÿ’œ File::Spec::AmigaOS โ€” File::Spec for AmigaOS ๐Ÿ’œ

SYNOPSIS

DESCRIPTION

METHODS

  • tmpdir

file_name_is_absolute


๐ŸŒˆ File::Spec::Cygwin โ€” methods for Cygwin file specs ๐ŸŒˆ

SYNOPSIS

DESCRIPTION

canonpath

file_name_is_absolute

tmpdir (override)

case_tolerant


๐Ÿฆ‹ File::Spec::Epoc โ€” methods for Epoc file specs ๐Ÿฆ‹

SYNOPSIS

DESCRIPTION

canonpath()

AUTHOR

SEE ALSO


โœจ File::Spec::Functions โ€” portably perform operations on file names โœจ

SYNOPSIS

DESCRIPTION

  • Exports

SEE ALSO


๐ŸŽ€ File::Spec::Mac โ€” File::Spec for Mac OS (Classic) ๐ŸŽ€

SYNOPSIS

DESCRIPTION

METHODS

the whole roster:

  • canonpath
  • catdir()
  • catfile
  • curdir
  • devnull
  • rootdir
  • tmpdir
  • updir
  • file_name_is_absolute
  • path
  • splitpath
  • splitdir
  • catpath
  • abs2rel
  • rel2abs

AUTHORS

SEE ALSO


๐Ÿ“ File::Spec::OS2 โ€” methods for OS/2 file specs ๐Ÿ“

SYNOPSIS

DESCRIPTION

  • tmpdir, splitpath

๐Ÿ’… File::Spec::Unix โ€” File::Spec for Unix, base for other File::Spec modules ๐Ÿ’…

SYNOPSIS

DESCRIPTION

METHODS

every single one:

  • canonpath()
  • catdir()
  • catfile
  • curdir
  • devnull
  • rootdir
  • tmpdir
  • updir
  • no_upwards
  • case_tolerant
  • file_name_is_absolute
  • path
  • join
  • splitpath
  • splitdir
  • catpath()
  • abs2rel
  • rel2abs()

SEE ALSO


๐ŸŒŸ File::Spec::VMS โ€” methods for VMS file specs ๐ŸŒŸ

SYNOPSIS

DESCRIPTION

canonpath (override)

catdir (override)

catfile (override)

curdir (override)

devnull (override)

rootdir (override)

tmpdir (override)

updir (override)

case_tolerant (override)

path (override)

file_name_is_absolute (override)

splitpath (override)

splitdir (override)

catpath (override)

abs2rel (override)

rel2abs (override)

SEE ALSO


๐Ÿ‘‘ File::Spec::Win32 โ€” methods for Win32 file specs ๐Ÿ‘‘

SYNOPSIS

DESCRIPTION

  • devnull
  • tmpdir
  • case_tolerant
  • file_name_is_absolute
  • catfile
  • canonpath
  • splitpath
  • splitdir
  • catpath
  • Note For File::Spec::Win32 Maintainers

SEE ALSO


๐Ÿงš File::Temp โ€” return name and handle of a temporary file safely ๐Ÿงš

VERSION

SYNOPSIS

DESCRIPTION

PORTABILITY

OBJECT-ORIENTED INTERFACE

  • new, newdir, filename, dirname, unlink_on_destroy, DESTROY

FUNCTIONS

  • tempfile, tempdir

MKTEMP FUNCTIONS

  • mkstemp, mkstemps, mkdtemp, mktemp

POSIX FUNCTIONS

  • tmpnam, tmpfile

ADDITIONAL FUNCTIONS

  • tempnam

UTILITY FUNCTIONS

  • unlink0, cmpstat, unlink1, cleanup

PACKAGE VARIABLES

  • safe_level, STANDARD, MEDIUM, HIGH, TopSystemUID, $KEEP_ALL, $DEBUG

WARNING

  • Temporary files and NFS
  • Forking
  • Directory removal
  • Taint mode
  • BINMODE

HISTORY

SEE ALSO

SUPPORT

AUTHOR

CONTRIBUTORS


๐Ÿฆ‹ File::stat โ€” by-name interface to Perl's built-in stat() functions ๐Ÿฆ‹

SYNOPSIS

DESCRIPTION

BUGS

ERRORS

  • -%s is not implemented on a File::stat object

WARNINGS

  • File::stat ignores use filetest 'access'
  • File::stat ignores VMS ACLs

NOTE

AUTHOR


๐ŸŽ€ FileCache โ€” keep more files open than the system permits ๐ŸŽ€

SYNOPSIS

DESCRIPTION

  • cacheout EXPR, cacheout MODE, EXPR

CAVEATS

BUGS


๐Ÿ’– FileHandle โ€” supply object methods for filehandles ๐Ÿ’–

SYNOPSIS

DESCRIPTION

  • $fh->print, $fh->printf, $fh->getline, $fh->getlines

SEE ALSO


โญ Filter::Simple โ€” Simplified source filtering โญ

SYNOPSIS

DESCRIPTION

  • The Problem
  • A Solution
  • Disabling or changing <no> behaviour
  • All-in-one interface
  • Filtering only specific components of source code

the component options, all eight:

"code", "code_no_comments", "executable", "executable_no_comments", "quotelike", "string", "regex", "all"

  • Filtering only the code parts of source code
  • Using Filter::Simple with an explicit "import" subroutine
  • Using Filter::Simple and Exporter together
  • How it works

AUTHOR

CONTACT


๐ŸŒˆ Filter::Util::Call โ€” Perl Source Filter Utility Module ๐ŸŒˆ

SYNOPSIS

DESCRIPTION

  • use Filter::Util::Call
  • import()
  • filter_add()
  • filter() and anonymous sub

inside that one you've got: $_, $status, filter_read and filter_read_exact, filter_del, real_import, unimport()

LIMITATIONS

  • __DATA__ is ignored
  • Max. codesize limited to 32-bit

EXAMPLES

  • Example 1: A simple filter.
  • Example 2: Using the context
  • Example 3: Using the context within the filter
  • Example 4: Using filter_del

Filter::Simple

AUTHOR

DATE

LICENSE


๐Ÿ“ FindBin โ€” Locate directory of original Perl script ๐Ÿ“

SYNOPSIS

DESCRIPTION

EXPORTABLE VARIABLES

  • $Bin or $Dir
  • $Script
  • $RealBin or $RealDir
  • $RealScript

KNOWN ISSUES

AUTHORS


๐Ÿ’€ GDBM_File โ€” Perl5 access to the gdbm library. ๐Ÿ’€

SYNOPSIS

DESCRIPTION

  • Tie: GDBM_READER, GDBM_WRITER, GDBM_WRCREAT, GDBM_NEWDB

STATIC METHODS

  • GDBM_version

and its three guess-quality levels, literally numbered like this:

  1. 1 โ€” exact guess
  2. 2 โ€” approximate
  3. 3 โ€” rough guess

ERROR HANDLING

  • $GDBM_File::gdbm_errno
  • gdbm_check_syserr

DATABASE METHODS

the full method list, don't skip a single one:

  • close
  • errno
  • syserrno
  • strerror
  • clear_error
  • needs_recovery
  • reorganize
  • sync
  • count
  • flags
  • dbname
  • cache_size
  • block_size
  • sync_mode
  • centfree
  • coalesce
  • mmap
  • mmapsize
  • recover

and recover takes all of these:

  • err => sub { ... }
  • backup => \$str
  • max_failed_keys => $n
  • max_failed_buckets => $n
  • max_failures => $n
  • stat => \%hash
  • recovered_keys
  • recovered_buckets
  • failed_keys
  • failed_buckets
  • convert
  • dump

with binary => 1, mode => MODE, overwrite => 1

  • load

and load takes replace => 1, restore_mode => 0 | 1, restore_owner => 0 | 1, strict_errors => 1

๐Ÿ’ฅ CRASH TOLERANCE ๐Ÿ’ฅ

bestie this is the "what happens when the power goes out" corner of the docs, and honestly? obsessed with the drama of it.

  • crash_tolerance_status
  • failure_atomic
  • latest_snapshot
    • GDBM_SNAPSHOT_BAD, GDBM_SNAPSHOT_ERR, GDBM_SNAPSHOT_SAME, GDBM_SNAPSHOT_SUSPICIOUS

๐ŸŒˆ AVAILABILITY ๐ŸŒˆ


๐Ÿ”’ SECURITY AND PORTABILITY ๐Ÿ”’


๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


๐ŸŒŸ Getopt::Long โ€” Extended processing of command line options ๐ŸŒŸ

the actual main character of command line parsing, no notes.

  • SYNOPSIS
  • DESCRIPTION
  • Command Line Options, an Introduction
  • Getting Started with Getopt::Long
    • Simple options
    • A little bit less simple options
    • Mixing command line option with other arguments
    • Options with values
    • Options with multiple values
    • Options with hash values
    • User-defined subroutines to handle options
    • Options with multiple names
    • Case and abbreviations
    • Summary of Option Specifications
      • !, +, s, i, o, f, : type [ desttype ], : number [ desttype ], : + [ desttype ]
  • Advanced Possibilities
    • Object oriented interface
    • Callback object
      • name, given
    • Thread Safety
    • Documentation and help texts
    • Parsing options from an arbitrary array
    • Parsing options from an arbitrary string
    • Storing options values in a hash
    • Bundling
    • The lonesome dash
    • Argument callback
  • Configuring Getopt::Long
    • default, posix_default, auto_abbrev, getopt_compat, gnu_compat, gnu_getopt, require_order, permute, bundling (default: disabled), bundling_override (default: disabled), ignore_case (default: enabled), ignore_case_always (default: disabled), auto_version (default:disabled), auto_help (default:disabled), pass_through (default: disabled), prefix, prefix_pattern, long_prefix_pattern, debug (default: disabled)
  • Exportable Methods
    • VersionMessage, "-message", "-msg", "-exitval", "-output", HelpMessage
  • Return values and Errors
  • Legacy
    • Default destinations
    • Alternative option starters
    • Configuration variables
  • Tips and Techniques
    • Pushing multiple values in a hash option
  • Troubleshooting
    • GetOptions does not return a false result when an option is not supplied
    • GetOptions does not split the command line correctly
    • Undefined subroutine &main::GetOptions called
    • How do I put a "-?" option into a Getopt::Long?
  • AUTHOR
  • COPYRIGHT AND DISCLAIMER

๐ŸŽ€ Getopt::Long::Parser โ€” Getopt::Long object-oriented interface ๐ŸŽ€

same energy, but make it a whole entire object. slay.

  • SYNOPSIS
  • DESCRIPTION
  • CONSTRUCTOR
    • config
  • METHODS
    • configure
  • getoptionsfromarray
  • getoptions
  • SEE ALSO
  • AUTHOR
  • COPYRIGHT AND DISCLAIMER

๐Ÿฆ‹ Getopt::Std โ€” Process single-character switches with switch clustering ๐Ÿฆ‹

one letter. one vibe. clustered together like besties holding hands.

  • SYNOPSIS
  • DESCRIPTION
  • "--help" and "--version"

๐ŸŒ HTTP::Tiny โ€” A small, simple, correct HTTP/1.1 client ๐ŸŒ

small, simple, correct โ€” the three things every HTTP client wishes it was. tiny but it ate, fr fr.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • new
    • get|head|put|post|patch|delete
    • post_form
    • mirror
    • request
    • www_form_urlencode
    • can_ssl
    • connected
  • TLS/SSL SUPPORT
  • PROXY SUPPORT
  • LIMITATIONS
  • SEE ALSO
  • SUPPORT
    • Bugs / Feature Requests
    • Source Code
  • AUTHORS
  • CONTRIBUTORS
  • COPYRIGHT AND LICENSE

๐Ÿ” Hash::Util โ€” A selection of general-utility hash subroutines ๐Ÿ”

lock it up bestie ๐Ÿ”’ the hashes are getting restricted.

  • SYNOPSIS
  • DESCRIPTION
    • Restricted hashes
      • lock_keys, unlock_keys
  • lock_keys_plus
  • lock_value, unlock_value
  • lock_hash, unlock_hash
  • lock_hash_recurse, unlock_hash_recurse
  • hashref_locked, hash_locked
  • hashref_unlocked, hash_unlocked
  • legal_keys, hidden_keys, all_keys, hash_seed, hash_value, bucket_info, bucket_stats, bucket_array
  • bucket_stats_formatted
  • hv_store, hash_traversal_mask, bucket_ratio, used_buckets, num_buckets
  • Operating on references to hashes
    • lock_ref_keys, unlock_ref_keys, lock_ref_keys_plus, lock_ref_value, unlock_ref_value, lock_hashref, unlock_hashref, lock_hashref_recurse, unlock_hashref_recurse, hash_ref_unlocked, legal_ref_keys, hidden_ref_keys
  • CAVEATS
  • BUGS
  • AUTHOR
  • SEE ALSO

๐Ÿงš Hash::Util::FieldHash โ€” Support for Inside-Out Classes ๐Ÿงš

inside-out classes?? it's giving reverse card energy and honestly it's iconic.

  • SYNOPSIS
  • FUNCTIONS
    • id, id_2obj, register, idhash, idhashes, fieldhash, fieldhashes
  • DESCRIPTION
    • The Inside-out Technique
    • Problems of Inside-out
    • Solutions
    • More Problems
    • The Generic Object
    • How to use Field Hashes
    • Garbage-Collected Hashes
  • EXAMPLES
    • init(), first(), last(), name(), "Name_hash", "Name_id", "Name_idhash", "Name_id_reg", "Name_idhash_reg", "Name_fieldhash"
    • Example 1
    • Example 2
  • GUTS
    • The "PERL_MAGIC_uvar" interface for hashes
    • Weakrefs call uvar magic
    • How field hashes work
    • Internal function Hash::Util::FieldHash::_fieldhash
  • AUTHOR
  • COPYRIGHT AND LICENSE

๐Ÿ’œ I18N::Collate โ€” compare 8-bit scalar data according to the current locale ๐Ÿ’œ

locale-aware comparing, so your sorting isn't doing a cultural faux pas.

  • SYNOPSIS
  • DESCRIPTION

๐ŸŒ I18N::LangTags โ€” functions for dealing with RFC3066-style language tags ๐ŸŒ

language tags!! like en-US, like the little flags in your browser settings. we love a standards nerd moment.

  • SYNOPSIS
  • DESCRIPTION
  • the function is_language_tag($lang1)
  • the function extract_language_tags($whatever)
  • the function same_language_tag($lang1, $lang2)
  • the function similarity_language_tag($lang1, $lang2)
  • the function is_dialect_of($lang1, $lang2)
  • the function super_languages($lang1)
  • the function locale2language_tag($locale_identifier)
  • the function encode_language_tag($lang1)
  • the function alternate_language_tags($lang1)
  • the function @langs = panic_languages(@accept_languages)
  • the function implicate_supers( ...languages... ), the function implicate_supers_strictly( ...languages... )
  • ABOUT LOWERCASING
  • ABOUT UNICODE PLAINTEXT LANGUAGE TAGS
  • SEE ALSO
  • COPYRIGHT
  • AUTHOR

๐Ÿ•ต๏ธ I18N::LangTags::Detect โ€” detect the user's language preferences ๐Ÿ•ต๏ธ

sneaky little detective work on what language the user actually wants ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • FUNCTIONS
  • ENVIRONMENT
  • SEE ALSO
  • COPYRIGHT
  • AUTHOR

I18N::LangTags::List -- tags and names for human languages ๐Ÿ’–

okay bestie, this is the subsection list for the I18N::LangTags::List module, and the headings it's made of go a little something like this ๐Ÿ‘‡

SYNOPSIS โœจ

(it's in there, bestie. this is the map, not the territory ๐Ÿ’…)

DESCRIPTION ๐ŸŒธ

also in there. we're just doing the headings in this bit ๐Ÿซถ

ABOUT LANGUAGE TAGS ๐Ÿฆ‹

yep, that's a heading too. stay with me ๐Ÿ’œ

LIST OF LANGUAGES ๐Ÿ‘‘

okay THIS is the moment, this is the main character section, and it is long. every single tag, every single name, all of it. some of them are wrapped in [square brackets] and I am not touching a single character of those, no cap. here's the whole thing, exactly as it lives in the page:

{ab} : Abkhazian, {ace} : Achinese, {ach} : Acoli, {ada} : Adangme,
{ady} : Adyghe, {aa} : Afar, {afh} : Afrihili, {af} : Afrikaans,
[{afa} : Afro-Asiatic (Other)], {ak} : Akan, {akk} : Akkadian, {sq}
: Albanian, {ale} : Aleut, [{alg} : Algonquian languages], [{tut} :
Altaic (Other)], {am} : Amharic, {i-ami} : Ami, [{apa} : Apache
languages], {ar} : Arabic, {arc} : Aramaic, {arp} : Arapaho, {arn} :
Araucanian, {arw} : Arawak, {hy} : Armenian, {an} : Aragonese,
[{art} : Artificial (Other)], {ast} : Asturian, {as} : Assamese,
[{ath} : Athapascan languages], [{aus} : Australian languages],
[{map} : Austronesian (Other)], {av} : Avaric, {ae} : Avestan, {awa}
: Awadhi, {ay} : Aymara, {az} : Azerbaijani, {ban} : Balinese,
[{bat} : Baltic (Other)], {bal} : Baluchi, {bm} : Bambara, [{bai} :
Bamileke languages], {bad} : Banda, [{bnt} : Bantu (Other)], {bas} :
Basa, {ba} : Bashkir, {eu} : Basque, {btk} : Batak (Indonesia),
{bej} : Beja, {be} : Belarusian, {bem} : Bemba, {bn} : Bengali,
[{ber} : Berber (Other)], {bho} : Bhojpuri, {bh} : Bihari, {bik} :
Bikol, {bin} : Bini, {bi} : Bislama, {bs} : Bosnian, {bra} : Braj,
{br} : Breton, {bug} : Buginese, {bg} : Bulgarian, {i-bnn} : Bunun,
{bua} : Buriat, {my} : Burmese, {cad} : Caddo, {car} : Carib, {ca} :
Catalan, [{cau} : Caucasian (Other)], {ceb} : Cebuano, [{cel} :
Celtic (Other)], [{cai} : Central American Indian (Other)], {chg} :
Chagatai, [{cmc} : Chamic languages], {ch} : Chamorro, {ce} :
Chechen, {chr} : Cherokee, {chy} : Cheyenne, {chb} : Chibcha, {ny} :
Chichewa, {zh} : Chinese, {chn} : Chinook Jargon, {chp} : Chipewyan,
{cho} : Choctaw, {cu} : Church Slavic, {chk} : Chuukese, {cv} :
Chuvash, {cop} : Coptic, {kw} : Cornish, {co} : Corsican, {cr} :
Cree, {mus} : Creek, [{cpe} : English-based Creoles and pidgins
(Other)], [{cpf} : French-based Creoles and pidgins (Other)], [{cpp}
: Portuguese-based Creoles and pidgins (Other)], [{crp} : Creoles
and pidgins (Other)], {hr} : Croatian, [{cus} : Cushitic (Other)],
{cs} : Czech, {dak} : Dakota, {da} : Danish, {dar} : Dargwa, {day} :
Dayak, {i-default} : Default (Fallthru) Language, {del} : Delaware,
{din} : Dinka, {dv} : Divehi, {doi} : Dogri, {dgr} : Dogrib, [{dra}
: Dravidian (Other)], {dua} : Duala, {nl} : Dutch, {dum} : Middle
Dutch (ca.1050-1350), {dyu} : Dyula, {dz} : Dzongkha, {efi} : Efik,
{egy} : Ancient Egyptian, {eka} : Ekajuk, {elx} : Elamite, {en} :
English, {enm} : Old English (1100-1500), {ang} : Old English
(ca.450-1100), {i-enochian} : Enochian (Artificial), {myv} : Erzya,
{eo} : Esperanto, {et} : Estonian, {ee} : Ewe, {ewo} : Ewondo, {fan}
: Fang, {fat} : Fanti, {fo} : Faroese, {fj} : Fijian, {fi} :
Finnish, [{fiu} : Finno-Ugrian (Other)], {fon} : Fon, {fr} : French,
{frm} : Middle French (ca.1400-1600), {fro} : Old French
(842-ca.1400), {fy} : Frisian, {fur} : Friulian, {ff} : Fulah, {gaa}
: Ga, {gd} : Scots Gaelic, {gl} : Gallegan, {lg} : Ganda, {gay} :
Gayo, {gba} : Gbaya, {gez} : Geez, {ka} : Georgian, {de} : German,
{gmh} : Middle High German (ca.1050-1500), {goh} : Old High German
(ca.750-1050), [{gem} : Germanic (Other)], {gil} : Gilbertese, {gon}
: Gondi, {gor} : Gorontalo, {got} : Gothic, {grb} : Grebo, {grc} :
Ancient Greek, {el} : Modern Greek, {gn} : Guarani, {gu} : Gujarati,
{gwi} : Gwich'in, {hai} : Haida, {ht} : Haitian, {ha} : Hausa, {haw}
: Hawaiian, {he} : Hebrew, {hz} : Herero, {hil} : Hiligaynon, {him}
: Himachali, {hi} : Hindi, {ho} : Hiri Motu, {hit} : Hittite, {hmn}
: Hmong, {hu} : Hungarian, {hup} : Hupa, {iba} : Iban, {is} :
Icelandic, {io} : Ido, {ig} : Igbo, {ijo} : Ijo, {ilo} : Iloko,
[{inc} : Indic (Other)], [{ine} : Indo-European (Other)], {id} :
Indonesian, {inh} : Ingush, {ia} : Interlingua (International
Auxiliary Language Association), {ie} : Interlingue, {iu} :
Inuktitut, {ik} : Inupiaq, [{ira} : Iranian (Other)], {ga} : Irish,
{mga} : Middle Irish (900-1200), {sga} : Old Irish (to 900), [{iro}
: Iroquoian languages], {it} : Italian, {ja} : Japanese, {jv} :
Javanese, {jrb} : Judeo-Arabic, {jpr} : Judeo-Persian, {kbd} :
Kabardian, {kab} : Kabyle, {kac} : Kachin, {kl} : Kalaallisut, {xal}
: Kalmyk, {kam} : Kamba, {kn} : Kannada, {kr} : Kanuri, {krc} :
Karachay-Balkar, {kaa} : Kara-Kalpak, {kar} : Karen, {ks} :
Kashmiri, {csb} : Kashubian, {kaw} : Kawi, {kk} : Kazakh, {kha} :
Khasi, {km} : Khmer, [{khi} : Khoisan (Other)], {kho} : Khotanese,
{ki} : Kikuyu, {kmb} : Kimbundu, {rw} : Kinyarwanda, {ky} : Kirghiz,
{i-klingon} : Klingon, {kv} : Komi, {kg} : Kongo, {kok} : Konkani,
{ko} : Korean, {kos} : Kosraean, {kpe} : Kpelle, {kro} : Kru, {kj} :
Kuanyama, {kum} : Kumyk, {ku} : Kurdish, {kru} : Kurukh, {kut} :
Kutenai, {lad} : Ladino, {lah} : Lahnda, {lam} : Lamba, {lo} : Lao,
{la} : Latin, {lv} : Latvian, {lb} : Letzeburgesch, {lez} :
Lezghian, {li} : Limburgish, {ln} : Lingala, {lt} : Lithuanian,
{nds} : Low German, {art-lojban} : Lojban (Artificial), {loz} :
Lozi, {lu} : Luba-Katanga, {lua} : Luba-Lulua, {lui} : Luiseno,
{lun} : Lunda, {luo} : Luo (Kenya and Tanzania), {lus} : Lushai,
{mk} : Macedonian, {mad} : Madurese, {mag} : Magahi, {mai} :
Maithili, {mak} : Makasar, {mg} : Malagasy, {ms} : Malay, {ml} :
Malayalam, {mt} : Maltese, {mnc} : Manchu, {mdr} : Mandar, {man} :
Mandingo, {mni} : Manipuri, [{mno} : Manobo languages], {gv} : Manx,
{mi} : Maori, {mr} : Marathi, {chm} : Mari, {mh} : Marshall, {mwr} :
Marwari, {mas} : Masai, [{myn} : Mayan languages], {men} : Mende,
{mic} : Micmac, {min} : Minangkabau, {i-mingo} : Mingo, [{mis} :
Miscellaneous languages], {moh} : Mohawk, {mdf} : Moksha, {mo} :
Moldavian, [{mkh} : Mon-Khmer (Other)], {lol} : Mongo, {mn} :
Mongolian, {mos} : Mossi, [{mul} : Multiple languages], [{mun} :
Munda languages], {nah} : Nahuatl, {nap} : Neapolitan, {na} : Nauru,
{nv} : Navajo, {nd} : North Ndebele, {nr} : South Ndebele, {ng} :
Ndonga, {ne} : Nepali, {new} : Newari, {nia} : Nias, [{nic} :
Niger-Kordofanian (Other)], [{ssa} : Nilo-Saharan (Other)], {niu} :
Niuean, {nog} : Nogai, {non} : Old Norse, [{nai} : North American
Indian], {no} : Norwegian, {nb} : Norwegian Bokmal, {nn} : Norwegian
Nynorsk, [{nub} : Nubian languages], {nym} : Nyamwezi, {nyn} :
Nyankole, {nyo} : Nyoro, {nzi} : Nzima, {oc} : Occitan (post 1500),
{oj} : Ojibwa, {or} : Oriya, {om} : Oromo, {osa} : Osage, {os} :
Ossetian; Ossetic, [{oto} : Otomian languages], {pal} : Pahlavi,
{i-pwn} : Paiwan, {pau} : Palauan, {pi} : Pali, {pam} : Pampanga,
{pag} : Pangasinan, {pa} : Panjabi, {pap} : Papiamento, [{paa} :
Papuan (Other)], {fa} : Persian, {peo} : Old Persian (ca.600-400
B.C.), [{phi} : Philippine (Other)], {phn} : Phoenician, {pon} :
Pohnpeian, {pl} : Polish, {pt} : Portuguese, [{pra} : Prakrit
languages], {pro} : Old Provencal (to 1500), {ps} : Pushto, {qu} :
Quechua, {rm} : Raeto-Romance, {raj} : Rajasthani, {rap} : Rapanui,
{rar} : Rarotongan, [{qaa - qtz} : Reserved for local use.], [{roa}
: Romance (Other)], {ro} : Romanian, {rom} : Romany, {rn} : Rundi,
{ru} : Russian, [{sal} : Salishan languages], {sam} : Samaritan
Aramaic, {se} : Northern Sami, {sma} : Southern Sami, {smn} : Inari
Sami, {smj} : Lule Sami, {sms} : Skolt Sami, [{smi} : Sami languages
(Other)], {sm} : Samoan, {sad} : Sandawe, {sg} : Sango, {sa} :
Sanskrit, {sat} : Santali, {sc} : Sardinian, {sas} : Sasak, {sco} :
Scots, {sel} : Selkup, [{sem} : Semitic (Other)], {sr} : Serbian,
{srr} : Serer, {shn} : Shan, {sn} : Shona, {sid} : Sidamo, {sgn-...}
: Sign Languages, {bla} : Siksika, {sd} : Sindhi, {si} : Sinhalese,
[{sit} : Sino-Tibetan (Other)], [{sio} : Siouan languages], {den} :
Slave (Athapascan), [{sla} : Slavic (Other)], {sk} : Slovak, {sl} :
Slovenian, {sog} : Sogdian, {so} : Somali, {son} : Songhai, {snk} :
Soninke, {wen} : Sorbian languages, {nso} : Northern Sotho, {st} :
Southern Sotho, [{sai} : South American Indian (Other)], {es} :
Spanish, {suk} : Sukuma, {sux} : Sumerian, {su} : Sundanese, {sus} :
Susu, {sw} : Swahili, {ss} : Swati, {sv} : Swedish, {syr} : Syriac,
{tl} : Tagalog, {ty} : Tahitian, [{tai} : Tai (Other)], {tg} :
Tajik, {tmh} : Tamashek, {ta} : Tamil, {i-tao} : Tao, {tt} : Tatar,
{i-tay} : Tayal, {te} : Telugu, {ter} : Tereno, {tet} : Tetum, {th}
: Thai, {bo} : Tibetan, {tig} : Tigre, {ti} : Tigrinya, {tem} :
Timne, {tiv} : Tiv, {tli} : Tlingit, {tpi} : Tok Pisin, {tkl} :
Tokelau, {tog} : Tonga (Nyasa), {to} : Tonga (Tonga Islands), {tsi}
: Tsimshian, {ts} : Tsonga, {i-tsu} : Tsou, {tn} : Tswana, {tum} :
Tumbuka, [{tup} : Tupi languages], {tr} : Turkish, {ota} : Ottoman
Turkish (1500-1928), {crh} : Crimean Turkish, {tk} : Turkmen, {tvl}
: Tuvalu, {tyv} : Tuvinian, {tw} : Twi, {udm} : Udmurt, {uga} :
Ugaritic, {ug} : Uighur, {uk} : Ukrainian, {umb} : Umbundu, {und} :
Undetermined, {ur} : Urdu, {uz} : Uzbek, {vai} : Vai, {ve} : Venda,
{vi} : Vietnamese, {vo} : Volapuk, {vot} : Votic, [{wak} : Wakashan
languages], {wa} : Walloon, {wal} : Walamo, {war} : Waray, {was} :
Washo, {cy} : Welsh, {wo} : Wolof, {x-...} : Unregistered
(Semi-Private Use), {xh} : Xhosa, {sah} : Yakut, {yao} : Yao, {yap}
: Yapese, {ii} : Sichuan Yi, {yi} : Yiddish, {yo} : Yoruba, [{ypk} :
Yupik languages], {znd} : Zande, [{zap} : Zapotec], {zen} : Zenaga,
{za} : Zhuang, {zu} : Zulu, {zun} : Zuni

likeโ€ฆ that's a lot of languages and I respect every single one of them ๐Ÿ™ˆ๐Ÿ’… no skips, no shortcuts.

SEE ALSO ๐Ÿ’œ

also a heading. it's there, bestie ๐ŸŒธ

yep, that heading exists too ๐Ÿ’–

AUTHOR ๐ŸŒˆ

and that one. we're still going, don't go anywhere โœจ

I18N::Langinfo - query locale information

ngl bestie this one is just "hey system, spill the locale tea" โ˜•๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
    • the whole lineup: "-", "+", ".", "_NL_ADDRESS_POSTAL_FMT", "_NL_ADDRESS_COUNTRY_NAME", "_NL_ADDRESS_COUNTRY_POST", "_NL_ADDRESS_COUNTRY_AB2", "_NL_ADDRESS_COUNTRY_AB3", "_NL_ADDRESS_COUNTRY_CAR", "_NL_ADDRESS_COUNTRY_NUM", "_NL_ADDRESS_COUNTRY_ISBN", "_NL_ADDRESS_LANG_NAME", "_NL_ADDRESS_LANG_AB", "_NL_ADDRESS_LANG_TERM", "_NL_ADDRESS_LANG_LIB", "_NL_IDENTIFICATION_TITLE", "_NL_IDENTIFICATION_SOURCE", "_NL_IDENTIFICATION_ADDRESS", "_NL_IDENTIFICATION_CONTACT", "_NL_IDENTIFICATION_EMAIL", "_NL_IDENTIFICATION_TEL", "_NL_IDENTIFICATION_FAX", "_NL_IDENTIFICATION_LANGUAGE", "_NL_IDENTIFICATION_TERRITORY", "_NL_IDENTIFICATION_AUDIENCE", "_NL_IDENTIFICATION_APPLICATION", "_NL_IDENTIFICATION_ABBREVIATION", "_NL_IDENTIFICATION_REVISION", "_NL_IDENTIFICATION_DATE", "_NL_IDENTIFICATION_CATEGORY", "_NL_MEASUREMENT_MEASUREMENT", "_NL_NAME_NAME_FMT", "_NL_NAME_NAME_GEN", "_NL_NAME_NAME_MR", "_NL_NAME_NAME_MRS", "_NL_NAME_NAME_MISS", "_NL_NAME_NAME_MS", "_NL_PAPER_HEIGHT", "_NL_PAPER_WIDTH", "_NL_TELEPHONE_TEL_INT_FMT", "_NL_TELEPHONE_TEL_DOM_FMT", "_NL_TELEPHONE_INT_SELECT", "_NL_TELEPHONE_INT_PREFIX"
    • For systems without nl_langinfo
      • "ERA", "CODESET", "YESEXPR", "YESSTR", "NOEXPR", "NOSTR", "ALT_DIGITS", "D_FMT", "T_FMT", "D_T_FMT", "CRNCYSTR", "ERA_D_FMT", "ERA_T_FMT", "ERA_D_T_FMT", "T_FMT_AMPM", All _NL_foo items
    • EXPORT
  • BUGS
  • SEE ALSO
  • AUTHOR
  • COPYRIGHT AND LICENSE

IO - load various IO modules

the lil convenience wrapper that pulls in a whole bunch of IO modules at once ๐ŸŽ€

  • SYNOPSIS
  • DESCRIPTION
  • DEPRECATED

IO::Compress - read/write compressed data in multiple formats

one stop shop for squishing your data into multiple formats โœจ

  • DESCRIPTION
  • AUTHOR
  • COPYRIGHT

IO::Compress::Base - Base Class for IO::Compress modules

the mothership ๐Ÿ‘‘ every IO::Compress module inherits the vibe from here

  • SYNOPSIS
  • DESCRIPTION
  • SUPPORT
  • SEE ALSO
  • AUTHOR
  • MODIFICATION HISTORY
  • COPYRIGHT AND LICENSE

IO::Compress::Bzip2 - Write bzip2 files/buffers

  • SYNOPSIS
  • DESCRIPTION
  • Functional Interface
    • bzip2 $input_filename_or_reference => $output_filename_or_reference [, OPTS]
      • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
    • Notes
    • Optional Parameters
      • "AutoClose => 0|1", "BinModeIn => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle
    • Oneshot Examples
  • OO Interface
    • Constructor
      • A filename, A filehandle, A scalar reference
    • Constructor Options
      • "AutoClose => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "BlockSize100K => number", "WorkFactor => number", "Strict => 0|1"
    • Examples
  • Methods
    • print
    • printf
    • syswrite
    • write
    • flush
    • tell
    • eof
    • seek
    • binmode
    • opened
    • autoflush
    • input_line_number
    • fileno
    • close
    • newStream([OPTS])
  • Importing
    • :all
  • EXAMPLES
    • Apache::GZip Revisited
    • Working with Net::FTP
  • SUPPORT
  • SEE ALSO
  • AUTHOR
  • MODIFICATION HISTORY
  • COPYRIGHT AND LICENSE

IO::Compress::Deflate - Write RFC 1950 files/buffers

  • SYNOPSIS
  • DESCRIPTION
  • Functional Interface
    • deflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]
      • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
    • Notes
    • Optional Parameters
      • "AutoClose => 0|1", "BinModeIn => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle
    • Oneshot Examples
  • OO Interface
    • Constructor
      • A filename, A filehandle, A scalar reference
    • Constructor Options
      • "AutoClose => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "Merge => 0|1", -Level, -Strategy, "Strict => 0|1"
    • Examples
  • Methods
    • print
    • printf
    • syswrite
    • write
    • flush
    • tell
    • eof
    • seek
    • binmode
    • opened
    • autoflush
    • input_line_number
    • fileno
    • close
    • newStream([OPTS])
    • deflateParams
  • Importing
    • :all, :constants, :flush, :level, :strategy
  • EXAMPLES
    • Apache::GZip Revisited
    • Working with Net::FTP
  • SUPPORT
  • SEE ALSO
  • AUTHOR
  • MODIFICATION HISTORY
  • COPYRIGHT AND LICENSE

IO::Compress::FAQ -- Frequently Asked Questions about IO::Compress

the gossip page of the IO::Compress world, fr fr ๐Ÿ’ฌ

  • DESCRIPTION
  • GENERAL
    • Compatibility with Unix compress/uncompress.
    • Accessing .tar.Z files
    • How do I recompress using a different compression?
  • ZIP
    • What Compression Types do IO::Compress::Zip & IO::Uncompress::Unzip support?
      • Store (method 0), Deflate (method 8), Bzip2 (method 12), Lzma (method 14)
    • Can I Read/Write Zip files larger the 4 Gig?
    • Can I write more that 64K entries is a Zip files?
    • Zip Resources
  • GZIP
    • Gzip Resources
    • Dealing with concatenated gzip files
    • Reading bgzip files with IO::Uncompress::Gunzip
  • ZLIB
    • Zlib Resources
  • Bzip2
    • Bzip2 Resources
    • Dealing with Concatenated bzip2 files
    • Interoperating with Pbzip2
  • HTTP & NETWORK
    • Apache::GZip Revisited
    • Compressed files and Net::FTP
  • MISC
    • Using "InputLength" to uncompress data embedded in a larger file/buffer.
  • SUPPORT
  • SEE ALSO
  • AUTHOR
  • MODIFICATION HISTORY
  • COPYRIGHT AND LICENSE

IO::Compress::Gzip - Write RFC 1952 files/buffers

  • SYNOPSIS
  • DESCRIPTION
  • Functional Interface
    • gzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]
      • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
    • Notes
    • Optional Parameters
      • "AutoClose => 0|1", "BinModeIn => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle
    • Oneshot Examples
  • OO Interface
    • Constructor
      • A filename, A filehandle, A scalar reference
    • Constructor Options
      • "AutoClose => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "Merge => 0|1", -Level, -Strategy, "Minimal => 0|1", "Comment => $comment", "Name => $string", "Time => $number", "TextFlag => 0|1", "HeaderCRC => 0|1", "OS_Code => $value", "ExtraField => $data", "ExtraFlags => $value", "Strict => 0|1"
    • Examples
  • Methods
    • print
    • printf
    • syswrite
    • write
    • flush
    • tell
    • eof
    • seek
    • binmode
    • opened
    • autoflush
    • input_line_number
    • fileno
    • close
    • newStream([OPTS])
    • deflateParams
  • Importing
    • :all, :constants, :flush, :level, :strategy
  • EXAMPLES
    • Apache::GZip Revisited
    • Working with Net::FTP
  • SUPPORT
  • SEE ALSO
  • AUTHOR
  • MODIFICATION HISTORY
  • COPYRIGHT AND LICENSE

IO::Compress::RawDeflate - Write RFC 1951 files/buffers

  • SYNOPSIS
  • DESCRIPTION
  • Functional Interface
    • rawdeflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]
      • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
    • Notes
    • Optional Parameters
      • "AutoClose => 0|1", "BinModeIn => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle
    • Oneshot Examples
  • OO Interface
    • Constructor
      • A filename, A filehandle, A scalar reference
    • Constructor Options
      • "AutoClose => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "Merge => 0|1", -Level, -Strategy, "Strict => 0|1"
    • Examples
  • Methods
    • print
    • printf
    • syswrite
    • write
    • flush
    • tell
    • eof
    • seek
    • binmode
    • opened
    • autoflush
    • input_line_number
    • fileno
    • close
    • newStream([OPTS])
    • deflateParams
  • Importing
    • :all, :constants, :flush, :level, :strategy
  • EXAMPLES
    • Apache::GZip Revisited
    • Working with Net::FTP
  • SUPPORT
  • SEE ALSO
  • AUTHOR
  • MODIFICATION HISTORY
  • COPYRIGHT AND LICENSE

IO::Compress::Zip - Write zip files/buffers

the zip one, and it has SO many options, buckle up bestie ๐ŸŽข

  • SYNOPSIS
  • DESCRIPTION
    • Store (0), Deflate (8), Bzip2 (12), Lzma (14), Zstandard (93), Xz (95)
  • Functional Interface
    • zip $input_filename_or_reference => $output_filename_or_reference [, OPTS]
      • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, the full filename contained in $input_filename_or_reference, the file protection attributes, the UID/GID for the file, the file timestamps, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
    • Notes
    • Optional Parameters
      • "AutoClose => 0|1", "BinModeIn => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle
    • Oneshot Examples
  • OO Interface
    • Constructor
      • A filename, A filehandle, A scalar reference
    • Constructor Options
      • "AutoClose => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "Name => $string", If the $input parameter is not a filename, the archive member name will be an empty string, "CanonicalName => 0|1", "FilterName => sub { ... }", "Efs => 0|1", "Minimal => 1|0", "Stream => 0|1", "Zip64 => 0|1", -Level, -Strategy, "BlockSize100K => number", "WorkFactor => number", "Preset => number", "Extreme => 0|1", "Time => $number", "ExtAttr => $attr", "exTime => [$atime, $mtime, $ctime]", "exUnix2 => [$uid, $gid]", "exUnixN => [$uid, $gid]", Comment => $comment, "ZipComment => $comment", "Method => $method", "TextFlag => 0|1", "ExtraFieldLocal => $data", "ExtraFieldCentral => $data", "Strict => 0|1"
    • Examples

โœจ Methods โœจ

Bestie, here's the whole method roster โ€” no skips, no gatekeeping ๐Ÿ’…

  • print
  • printf
  • syswrite
  • write
  • flush
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • newStream([OPTS])
  • deflateParams

๐ŸŽ€ Importing ๐ŸŽ€

What you can pull in with your use line, fr fr:

  • :all
  • :constants
  • :flush
  • :level
  • :strategy
  • :zip_method

๐ŸŒธ EXAMPLES ๐ŸŒธ

  • Apache::GZip Revisited
  • Working with Net::FTP

๐Ÿ’– SUPPORT ๐Ÿ’–

โœจ SEE ALSO โœจ

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

๐Ÿ“œ MODIFICATION HISTORY ๐Ÿ“œ


๐ŸŽ€ IO::Dir ๐ŸŽ€ โ€” hooks you up with object methods for directory handles

Like, it's literally giving directory-handle-as-an-object, and we're obsessed ๐Ÿซถ

SYNOPSIS

DESCRIPTION

  • new ( [ DIRNAME ] ), open ( DIRNAME ), read (), seek ( POS ), tell (), rewind (), close (), tie %hash, 'IO::Dir', DIRNAME [, OPTIONS ]

SEE ALSO

AUTHOR


๐Ÿ’– IO::File ๐Ÿ’– โ€” object methods for filehandles, coming right up

Filehandles but make them objects, periodt โœจ

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

  • new ( FILENAME [,MODE [,PERMS]] ), new_tmpfile

METHODS

  • open( FILENAME [,MODE [,PERMS]] ), open( FILENAME, IOLAYERS )

NOTE

SEE ALSO

HISTORY


โœจ IO::Handle โœจ โ€” gives you object methods for I/O handles

The iconic one, ngl ๐Ÿ‘‘

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

  • new (), new_from_fd ( FD, MODE )

METHODS

  • $io->fdopen ( FD, MODE ), $io->opened, $io->getline, $io->getlines, $io->ungetc ( ORD ), $io->write ( BUF, LEN [, OFFSET ] ), $io->error, $io->clearerr, $io->sync, $io->flush, $io->printflush ( ARGS ), $io->blocking ( [ BOOL ] ), binmode( [LAYER] ), $io->untaint

NOTE

SEE ALSO

BUGS

HISTORY


๐ŸŒˆ IO::Pipe ๐ŸŒˆ โ€” object methods for pipes, slay

Pipes but, like, with vibes ๐Ÿ’…

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

  • new ( [READER, WRITER] )

METHODS

  • reader ([ARGS]), writer ([ARGS]), handles ()

SEE ALSO

AUTHOR


๐Ÿ’… IO::Poll ๐Ÿ’… โ€” an object interface to the system poll call

Yes bestie, poll but fancy ๐Ÿฆ‹

SYNOPSIS

DESCRIPTION

METHODS

  • mask ( IO [, EVENT_MASK ] ), poll ( [ TIMEOUT ] ), events ( IO ), remove ( IO ), handles( [ EVENT_MASK ] )

SEE ALSO

AUTHOR


๐Ÿฆ‹ IO::Seekable ๐Ÿฆ‹ โ€” seek-based methods for I/O objects, periodt

The way it just gives you the seeking ๐ŸŽ€

SYNOPSIS

DESCRIPTION

  • $io->getpos, $io->setpos, $io->seek ( POS, WHENCE ), WHENCE=0 (SEEK_SET), WHENCE=1 (SEEK_CUR), WHENCE=2 (SEEK_END), $io->sysseek( POS, WHENCE ), $io->tell

SEE ALSO

HISTORY


๐Ÿ“ IO::Select ๐Ÿ“ โ€” an OO interface to the "select" system call

Main character energy, lowkey ๐Ÿ”ฅ

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

  • new ( [ HANDLES ] )

METHODS

  • add ( HANDLES ), remove ( HANDLES ), exists ( HANDLE ), handles, can_read ( [ TIMEOUT ] ), can_write ( [ TIMEOUT ] ), has_exception ( [ TIMEOUT ] ), count (), bits(), select ( READ, WRITE, EXCEPTION [, TIMEOUT ] )

EXAMPLE

AUTHOR


๐Ÿ”ฅ IO::Socket ๐Ÿ”ฅ โ€” object interface for socket communications

Sockets, but as objects, and it ate ๐Ÿ’–

SYNOPSIS

DESCRIPTION

CONSTRUCTOR ARGUMENTS

  • Blocking
  • Domain
  • Listen
  • Timeout
  • Type

CONSTRUCTORS

  • new

METHODS

  • accept
  • atmark
  • autoflush
  • bind
  • connected
  • getsockopt
  • listen
  • peername
  • protocol
  • recv
  • send
  • setsockopt
  • shutdown
  • sockdomain
  • socket
  • socketpair
  • sockname
  • sockopt
  • socktype
  • timeout

EXAMPLES

LIMITATIONS

SEE ALSO

AUTHOR


๐Ÿ’œ IO::Socket::INET ๐Ÿ’œ โ€” object interface for AF_INET domain sockets

IPv4-coded, no cap ๐ŸŒธ

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

  • new ( [ARGS] )

METHODS

  • sockaddr (), sockport (), sockhost (), peeraddr (), peerport (), peerhost ()

SEE ALSO

AUTHOR


๐ŸŒŸ IO::Socket::IP, "IO::Socket::IP" ๐ŸŒŸ โ€” a family-neutral IP socket that supports both IPv4 and IPv6

It's giving "why pick one when you can have both" ๐Ÿ’…

SYNOPSIS

DESCRIPTION

REPLACING "IO::Socket" DEFAULT BEHAVIOUR

CONSTRUCTORS

new

  • PeerHost => STRING
  • PeerService => STRING
  • PeerAddr => STRING
  • PeerPort => STRING
  • PeerAddrInfo => ARRAY
  • LocalHost => STRING
  • LocalService => STRING
  • LocalAddr => STRING
  • LocalPort => STRING
  • LocalAddrInfo => ARRAY
  • Family => INT
  • Type => INT
  • Proto => STRING or INT
  • GetAddrInfoFlags => INT
  • Listen => INT
  • ReuseAddr => BOOL
  • ReusePort => BOOL
  • Broadcast => BOOL
  • Sockopts => ARRAY
  • V6Only => BOOL
  • MultiHomed
  • Blocking => BOOL
  • Timeout => NUM

new (one arg)

METHODS

sockhost_service

sockhost

sockport

sockhostname

sockservice

sockaddr

peerhost_service

peerhost

peerport

peerhostname

peerservice

peeraddr

as_inet

NON-BLOCKING

"PeerHost" AND "LocalHost" PARSING

  • split_addr

join_addr

"IO::Socket::INET" INCOMPATIBILITIES

TODO

AUTHOR


๐Ÿงš IO::Socket::UNIX ๐Ÿงš โ€” object interface for AF_UNIX domain sockets

Unix domain sockets, and yes it's iconic ๐ŸŽ€

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

  • new ( [ARGS] )

METHODS

  • hostpath(), peerpath()

SEE ALSO

AUTHOR


๐Ÿ’– IO::Uncompress::AnyInflate ๐Ÿ’– โ€” uncompresses zlib-based (zip, gzip) files/buffers

The "I don't wanna pick a format" girlie ๐Ÿซถ

SYNOPSIS

DESCRIPTION

Functional Interface

anyinflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]

  • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob

Notes

Optional Parameters

  • "AutoClose => 0|1", "BinModeOut => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "MultiStream => 0|1", "TrailingData => $scalar"

OneShot Examples

OO Interface

Constructor

  • A filename, A filehandle, A scalar reference

Constructor Options

  • "AutoClose => 0|1", "MultiStream => 0|1", "Prime => $string", "Transparent => 0|1", "BlockSize => $num", InputLength => $size, "Append => 0|1", "Strict => 0|1", "RawInflate => 0|1", "ParseExtra => 0|1" If the gzip FEXTRA header field is present and this option is set, it will force the module to check that it conforms to the sub-field structure as defined in RFC 1952

Methods

  • read
  • read
  • getline
  • getc
  • ungetc
  • inflateSync
  • getHeaderInfo
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • nextStream
  • trailingData

Importing

  • :all

EXAMPLES

  • Working with Net::FTP

SUPPORT

SEE ALSO

AUTHOR

MODIFICATION HISTORY


๐ŸŒˆ IO::Uncompress::AnyUncompress ๐ŸŒˆ โ€” uncompresses gzip, zip, bzip2, zstd, xz, lzma, lzip, lzf or lzop files/buffers

She does NOT discriminate, she unzips them all ๐Ÿ’…

SYNOPSIS

DESCRIPTION

Functional Interface

anyuncompress $input_filename_or_reference => $output_filename_or_reference [, OPTS]

  • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob

Notes

Optional Parameters

  • "AutoClose => 0|1", "BinModeOut => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "MultiStream => 0|1", "TrailingData => $scalar"

OneShot Examples

OO Interface

Constructor

  • A filename, A filehandle, A scalar reference

Constructor Options

  • "AutoClose => 0|1", "MultiStream => 0|1", "Prime => $string", "Transparent => 0|1", "BlockSize => $num", InputLength => $size, "Append => 0|1", "Strict => 0|1", "RawInflate => 0|1", "UnLzma => 0|1"

Methods

  • read
  • read
  • getline
  • getc
  • ungetc
  • getHeaderInfo
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • nextStream
  • trailingData

Importing

  • :all

EXAMPLES

SUPPORT

SEE ALSO

AUTHOR

MODIFICATION HISTORY


๐Ÿ‘‘ IO::Uncompress::Base ๐Ÿ‘‘ โ€” the base class for IO::Uncompress modules

The momager of the whole uncompress family, she runs the operation ๐ŸŽ€

SYNOPSIS

DESCRIPTION

SUPPORT

SEE ALSO

AUTHOR

MODIFICATION HISTORY


๐Ÿฆ‹ IO::Uncompress::Bunzip2 ๐Ÿฆ‹ โ€” reads bzip2 files/buffers

bzip2 only, and she's thriving ๐ŸŒธ

SYNOPSIS

DESCRIPTION

Functional Interface

bunzip2 $input_filename_or_reference => $output_filename_or_reference [, OPTS]

  • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob

Notes

Optional Parameters

  • "AutoClose => 0|1", "BinModeOut => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "MultiStream => 0|1", "TrailingData => $scalar"

OneShot Examples

OO Interface

Constructor

  • A filename, A filehandle, A scalar reference

Constructor Options

  • "AutoClose => 0|1", "MultiStream => 0|1", "Prime => $string", "Transparent => 0|1", "BlockSize => $num", InputLength => $size, "Append => 0|1", "Strict => 0|1", "Small => 0|1"

Methods

  • read
  • read
  • getline
  • getc
  • ungetc
  • getHeaderInfo
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • nextStream
  • trailingData

Importing

  • :all

EXAMPLES

  • Working with Net::FTP

SUPPORT

SEE ALSO

AUTHOR

MODIFICATION HISTORY


๐ŸŒธ IO::Uncompress::Gunzip ๐ŸŒธ โ€” reads RFC 1952 files/buffers

gzip girlie, so iconic โœจ

SYNOPSIS

DESCRIPTION

Functional Interface

gunzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]

  • A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob

Notes

Optional Parameters

  • "AutoClose => 0|1", "BinModeOut => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "MultiStream => 0|1", "TrailingData => $scalar"

OneShot Examples

OO Interface

Constructor

  • A filename, A filehandle, A scalar reference

...still going, bestie, we're deep in the TOC now, hold my hand ๐Ÿ’œ

Constructor Options

  • "AutoClose => 0|1", "MultiStream => 0|1", "Prime => $string", "Transparent => 0|1", "BlockSize => $num", InputLength => $size, "Append => 0|1", "Strict => 0|1", "ParseExtra => 0|1"
ok so about that ParseExtra one specifically: if the gzip FEXTRA header field is actually there and you've got this option turned on, it makes the module double-check that the thing matches the sub-field structure laid out in RFC 1952. no vibes-based parsing here, it's doing the reading ๐Ÿ“–

Methods

  • read
  • read (yes bestie, it's listed twice, that's just how the page rolls ๐Ÿ’€)
  • getline
  • getc
  • ungetc
  • inflateSync
  • getHeaderInfo
    • Name, Comment
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • nextStream
  • trailingData

Importing

  • :all

EXAMPLES

  • Working with Net::FTP

SUPPORT

SEE ALSO

AUTHOR

MODIFICATION HISTORY


IO::Uncompress::Inflate โ€” Read RFC 1950 files/buffers ๐Ÿฆ‹

SYNOPSIS

DESCRIPTION

Functional Interface

  • inflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]
    • A filename
    • A filehandle
    • A scalar reference
    • An array reference
    • An Input FileGlob string
    • A filename
    • A filehandle
    • A scalar reference
    • An Array Reference
    • An Output FileGlob

Notes

Optional Parameters

  • "AutoClose => 0|1", "BinModeOut => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "MultiStream => 0|1", "TrailingData => $scalar"

OneShot Examples

OO Interface

Constructor

  • A filename
  • A filehandle
  • A scalar reference

Constructor Options

  • "AutoClose => 0|1", "MultiStream => 0|1", "Prime => $string", "Transparent => 0|1", "BlockSize => $num", InputLength => $size, "Append => 0|1", "Strict => 0|1"

Methods

  • read
  • read
  • getline
  • getc
  • ungetc
  • inflateSync
  • getHeaderInfo
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • nextStream
  • trailingData

Importing

  • :all

EXAMPLES

  • Working with Net::FTP

SUPPORT

SEE ALSO

AUTHOR

MODIFICATION HISTORY


IO::Uncompress::RawInflate โ€” Read RFC 1951 files/buffers ๐ŸŒˆ

SYNOPSIS

DESCRIPTION

Functional Interface

  • rawinflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]
    • A filename
    • A filehandle
    • A scalar reference
    • An array reference
    • An Input FileGlob string
    • A filename
    • A filehandle
    • A scalar reference
    • An Array Reference
    • An Output FileGlob

Notes

Optional Parameters

  • "AutoClose => 0|1", "BinModeOut => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "MultiStream => 0|1", "TrailingData => $scalar"

OneShot Examples

OO Interface

Constructor

  • A filename
  • A filehandle
  • A scalar reference

Constructor Options

  • "AutoClose => 0|1", "MultiStream => 0|1", "Prime => $string", "Transparent => 0|1", "BlockSize => $num", InputLength => $size, "Append => 0|1", "Strict => 0|1"

Methods

  • read
  • read
  • getline
  • getc
  • ungetc
  • inflateSync
  • getHeaderInfo
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • nextStream
  • trailingData

Importing

  • :all

EXAMPLES

  • Working with Net::FTP

SUPPORT

SEE ALSO

AUTHOR

MODIFICATION HISTORY


IO::Uncompress::Unzip โ€” Read zip files/buffers ๐ŸŽ€

SYNOPSIS

DESCRIPTION

  • Store (0), Deflate (8), Bzip2 (12), Lzma (14), Xz (95), Zstandard (93)
look at all these compression methods living their best lives, it's giving โœจvarietyโœจ

Functional Interface

  • unzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]
    • A filename
    • A filehandle
    • A scalar reference
    • An array reference
    • An Input FileGlob string
    • A filename
    • A filehandle
    • A scalar reference
    • An Array Reference
    • An Output FileGlob

Notes

Optional Parameters

  • "AutoClose => 0|1", "BinModeOut => 0|1", "Append => 0|1", A Buffer, A Filename, A Filehandle, "MultiStream => 0|1", "TrailingData => $scalar"

OneShot Examples

OO Interface

Constructor

  • A filename
  • A filehandle
  • A scalar reference

Constructor Options

  • "Name => "membername"", "Efs => 0| 1", "AutoClose => 0|1", "MultiStream => 0|1", "Prime => $string", "Transparent => 0|1", "BlockSize => $num", "InputLength => $size", "Append => 0|1", "Strict => 0|1"

Methods

  • read
  • read
  • getline
  • getc
  • ungetc
  • inflateSync
  • getHeaderInfo
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • nextStream
  • trailingData

Importing

  • :all

EXAMPLES

  • Simple Read
  • Walking through a zip file
  • Unzipping a complete zip file to disk
  • Working with Net::FTP

SUPPORT

SEE ALSO

AUTHOR

MODIFICATION HISTORY


IO::Zlib โ€” IO:: style interface to Compress::Zlib ๐Ÿ’…

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

  • new ( [ARGS] )

OBJECT METHODS

  • open ( FILENAME, MODE )
  • opened
  • close
  • getc
  • getline
  • getlines
  • print ( ARGS... )
  • read ( BUF, NBYTES, [OFFSET] )
  • eof
  • seek ( OFFSET, WHENCE )
  • tell
  • setpos ( POS )
  • getpos ( POS )

USING THE EXTERNAL GZIP

CLASS METHODS

  • has_Compress_Zlib
  • gzip_external
  • gzip_used
  • gzip_read_open
  • gzip_write_open

DIAGNOSTICS

  • IO::Zlib::getlines: must be called in list context
  • IO::Zlib::gzopen_external: mode '...' is illegal
  • IO::Zlib::import: '...' is illegal
  • IO::Zlib::import: ':gzip_external' requires an argument
  • IO::Zlib::import: 'gzip_read_open' requires an argument
  • IO::Zlib::import: 'gzip_read' '...' is illegal
  • IO::Zlib::import: 'gzip_write_open' requires an argument
  • IO::Zlib::import: 'gzip_write_open' '...' is illegal
  • IO::Zlib::import: no Compress::Zlib and no external gzip
  • IO::Zlib::open: needs a filename
  • IO::Zlib::READ: NBYTES must be specified
  • IO::Zlib::WRITE: too long LENGTH

SEE ALSO

HISTORY


IPC::Cmd โ€” finding and running system commands made easy ๐Ÿ“

SYNOPSIS

DESCRIPTION

CLASS METHODS

  • $ipc_run_version = IPC::Cmd->can_use_ipc_run( [VERBOSE] )
  • $ipc_open3_version = IPC::Cmd->can_use_ipc_open3( [VERBOSE] )
  • $bool = IPC::Cmd->can_capture_buffer
  • $bool = IPC::Cmd->can_use_run_forked

FUNCTIONS

  • $path = can_run( PROGRAM );
  • $ok | ($ok, $err, $full_buf, $stdout_buff, $stderr_buff) = run( command => COMMAND, [verbose => BOOL, buffer => \$SCALAR, timeout => DIGIT] );
    • command, verbose, buffer, timeout, success, error message, full_buffer, out_buffer, error_buffer
  • $hashref = run_forked( COMMAND, { child_stdin => SCALAR, timeout => DIGIT, stdout_handler => CODEREF, stderr_handler => CODEREF} );
    • "timeout", "child_stdin", "stdout_handler", "stderr_handler", "wait_loop_callback", "discard_output", "terminate_on_parent_sudden_death", "exit_code", "timeout", "stdout", "stderr", "merged", "err_msg"
  • $q = QUOTE

HOW IT WORKS

Global Variables

  • $IPC::Cmd::VERBOSE
  • $IPC::Cmd::USE_IPC_RUN
  • $IPC::Cmd::USE_IPC_OPEN3
  • $IPC::Cmd::WARN
  • $IPC::Cmd::INSTANCES
  • $IPC::Cmd::ALLOW_NULL_ARGS

Caveats

  • Whitespace and IPC::Open3 / system()
  • Whitespace and IPC::Run
  • IO Redirect
  • Interleaving STDOUT/STDERR

See Also

ACKNOWLEDGEMENTS

BUG REPORTS

AUTHOR


IPC::Msg โ€” SysV Msg IPC object class ๐Ÿ“ฌ

SYNOPSIS

DESCRIPTION

METHODS

  • new ( KEY , FLAGS )
  • id
  • rcv ( BUF, LEN [, TYPE [, FLAGS ]] )
  • remove
  • set ( STAT )
  • set ( NAME => VALUE [, NAME => VALUE ...] )
  • snd ( TYPE, MSG [, FLAGS ] )
  • stat

SEE ALSO

AUTHORS


IPC::Open2 โ€” open a process for both reading and writing using open2() ๐Ÿซถ

SYNOPSIS

DESCRIPTION

WARNING

SEE ALSO


IPC::Open3 โ€” open a process for reading, writing, and error handling using open3() ๐Ÿ”ฅ

SYNOPSIS

DESCRIPTION

See Also

  • IPC::Open2
  • IPC::Run

WARNING


IPC::Semaphore โ€” SysV Semaphore IPC object class ๐Ÿงš

SYNOPSIS

DESCRIPTION

METHODS

  • new ( KEY , NSEMS , FLAGS )
  • getall
  • getncnt ( SEM )
  • getpid ( SEM )
  • getval ( SEM )
  • getzcnt ( SEM )
  • id
  • op ( OPLIST )
  • remove
  • set ( STAT )
  • set ( NAME => VALUE [, NAME => VALUE ...] )
  • setall ( VALUES )
  • setval ( N , VALUE )
  • stat

SEE ALSO

AUTHORS


IPC::SharedMem โ€” SysV Shared Memory IPC object class ๐ŸŒธ

SYNOPSIS

DESCRIPTION

METHODS

  • new ( KEY , SIZE , FLAGS )
  • id
  • read ( POS, SIZE )
  • write ( STRING, POS, SIZE )
  • remove
  • is_removed
  • stat
  • attach ( [FLAG] )
  • detach
  • addr

SEE ALSO

AUTHORS


IPC::SysV โ€” System V IPC constants and system calls โญ

SYNOPSIS

DESCRIPTION

  • ftok( PATH )
  • ftok( PATH, ID )
  • shmat( ID, ADDR, FLAG )
  • shmdt( ADDR )
  • memread( ADDR, VAR, POS, SIZE )
  • memwrite( ADDR, STRING, POS, SIZE )

SEE ALSO

AUTHORS


SYNOPSIS

DESCRIPTION

FUNCTIONS

  • SvREFCNT(THING [, $value])
  • SvREADONLY(THING, [, $value])
  • hv_clear_placeholders(%hash)
  • stack_refcounted

AUTHOR

SEE ALSO


JSON::PP โ€” JSON::XS compatible pure-Perl module. ๐Ÿ’–

SYNOPSIS

DESCRIPTION

FUNCTIONAL INTERFACE

  • encode_json
  • decode_json
  • JSON::PP::is_bool

OBJECT-ORIENTED INTERFACE

  • new
  • ascii
  • latin1
  • utf8
  • pretty
  • indent
  • space_before
  • space_after
  • relaxed
    • list items can have an end-comma
    • shell-style '#'-comments
    • C-style multiple-line '/* */'-comments (JSON::PP only)
    • C++-style one-line '//'-comments (JSON::PP only)
    • literal ASCII TAB characters in strings
  • canonical
  • allow_nonref
  • allow_unknown
  • allow_blessed
  • convert_blessed
  • allow_tags
  • boolean_values
  • core_bools
  • filter_json_object
  • filter_json_single_key_object
  • shrink
  • max_depth
  • max_size
  • encode
  • decode
  • decode_prefix

โœจ FLAGS FOR JSON::PP ONLY โœจ

the little extras that only JSON::PP gets to have, no cap:

  • allow_singlequote
  • allow_barekey
  • allow_bignum
  • loose
  • escape_slash
  • indent_length
  • sort_by

๐Ÿ”ฅ INCREMENTAL PARSING ๐Ÿ”ฅ

  • incr_parse
  • incr_text
  • incr_skip
  • incr_reset

๐ŸŒˆ MAPPING ๐ŸŒˆ

๐Ÿ’œ JSON -> PERL

  • object, array, string, number, true, false, null, shell-style comments ("# text"), tagged values ("(tag)value")

๐Ÿ’œ PERL -> JSON

  • hash references, array references, other references, JSON::PP::true, JSON::PP::false, JSON::PP::null, blessed objects, simple scalars

๐Ÿ’œ OBJECT SERIALISATION

the order it checks stuff, bestie, step by step:

  1. "allow_tags" is enabled and the object has a "FREEZE" method,
  2. "convert_blessed" is enabled and the object has a "TO_JSON" method,
  3. "allow_bignum" is enabled and the object is a "Math::BigInt" or "Math::BigFloat",
  4. "allow_blessed" is enabled,
  5. none of the above

๐ŸŽ€ ENCODING/CODESET FLAG NOTES ๐ŸŽ€

  • "utf8" flag disabled, "utf8" flag enabled, "latin1" or "ascii" flags enabled

๐Ÿ’€ BUGS ๐Ÿ’€

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ’– AUTHOR ๐Ÿ’–

๐Ÿ‘‘ CURRENT MAINTAINER ๐Ÿ‘‘


๐Ÿฆ‹ JSON::PP::Boolean ๐Ÿฆ‹

dummy module providing JSON::PP::Boolean โ€” yes she's just a placeholder and honestly? iconic.

  • SYNOPSIS
  • DESCRIPTION
  • AUTHOR
  • LICENSE

๐ŸŒธ List::Util ๐ŸŒธ

A selection of general-utility list subroutines โ€” the little toolbox you keep reaching for, fr fr.

  • SYNOPSIS
  • DESCRIPTION
    • LIST-REDUCTION FUNCTIONS
      • reduce, reductions, any, all, none, notall, first, max, maxstr, min, minstr, product, sum, sum0
    • KEY/VALUE PAIR LIST FUNCTIONS
      • pairs, unpairs, pairkeys, pairvalues, pairgrep, pairfirst, pairmap
    • OTHER FUNCTIONS
      • shuffle
      • sample, uniq, uniqint, uniqnum, uniqstr
      • head, tail, zip, mesh
  • CONFIGURATION VARIABLES
    • $RAND
  • KNOWN BUGS
    • RT #95409
    • uniqnum() on oversized bignums
  • SUGGESTED ADDITIONS
  • SEE ALSO
  • COPYRIGHT

๐Ÿงš List::Util::XS ๐Ÿงš

Indicate if List::Util was compiled with a C compiler โ€” she's literally just here to tell you yes or no, and that's valid ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • COPYRIGHT

๐ŸŒ Locale::Maketext ๐ŸŒ

framework for localization โ€” the translation glow-up era of Perl, we love to see it.

  • SYNOPSIS
  • DESCRIPTION
  • QUICK OVERVIEW
  • METHODS
    • Construction Methods
    • The "maketext" Method
      • $lh->fail_with or $lh->fail_with(PARAM),
      • $lh->failure_handler_auto, $lh->denylist(@list) <or> $lh->blacklist(@list), $lh->allowlist(@list) <or> $lh->whitelist(@list)
    • Utility Methods
      • $language->quant($number, $singular), $language->quant($number, $singular, $plural), $language->quant($number, $singular, $plural, $negative), $language->numf($number), $language->numerate($number, $singular, $plural, $negative), $language->sprintf($format, @items), $language->language_tag(), $language->encoding()
    • Language Handle Attributes and Internals
  • LANGUAGE CLASS HIERARCHIES
  • ENTRIES IN EACH LEXICON
  • BRACKET NOTATION
  • BRACKET NOTATION SECURITY
  • AUTO LEXICONS
  • READONLY LEXICONS
  • CONTROLLING LOOKUP FAILURE
  • HOW TO USE MAKETEXT
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMER
  • AUTHOR

๐Ÿ“ Locale::Maketext::Cookbook ๐Ÿ“

recipes for using Locale::Maketext โ€” a whole lil cookbook, we're eating good.

  • INTRODUCTION
  • ONESIDED LEXICONS
  • DECIMAL PLACES IN NUMBER FORMATTING

๐Ÿซง Locale::Maketext::Guts ๐Ÿซง

Deprecated module to load Locale::Maketext utf8 code โ€” deprecated, bestie, meaning: old news, don't build new stuff on it.

  • SYNOPSIS
  • DESCRIPTION

๐Ÿซง Locale::Maketext::GutsLoader ๐Ÿซง

Deprecated module to load Locale::Maketext utf8 code โ€” same vibe as the one above, also deprecated.

  • SYNOPSIS
  • DESCRIPTION

โœจ Locale::Maketext::Simple โœจ

Simple interface to Locale::Maketext::Lexicon

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • OPTIONS
    • Class
    • Path
    • Style
    • Export
    • Subclass
    • Decode
    • Encoding
  • ACKNOWLEDGMENTS
  • SEE ALSO
  • AUTHORS
  • COPYRIGHT
    • The "MIT" License

๐Ÿ“– Locale::Maketext::TPJ13 ๐Ÿ“–

-- article about software localization โ€” it's literally a whole article, a read, a moment.

  • SYNOPSIS
  • DESCRIPTION
  • Localization and Perl: gettext breaks, Maketext fixes
    • A Localization Horror Story: It Could Happen To You
    • The Linguistic View
    • Breaking gettext
    • Replacing gettext
    • Buzzwords: Abstraction and Encapsulation
    • Buzzword: Isomorphism
    • Buzzword: Inheritance
    • Buzzword: Concision
    • The Devil in the Details
    • The Proof in the Pudding: Localizing Web Sites
    • References

๐Ÿ“ฌ MIME::Base64 ๐Ÿ“ฌ

Encoding and decoding of base64 strings

  • SYNOPSIS
  • DESCRIPTION
    • encode_base64( $bytes ), encode_base64( $bytes, $eol );, decode_base64( $str ), encode_base64url( $bytes ), decode_base64url( $str ), encoded_base64_length( $bytes ), encoded_base64_length( $bytes, $eol ), decoded_base64_length( $str )
  • EXAMPLES
  • COPYRIGHT
  • SEE ALSO

๐Ÿ’Œ MIME::QuotedPrint ๐Ÿ’Œ

Encoding and decoding of quoted-printable strings

  • SYNOPSIS
  • DESCRIPTION
    • encode_qp( $str), encode_qp( $str, $eol), encode_qp( $str, $eol, $binmode ), decode_qp( $str )
  • COPYRIGHT
  • SEE ALSO

๐Ÿ”ข Math::BigFloat ๐Ÿ”ข

arbitrary size floating point math package โ€” big numbers, big feelings.

  • SYNOPSIS
  • DESCRIPTION
    • Input
    • Output
  • METHODS
    • Configuration methods
      • accuracy(), precision()
    • Constructor methods
      • from_dec(), from_hex(), from_oct(), from_bin(), from_bytes(), from_ieee754(), from_base(), bpi(), as_int(), as_rat(), as_float()
    • Arithmetic methods
      • bdiv(), bmod(), bfdiv(), binv(), bmuladd(), bexp(), bnok(), bperm(), bsin(), bcos(), batan(), batan2(), bgcd()
    • String conversion methods
      • bstr(), bsstr(), bnstr(), bestr(), bdstr(), to_bytes(), to_ieee754()
  • ACCURACY AND PRECISION
  • Rounding
    • bfround ( +$scale ), bfround ( -$scale ), bfround ( 0 ), bround ( +$scale ), bround ( -$scale ) and bround ( 0 )
  • NUMERIC LITERALS
    • Hexadecimal, octal, and binary floating point literals
    • Math library
  • EXPORTS
    • Modifying and =, precision() vs. accuracy()
  • BUGS
  • SUPPORT
    • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
  • LICENSE
  • SEE ALSO
  • AUTHORS

๐Ÿ”ข Math::BigInt ๐Ÿ”ข

arbitrary size integer math package โ€” the big one, buckle up.

  • SYNOPSIS
  • DESCRIPTION
    • Input
    • Output
  • METHODS
    • Configuration methods
      • accuracy(), precision(), round_mode(), div_scale(), trap_inf(), trap_nan(), upgrade(), downgrade(), modify(), config()
    • Constructor methods
      • new(), from_dec(), from_hex(), from_oct(), from_bin(), from_bytes(), from_ieee754(), from_base(), from_base_num(), bzero(), bone(), binf(), bnan(), bpi(), copy(), as_int(), as_rat(), as_float()
    • Boolean methods
      • is_zero(), is_one(), is_finite(), is_inf(), is_nan(), is_positive(), is_pos(), is_negative(), is_neg(), is_non_positive(), is_non_negative(), is_odd(), is_even(), is_int()
    • Comparison methods
      • bcmp(), bacmp(), beq(), bne(), blt(), ble(), bgt(), bge()
    • Arithmetic methods
      • bneg(), babs(), bsgn(), bnorm(), binc(), bdec(), badd(), bsub(), bmul(), bdiv(), bmod(), bfdiv(), bfmod(), btdiv(), btmod(), binv(), bsqrt(), bpow(), broot(), bmuladd(), bmodpow(), bmodinv(), blog(), bexp(), bilog2(), bilog10(), bclog2(), bclog10(), bnok(), bperm(), bhyperop(), hyperop(), buparrow(), uparrow(), backermann(), ackermann(), bsin(), bcos(), batan(), batan2(), bfac(), bdfac(), btfac(), bmfac(), bfib(), blucas(), blsft(), brsft()
    • Bitwise methods
      • bblsft(), bbrsft(), band(), bior(), bxor(), bnot()
    • Rounding methods
      • round(), bround(), bfround(), bfloor(), bceil(), bint()
    • Other mathematical methods
      • bgcd(), blcm()
    • Object property methods
      • sign(), digit(), bdigitsum(), digitsum(), length(), mantissa(), exponent(), parts(), sparts(), nparts(), eparts(), dparts(), fparts(), numerator(), denominator()
    • String conversion methods
      • bstr(), bsstr(), bnstr(), bestr(), bdstr(), bfstr(), to_hex(), to_oct(), to_bin(), to_bytes(), to_ieee754(), to_base(), to_base_num(), as_hex(), as_oct(), as_bin(), as_bytes()
    • Other conversion methods
      • numify()
    • Utility methods
      • dec_str_to_dec_flt_str(), hex_str_to_dec_flt_str(), oct_str_to_dec_flt_str(), bin_str_to_dec_flt_str(), dec_str_to_dec_str(), hex_str_to_dec_str(), oct_str_to_dec_str(), bin_str_to_dec_str()
  • ACCURACY AND PRECISION
    • Accuracy A
    • Precision P
    • Rounding mode R
      • 'trunc', 'even', 'odd', '+inf', '-inf', 'zero', 'common'
    • Fallback F
    • More details on rounding
      • Precision, Accuracy (significant digits), Setting/Accessing, Creating numbers, Usage, Precedence, Overriding globals, Local settings, Rounding, Default values, Remarks
  • INTERNALS
    • Math Library
    • Sign
  • EXAMPLES
  • NUMERIC LITERALS
    • Hexadecimal, octal, and binary floating point literals
  • PERFORMANCE
    • Alternative math libraries
  • SUBCLASSING
    • Subclassing Math::BigInt
  • UPGRADING
    • Auto-upgrade
  • EXPORTS
  • CAVEATS
    • Comparing numbers as strings, oct()/hex(), int(), Modifying and =, Overloading -$x, Mixing different object types
  • BUGS
  • SUPPORT
    • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
  • LICENSE
  • SEE ALSO
  • AUTHORS

๐Ÿงฎ Math::BigInt::Calc ๐Ÿงฎ

pure Perl module to support Math::BigInt โ€” no XS, just vibes and pure Perl.

  • SYNOPSIS
  • DESCRIPTION
  • OPTIONS
    • base_len, use_int
  • METHODS
    • _base_len()
  • SEE ALSO

โšก Math::BigInt::FastCalc โšก

Math::BigInt::Calc with some XS for more speed โ€” same as Calc but with a speed buff, slay.

  • SYNOPSIS
  • DESCRIPTION
  • STORAGE
  • METHODS
  • BUGS
  • SUPPORT
    • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
  • LICENSE
  • AUTHORS
  • SEE ALSO

๐ŸŒธ Math::BigInt::Lib โ€” the virtual parent class for Math::BigInt libraries ๐Ÿซถ

It's giving "blueprint energy" โ€” this one's the template all the other BigInt backends copy from.

SYNOPSIS

DESCRIPTION

General Notes โœจ

Here's the whole squad of methods every subclass has to bring to the party, no cap:

  • CLASS->api_version(), CLASS->_new(STR), CLASS->_zero(), CLASS->_one(), CLASS->_two(), CLASS->_ten(), CLASS->_from_bin(STR), CLASS->_from_oct(STR), CLASS->_from_hex(STR), CLASS->_from_bytes(STR), CLASS->_from_base(STR, BASE, COLLSEQ), CLASS->_from_base_num(ARRAY, BASE), CLASS->_add(OBJ1, OBJ2), CLASS->_mul(OBJ1, OBJ2), CLASS->_div(OBJ1, OBJ2), CLASS->_sub(OBJ1, OBJ2, FLAG), CLASS->_sub(OBJ1, OBJ2), CLASS->_sadd(OBJ1, SIGN1, OBJ2, SIGN2), CLASS->_ssub(OBJ1, SIGN1, OBJ2, SIGN2), CLASS->_dec(OBJ), CLASS->_inc(OBJ), CLASS->_mod(OBJ1, OBJ2), CLASS->_sqrt(OBJ), CLASS->_root(OBJ, N), CLASS->_fac(OBJ), CLASS->_dfac(OBJ), CLASS->_pow(OBJ1, OBJ2), CLASS->_modinv(OBJ1, OBJ2), CLASS->_modpow(OBJ1, OBJ2, OBJ3), CLASS->_rsft(OBJ, N, B), CLASS->_lsft(OBJ, N, B), CLASS->_log_int(OBJ, B), CLASS->_ilog2(OBJ), CLASS->_ilog10(OBJ), CLASS->_clog2(OBJ), CLASS->_clog10(OBJ), CLASS->_gcd(OBJ1, OBJ2), CLASS->_lcm(OBJ1, OBJ2), CLASS->_fib(OBJ), CLASS->_lucas(OBJ), CLASS->_and(OBJ1, OBJ2), CLASS->_or(OBJ1, OBJ2), CLASS->_xor(OBJ1, OBJ2), CLASS->_sand(OBJ1, OBJ2, SIGN1, SIGN2), CLASS->_sor(OBJ1, OBJ2, SIGN1, SIGN2), CLASS->_sxor(OBJ1, OBJ2, SIGN1, SIGN2), CLASS->_is_zero(OBJ), CLASS->_is_one(OBJ), CLASS->_is_two(OBJ), CLASS->_is_ten(OBJ), CLASS->_is_even(OBJ), CLASS->_is_odd(OBJ), CLASS->_acmp(OBJ1, OBJ2), CLASS->_scmp(OBJ1, SIGN1, OBJ2, SIGN2), CLASS->_str(OBJ), CLASS->_to_bin(OBJ), CLASS->_to_oct(OBJ), CLASS->_to_hex(OBJ), CLASS->_to_bytes(OBJ), CLASS->_to_base(OBJ, BASE, COLLSEQ), CLASS->_to_base_num(OBJ, BASE), CLASS->_as_bin(OBJ), CLASS->_as_oct(OBJ), CLASS->_as_hex(OBJ), CLASS->_as_bytes(OBJ), CLASS->_num(OBJ), CLASS->_copy(OBJ), CLASS->_len(OBJ), CLASS->_zeros(OBJ), CLASS->_digit(OBJ, N), CLASS->_digitsum(OBJ), CLASS->_check(OBJ), CLASS->_set(OBJ)

API version 2 ๐Ÿ’…

The glow-up era โ€” three extra methods join the roster:

  • CLASS->_1ex(N), CLASS->_nok(OBJ1, OBJ2), CLASS->_alen(OBJ)

WRAP YOUR OWN ๐ŸŽ€

BUGS

SUPPORT

  • GitHub Source Repository, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix

LICENSE

AUTHOR

SEE ALSO


๐Ÿฆ‹ Math::BigRat โ€” arbitrary size rational number math package

Fractions that never lose precision, bestie. Iconic.

SYNOPSIS

DESCRIPTION

Math Library

METHODS

The full roster, zero skips:

  • new(), from_dec(), from_hex(), from_oct(), from_bin(), from_bytes(), from_ieee754(), from_base(), bzero(), bone(), binf(), bnan(), bpi(), copy(), as_int(), as_rat(), as_float(), bround()/round()/bfround(), is_zero(), is_one(), is_finite(), is_positive(), is_pos(), is_negative(), is_neg(), is_odd(), is_even(), is_int()

Comparison methods

  • bcmp(), bacmp(), beq(), bne(), blt(), ble(), bgt(), bge(), blsft()/brsft(), bneg(), bnorm(), binc(), bdec(), badd(), bsub(), bmul(), bdiv(), bmod(), binv(), bsqrt(), bpow(), broot(), bmodpow(), bmodinv(), blog(), bexp(), bnok(), bperm(), bfac(), band(), bior(), bxor(), bnot(), bfloor(), bceil(), bint(), bgcd(), digit(), length(), parts(), dparts(), fparts(), numerator(), denominator()

String conversion methods

  • bstr(), bnstr(), bestr(), bdstr(), to_bytes(), to_ieee754(), as_hex(), as_oct(), as_bin(), numify(), config()

NUMERIC LITERALS

Hexadecimal, octal, and binary floating point literals

BUGS

SUPPORT

  • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix

LICENSE

SEE ALSO

AUTHORS


๐ŸŒˆ Math::Complex โ€” complex numbers and associated mathematical functions

Imaginary besties, we ride at dawn. โœจ

SYNOPSIS

DESCRIPTION

OPERATIONS

CREATION

DISPLAYING

CHANGED IN PERL 5.6

USAGE

CONSTANTS

PI

Inf

ERRORS DUE TO DIVISION BY ZERO OR LOGARITHM OF ZERO

ERRORS DUE TO INDIGESTIBLE ARGUMENTS

BUGS

SEE ALSO

AUTHORS

LICENSE


๐Ÿงš Math::Trig โ€” trigonometric functions

Every angle, every distance, every vibe. ๐Ÿ’…

SYNOPSIS

DESCRIPTION

TRIGONOMETRIC FUNCTIONS

tan

ERRORS DUE TO DIVISION BY ZERO

SIMPLE (REAL) ARGUMENTS, COMPLEX RESULTS

PLANE ANGLE CONVERSIONS

  • deg2rad, grad2rad, rad2deg, grad2deg, deg2grad, rad2grad, rad2rad, deg2deg, grad2grad

RADIAL COORDINATE CONVERSIONS

COORDINATE SYSTEMS

3-D ANGLE CONVERSIONS

  • cartesian_to_cylindrical, cartesian_to_spherical, cylindrical_to_cartesian, cylindrical_to_spherical, spherical_to_cartesian, spherical_to_cylindrical

GREAT CIRCLE DISTANCES AND DIRECTIONS

great_circle_distance

great_circle_direction

great_circle_bearing

great_circle_destination

great_circle_midpoint

great_circle_waypoint

EXAMPLES

CAVEAT FOR GREAT CIRCLE FORMULAS

Real-valued asin and acos

  • asin_real, acos_real

BUGS

SEE ALSO

AUTHORS

LICENSE


๐Ÿ“ Memoize โ€” Make functions faster by trading space for time

Cache it and forget it, the algorithm is caching, periodt. ๐Ÿ”ฅ

SYNOPSIS

DESCRIPTION

EXAMPLE

DETAILS

OPTIONS

INSTALL

NORMALIZER

"SCALAR_CACHE", "LIST_CACHE"

"MEMORY", "HASH", "TIE", "FAULT", "MERGE"

OTHER FACILITIES

"unmemoize"

"flush_cache"

CAVEATS

PERSISTENT CACHE SUPPORT

EXPIRATION SUPPORT

BUGS

SEE ALSO

THANK YOU

AUTHOR


๐Ÿ’œ Memoize::AnyDBM_File โ€” glue to provide EXISTS for AnyDBM_File for Storable use

DESCRIPTION


๐ŸŒธ Memoize::Expire โ€” Plug-in module for automatic expiration of memoized values

Your cache but make it โœจtemporaryโœจ.

SYNOPSIS

DESCRIPTION

INTERFACE

  • TIEHASH, EXISTS, STORE

ALTERNATIVES

CAVEATS

AUTHOR

SEE ALSO


๐Ÿ’– Memoize::NDBM_File โ€” glue to provide EXISTS for NDBM_File for Storable use

DESCRIPTION


๐Ÿ’€ Memoize::SDBM_File โ€” DEPRECATED compatibility shim

Heads up bestie: this one's deprecated. It's literally just a shim hanging around for old code.

DESCRIPTION


๐ŸŽ€ Memoize::Storable โ€” store Memoized data in Storable database

DESCRIPTION


๐Ÿ‘‘ Module::CoreList โ€” what modules shipped with versions of perl

The receipts for literally every module that ever came bundled. iykyk. ๐Ÿซถ

SYNOPSIS

DESCRIPTION

FUNCTIONS API

  • first_release( MODULE ), first_release_by_date( MODULE ), "find_modules( REGEX, [ LIST OF PERLS ] )", find_version( PERL_VERSION ), "is_core( MODULE, [ MODULE_VERSION, [ PERL_VERSION ] ] )", "is_deprecated( MODULE, PERL_VERSION )", deprecated_in( MODULE ), removed_from( MODULE ), removed_from_by_date( MODULE ), "changes_between( PERL_VERSION, PERL_VERSION )"

DATA STRUCTURES

  • %Module::CoreList::version, %Module::CoreList::delta, %Module::CoreList::released, %Module::CoreList::families, %Module::CoreList::deprecated, %Module::CoreList::upstream, %Module::CoreList::bug_tracker

CAVEATS

HISTORY

AUTHOR

LICENSE

SEE ALSO


โญ Module::CoreList::Utils โ€” what utilities shipped with versions of perl

Same energy as above but for the command-line tools. ๐ŸŒˆ

SYNOPSIS

DESCRIPTION

FUNCTIONS API

  • "utilities", first_release( UTILITY ), first_release_by_date( UTILITY ), removed_from( UTILITY ), removed_from_by_date( UTILITY )

DATA STRUCTURES

  • %Module::CoreList::Utils::utilities

AUTHOR

LICENSE

SEE ALSO


๐Ÿฆ‹ Module::Load โ€” runtime require of both modules and files

SYNOPSIS

DESCRIPTION

Difference between "load" and "autoload"

FUNCTIONS

  • load, autoload, load_remote, autoload_remote

Rules

IMPORTS THE FUNCTIONS

  • "load","autoload","load_remote","autoload_remote", 'all', '','none',undef

Caveats

SEE ALSO

ACKNOWLEDGEMENTS

BUG REPORTS

AUTHOR


๐Ÿ’… Module::Load::Conditional โ€” Looking up module information / loading at runtime

SYNOPSIS

DESCRIPTION

Methods

$href = check_install( module => NAME [, version => VERSION, verbose => BOOL ] );

  • module, version, verbose, file, dir, version, uptodate

$bool = can_load( modules => { NAME => VERSION [,NAME => VERSION] }, [verbose => BOOL, nocache => BOOL, autoload => BOOL] )

  • modules, verbose, nocache, autoload

@list = requires( MODULE );

Global Variables

  • $Module::Load::Conditional::VERBOSE
  • $Module::Load::Conditional::FIND_VERSION
  • $Module::Load::Conditional::CHECK_INC_HASH
  • $Module::Load::Conditional::FORCE_SAFE_INC
  • $Module::Load::Conditional::CACHE
  • $Module::Load::Conditional::ERROR
  • $Module::Load::Conditional::DEPRECATED

See Also

BUG REPORTS

AUTHOR


๐ŸŽ€ Module::Loaded โ€” mark modules as loaded or unloaded

SYNOPSIS

DESCRIPTION

FUNCTIONS

  • $bool = mark_as_loaded( PACKAGE );
  • $bool = mark_as_unloaded( PACKAGE );
  • $loc = is_loaded( PACKAGE );

BUG REPORTS

AUTHOR


๐Ÿงš Module::Metadata โ€” Gather package and POD information from perl module files

VERSION

SYNOPSIS

DESCRIPTION

CLASS METHODS

  • "new_from_file($filename, collect_pod => 1, decode_pod => 1)"
  • "new_from_handle($handle, $filename, collect_pod => 1, decode_pod => 1)"
  • "new_from_module($module, collect_pod => 1, inc => \@dirs, decode_pod => 1)"
  • "find_module_by_name($module, \@dirs)"
  • "find_module_dir_by_name($module, \@dirs)"
  • provides( %options )
    • version (required), dir, files, prefix
  • "package_versions_from_directory($dir, \@files?)"
  • "log_info (internal)"

OBJECT METHODS

  • name()
  • version($package)
  • filename()
  • packages_inside()
  • pod_inside()
  • contains_pod()
  • pod($section)
  • is_indexable($package) or is_indexable()

SUPPORT

AUTHOR

CONTRIBUTORS


๐Ÿ’œ NDBM_File โ€” Tied access to ndbm files

SYNOPSIS

DESCRIPTION

  • "O_RDONLY", "O_WRONLY", "O_RDWR"

DIAGNOSTICS

  • "ndbm store returned -1, errno 22, key "..." at ..."

SECURITY AND PORTABILITY

BUGS AND WARNINGS


๐Ÿ”ฅ NEXT โ€” Provide a pseudo-class NEXT (et al) that allows method redispatch

SYNOPSIS

DESCRIPTION

Enforcing redispatch

Avoiding repetitions

Invoking all versions of a method with a single call

Using "EVERY" methods

SEE ALSO

AUTHOR

BUGS AND IRRITATIONS


๐ŸŒˆ Net::Cmd โ€” Network Command class (as used by FTP, SMTP etc)

SYNOPSIS

DESCRIPTION

Public Methods

  • debug($level), message(), code(), ok(), status(), datasend($data), dataend()

Protected Methods

  • "debug_print($dir, $text)", "debug_text($dir, $text)", "command($cmd[, $args, ... ])", unsupported(), response(), parse_response($text), getline(), ungetline($text), rawdatasend($data), read_until_dot(), tied_fh()

(still deep inside Net::Cmd's TOC โ€” carrying on, no worries ๐Ÿซถ)

  • Pseudo Responses
    • Initial value, Connection closed, Timeout
  • EXPORTS
    • Default Exports, Optional Exports, Export Tags
  • KNOWN BUGS
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::Config - Local configuration data for libnet ๐ŸŒˆ

okay so this is libnet's lil settings drawer, and it's giving very much "menu of options" energy โœจ

  • SYNOPSIS
  • DESCRIPTION
    • Class Methods
      • requires_firewall($host)
    • NetConfig Values
      • nntp_hosts, snpp_hosts, pop3_hosts, smtp_hosts, ph_hosts, daytime_hosts, time_hosts, inet_domain, ftp_firewall, ftp_firewall_type, 0, 1, 2, 3, 4, 5, 6, 7, ftp_ext_passive, ftp_int_passive, local_netmask, test_hosts, test_exists
  • EXPORTS
    • Default Exports, Optional Exports, Export Tags
  • KNOWN BUGS
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::Domain - Attempt to evaluate the current host's internet name and domain ๐ŸŒธ

bestie this one is literally just "who am I, name-wise" for your machine ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
    • Functions
      • hostfqdn(), domainname(), hostname(), hostdomain()
  • EXPORTS
    • Default Exports, Optional Exports, Export Tags
  • KNOWN BUGS
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::FTP - FTP Client class ๐Ÿฆ‹

the FTP era never died, it just went indie. look at this method list, it's a whole syllabus ๐Ÿ˜ญ

  • SYNOPSIS
  • DESCRIPTION
    • Overview
    • Class Methods
      • new([$host][, %options])
    • Object Methods
      • login([$login[, $password[, $account]]]), starttls(), stoptls(), prot($level), host(), account($acct), authorize([$auth[, $resp]]), site($args), ascii(), binary(), type([$type]), rename($oldname, $newname), delete($filename), cwd([$dir]), cdup(), passive([$passive]), pwd(), restart($where), rmdir($dir[, $recurse]), mkdir($dir[, $recurse]), alloc($size[, $record_size]), ls([$dir]), dir([$dir]), get($remote_file[, $local_file[, $where]]), put($local_file[, $remote_file]), put_unique($local_file[, $remote_file]), append($local_file[, $remote_file]), unique_name(), mdtm($file), size($file), supported($cmd), hash([$filehandle_glob_ref[, $bytes_per_hash_mark]]), feature($name), nlst([$dir]), list([$dir]), retr($file), stor($file), stou($file), appe($file), port([$port]), eprt([$port]), pasv(), epsv(), pasv_xfer($src_file, $dest_server[, $dest_file ]), pasv_xfer_unique($src_file, $dest_server[, $dest_file ]), pasv_wait($non_pasv_server), abort(), quit()
    • Methods for the Adventurous
      • quot($cmd[, $args]), can_inet6(), can_ssl()
    • The dataconn Class
    • Unimplemented
      • SMNT, HELP, MODE, SYST, STAT, STRU, REIN
  • EXPORTS
  • KNOWN BUGS
    • Reporting Bugs
  • SEE ALSO
  • ACKNOWLEDGEMENTS
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::NNTP - NNTP Client class ๐Ÿ“ฐ

usenet girlies rise up ๐Ÿซก this TOC entry is LONG and we're not skipping a single crumb

  • SYNOPSIS
  • DESCRIPTION
    • Class Methods
      • new([$host][, %options])
    • Object Methods
      • host(), starttls(), article([{$msgid|$msgnum}[, $fh]]), body([{$msgid|$msgnum}[, [$fh]]), head([{$msgid|$msgnum}[, [$fh]]), articlefh([{$msgid|$msgnum}]), bodyfh([{$msgid|$msgnum}]), headfh([{$msgid|$msgnum}]), nntpstat([{$msgid|$msgnum}]), group([$group]), help(), ihave($msgid[, $message]), last(), date(), postok(), authinfo($user, $pass), authinfo_simple($user, $pass), list(), newgroups($since[, $distributions]), newnews($since[, $groups[, $distributions]]), next(), post([$message]), postfh(), slave(), quit(), can_inet6(), can_ssl()
    • Extension Methods
      • newsgroups([$pattern]), distributions(), distribution_patterns(), subscriptions(), overview_fmt(), active_times(), active([$pattern]), xgtitle($pattern), xhdr($header, $message_spec), xover($message_spec), xpath($message_id), xpat($header, $pattern, $message_spec), xrover($message_spec), listgroup([$group]), reader()
    • Unsupported
    • Definitions
      • $message_spec, $pattern, Examples, [^]-], *bdc, [0-9a-zA-Z], a??d
  • EXPORTS
  • KNOWN BUGS
  • SEE ALSO
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::Netrc - OO interface to users netrc file ๐Ÿ”

your .netrc but make it an object, slay ๐ŸŽ€

  • SYNOPSIS
  • DESCRIPTION
    • The .netrc File
      • machine name, default, login name, password string, account string, macdef name
    • Class Methods
      • lookup($machine[, $login])
    • Object Methods
      • login(), password(), account(), lpa()
  • EXPORTS
  • KNOWN BUGS
  • SEE ALSO
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::POP3 - Post Office Protocol 3 Client class (RFC1939) ๐Ÿ’Œ

inbox energy, but make it a class โœ‰๏ธ

  • SYNOPSIS
  • DESCRIPTION
    • Class Methods
      • new([$host][, %options])
    • Object Methods
      • host(), auth($username, $password), user($user), pass($pass), login([$user[, $pass]]), starttls(%sslargs), apop([$user[, $pass]]), banner(), capa(), capabilities(), top($msgnum[, $numlines]), list([$msgnum]), get($msgnum[, $fh]), getfh($msgnum), last(), popstat(), ping($user), uidl([$msgnum]), delete($msgnum), reset(), quit(), can_inet6(), can_ssl()
    • Notes
  • EXPORTS
  • KNOWN BUGS
  • SEE ALSO
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::Ping - check a remote host for reachability ๐Ÿ“

is it alive?? this is the module that answers that. buckle up, the function list is a whole journey ๐Ÿซ 

  • SYNOPSIS
  • DESCRIPTION
    • Functions
      • Net::Ping->new([proto, timeout, bytes, device, tos, ttl, family, host, port, bind, gateway, retrans, pingstring, source_verify econnrefused dontfrag IPV6_USE_MIN_MTU IPV6_RECVPATHMTU]), $p->ping($host [, $timeout [, $family]]);, $p->source_verify( { 0 | 1 } );, $p->service_check( { 0 | 1 } );, $p->tcp_service_check( { 0 | 1 } );, $p->hires( { 0 | 1 } );, $p->time, $p->socket_blocking_mode( $fh, $mode );, $p->IPV6_USE_MIN_MTU, $p->IPV6_RECVPATHMTU, $p->IPV6_HOPLIMIT, $p->IPV6_REACHCONF NYI, $p->bind($local_addr);, $p->message_type([$ping_type]);, $p->open($host);, $p->ack( [ $host ] );, $p->nack( $failed_ack_host );, $p->ack_unfork($host), $p->ping_icmp([$host, $timeout, $family]), $p->ping_icmpv6([$host, $timeout, $family]), $p->ping_stream([$host, $timeout, $family]), $p->ping_syn([$host, $ip, $start_time, $stop_time]), $p->ping_syn_fork([$host, $timeout, $family]), $p->ping_tcp([$host, $timeout, $family]), $p->ping_udp([$host, $timeout, $family]), $p->ping_external([$host, $timeout, $family]), $p->tcp_connect([$ip, $timeout]), $p->tcp_echo([$ip, $timeout, $pingstring]), $p->close();, $p->port_number([$port_number]), $p->mselect, $p->ntop, $p->checksum($msg), $p->icmp_result, pingecho($host [, $timeout]);, wakeonlan($mac, [$host, [$port]])
  • NOTES
  • INSTALL
  • BUGS
  • AUTHORS
  • COPYRIGHT

Net::SMTP - Simple Mail Transfer Protocol Client โœ‰๏ธ

sending mail the classy way, no cap ๐Ÿ’Œ

  • SYNOPSIS
  • DESCRIPTION
    • Class Methods
      • new([$host][, %options])
    • Object Methods
      • banner(), domain(), hello($domain), host(), etrn($domain), starttls(%sslargs), auth($username, $password), auth($sasl), mail($address[, %options]), send($address), send_or_mail($address), send_and_mail($address), reset(), recipient($address[, $address[, ...]][, %options]), to($address[, $address[, ...]]), cc($address[, $address[, ...]]), bcc($address[, $address[, ...]]), data([$data]), bdat($data), bdatlast($data), expand($address), verify($address), help([$subject]), quit(), can_inet6(), can_ssl()
    • Addresses
  • EXAMPLES
  • EXPORTS
  • KNOWN BUGS
  • SEE ALSO
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::Time - time and daytime network client interface โฐ

asking a server "bestie what time is it" but officially ๐Ÿ•ฐ๏ธ

  • SYNOPSIS
  • DESCRIPTION
    • Functions
      • inet_time([$host[, $protocol[, $timeout]]]), inet_daytime([$host[, $protocol[, $timeout]]])
  • EXPORTS
    • Default Exports, Optional Exports, Export Tags
  • KNOWN BUGS
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

Net::hostent - by-name interface to Perl's built-in gethost*() functions ๐ŸŒ

by-name glow-up for the built-in host lookups, iconic โœจ

  • SYNOPSIS
  • DESCRIPTION
  • EXAMPLES
  • NOTE
  • AUTHOR

Net::libnetFAQ, libnetFAQ - libnet Frequently Asked Questions โ“

the FAQ!! this is the "just read the FAQ bestie" FAQ ๐Ÿ˜ญ every single question is listed below, we're not skimming

  • DESCRIPTION
    • Where to get this document
    • How to contribute to this document
  • Author and Copyright Information
    • Disclaimer
  • Obtaining and installing libnet
    • What is libnet ?
    • Which version of perl do I need ?
    • What other modules do I need ?
    • What machines support libnet ?
    • Where can I get the latest libnet release
  • Using Net::FTP
    • How do I download files from an FTP server ?
    • How do I transfer files in binary mode ?
    • How can I get the size of a file on a remote FTP server ?
    • How can I get the modification time of a file on a remote FTP server ?
    • How can I change the permissions of a file on a remote server ?
    • Can I do a reget operation like the ftp command ?
    • How do I get a directory listing from an FTP server ?
    • Changing directory to "" does not fail ?
    • I am behind a SOCKS firewall, but the Firewall option does not work ?
    • I am behind an FTP proxy firewall, but cannot access machines outside ?
    • My ftp proxy firewall does not listen on port 21
    • Is it possible to change the file permissions of a file on an FTP server ?
    • I have seen scripts call a method message, but cannot find it documented ?
    • Why does Net::FTP not implement mput and mget methods
  • Using Net::SMTP
    • Why can't the part of an Email address after the @ be used as the hostname ?
    • Why does Net::SMTP not do DNS MX lookups ?
    • The verify method always returns true ?
  • Debugging scripts
    • How can I debug my scripts that use Net::* modules ?
  • AUTHOR AND COPYRIGHT

Net::netent - by-name interface to Perl's built-in getnet*() functions ๐Ÿ•ธ๏ธ

network-by-name but make it tidy ๐Ÿซถ

  • SYNOPSIS
  • DESCRIPTION
  • EXAMPLES
  • NOTE
  • AUTHOR

Net::protoent - by-name interface to Perl's built-in getproto*() functions ๐Ÿ“ก

protocol names, served with a little bow ๐ŸŽ€

  • SYNOPSIS
  • DESCRIPTION
  • NOTE
  • AUTHOR

Net::servent - by-name interface to Perl's built-in getserv*() functions ๐Ÿ”Œ

service names by name, yes bestie it's that simple ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • EXAMPLES
  • NOTE
  • AUTHOR

O - Generic interface to Perl Compiler backends ๐Ÿง™

just the letter O, single-letter module name, main character energy fr fr ๐Ÿ‘‘

  • SYNOPSIS
  • DESCRIPTION
  • CONVENTIONS
  • IMPLEMENTATION
  • BUGS
  • AUTHOR

ODBM_File โ€” tied access to odbm files ๐Ÿ’พ

Okay bestie, this is the module that lets you tie a Perl hash to an old-school odbm file so your data lives on disk instead of just vibing in RAM. Here's the whole table of contents for it:

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
    • "O_RDONLY", "O_WRONLY", "O_RDWR"
  • DIAGNOSTICS ๐Ÿฉบ
    • "odbm store returned -1, errno 22, key "..." at ..."
  • SECURITY AND PORTABILITY ๐Ÿ”’
  • BUGS AND WARNINGS โš ๏ธ

Opcode โ€” disable named opcodes when compiling perl code ๐Ÿšซ

The module that lets you lock down which Perl opcodes are even allowed to exist at compile time. It's giving security girlie. Its TOC is:

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • NOTE ๐Ÿ“Œ
  • WARNING ๐Ÿšจ
  • Operator Names and Operator Lists ๐Ÿงพ
    • an operator name (opname), an operator tag name (optag), a negated opname or optag, an operator set (opset)
  • Opcode Functions โš™๏ธ
    • opcodes, opset (OP, ...), opset_to_ops (OPSET), opset_to_hex (OPSET), full_opset, empty_opset, invert_opset (OPSET), verify_opset (OPSET, ...), define_optag (OPTAG, OPSET), opmask_add (OPSET), opmask, opdesc (OP, ...), opdump (PAT)
  • Manipulating Opsets ๐ŸŽ›๏ธ
  • TO DO (maybe) ๐Ÿ“
  • Predefined Opcode Tags ๐Ÿท๏ธ
    • :base_core, :base_mem, :base_loop, :base_io, :base_orig, :base_math, :base_thread, :default, :filesys_read, :sys_db, :browse, :filesys_open, :filesys_write, :subprocess, :ownprocess, :others, :load, :still_to_be_decided, :dangerous
  • SEE ALSO ๐Ÿ‘€
  • AUTHORS โœ๏ธ

POSIX โ€” Perl interface to IEEE Std 1003.1 ๐Ÿ‘‘

The absolute icon. It's the Perl side of the POSIX standard, and its TOC is chef's kiss long. Periodt.

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • CAVEATS โš ๏ธ
  • FUNCTIONS ๐Ÿ› ๏ธ
"_exit", "abort", "abs", "access", "acos", "acosh", "alarm", "asctime",
"asin", "asinh", "assert", "atan", "atanh", "atan2", "atexit", "atof",
"atoi", "atol", "bsearch", "calloc", "cbrt", "ceil", "chdir", "chmod",
"chown", "clearerr", "clock", "close", "closedir", "cos", "cosh",
"copysign", "creat", "ctermid", "ctime", "cuserid" [POSIX.1-1988],
"difftime", "div", "dup", "dup2", "erf", "erfc", "errno", "execl",
"execle", "execlp", "execv", "execve", "execvp", "exit", "exp", "expm1",
"fabs", "fcntl", "fdopen", "feof", "ferror", "fflush", "fgetc", "fgetpos",
"fgets", "fileno", "floor", "fdim", "fegetround", "fesetround", "fma",
"fmax", "fmin", "fmod", "fopen", "fork", "fpathconf", "fpclassify",
"fprintf", "fputc", "fputs", "fread", "free", "freopen", "frexp", "fscanf",
"fseek", "fsetpos", "fstat", "fsync", "ftell", "fwrite", "getc", "getchar",
"getcwd", "getegid", "getenv", "geteuid", "getgid", "getgrgid", "getgrnam",
"getgroups", "getlogin", "getpayload", "getpgrp", "getpid", "getppid",
"getpwnam", "getpwuid", "gets", "getuid", "gmtime", "hypot", "ilogb",
"Inf", "isalnum", "isalpha", "isatty", "iscntrl", "isdigit", "isfinite",
"isgraph", "isgreater", "isinf", "islower", "isnan", "isnormal", "isprint",
"ispunct", "issignaling", "isspace", "isupper", "isxdigit", "j0", "j1",
"jn", "y0", "y1", "yn", "kill", "labs", "lchown", "ldexp", "ldiv",
"lgamma", "log1p", "log2", "logb", "link", "localeconv", "localtime",
"log", "log10", "longjmp", "lseek", "lrint", "lround", "malloc", "mblen",
"mbtowc", "memchr", "memcmp", "memcpy", "memmove", "memset", "mkdir",
"mkfifo", "mktime", "modf", "NaN", "nan", "nearbyint", "nextafter",
"nexttoward", "nice", "offsetof", "open", "opendir", "pathconf", "pause",
"perror", "pipe", "pow", "printf", "putc", "putchar", "puts", "qsort",
"raise", "rand", "read", "readdir", "realloc", "remainder", "remove",
"remquo", "rename", "rewind", "rewinddir", "rint", "rmdir", "round",
"scalbn", "scanf", "setgid", "setjmp", "setlocale", "setpayload",
"setpayloadsig", "setpgid", "setsid", "setuid", "sigaction", "siglongjmp",
"signbit", "sigpending", "sigprocmask", "sigsetjmp", "sigsuspend", "sin",
"sinh", "sleep", "sprintf", "sqrt", "srand", "sscanf", "stat", "strcat",
"strchr", "strcmp", "strcoll", "strcpy", "strcspn", "strerror", "strftime",
"strlen", "strncat", "strncmp", "strncpy", "strpbrk", "strrchr", "strspn",
"strstr", "strtod", "strtok", "strtol", "strtold", "strtoul", "strxfrm",
"sysconf", "system", "tan", "tanh", "tcdrain", "tcflow", "tcflush",
"tcgetpgrp", "tcsendbreak", "tcsetpgrp", "tgamma", "time", "times",
"tmpfile", "tmpnam", "tolower", "toupper", "trunc", "ttyname", "tzname",
"tzset", "umask", "uname", "ungetc", "unlink", "utime", "vfprintf",
"vprintf", "vsprintf", "wait", "waitpid", "wctomb", "write"
  • CLASSES ๐Ÿ›๏ธ
    • "POSIX::SigAction"
      • "new", "handler", "mask", "flags", "safe"
    • "POSIX::SigRt"
      • %SIGRT, "SIGRTMIN", "SIGRTMAX"
    • "POSIX::SigSet"
      • "new", "addset", "delset", "emptyset", "fillset", "ismember"
    • "POSIX::Termios"
      • "new", "getattr", "getcc", "getcflag", "getiflag", "getispeed", "getlflag", "getoflag", "getospeed", "setattr", "setcc", "setcflag", "setiflag", "setispeed", "setlflag", "setoflag", "setospeed", Baud rate values, Terminal interface values, "c_cc" field values, "c_cflag" field values, "c_iflag" field values, "c_lflag" field values, "c_oflag" field values
  • PATHNAME CONSTANTS ๐Ÿ“‚
    • Constants
  • POSIX CONSTANTS ๐Ÿ“Œ
    • Constants
  • RESOURCE CONSTANTS ๐Ÿงฎ
    • Constants
  • SYSTEM CONFIGURATION ๐Ÿ–ฅ๏ธ
    • Constants
  • ERRNO ๐Ÿšจ
    • Constants
  • FCNTL ๐Ÿ”ง
    • Constants
  • FLOAT ๐ŸŒŠ
    • Constants
  • FLOATING-POINT ENVIRONMENT ๐ŸŽˆ
    • Constants
  • LIMITS ๐Ÿ“
    • Constants
  • LOCALE ๐ŸŒ
    • Constants
  • MATH โž—
    • Constants
  • SIGNAL ๐Ÿ“ก
    • Constants
  • STAT ๐Ÿ“Š
    • Constants, Macros
  • STDLIB ๐Ÿ“š
    • Constants
  • STDIO ๐Ÿ’ป
    • Constants
  • TIME โฐ
    • Constants
  • UNISTD ๐Ÿง
    • Constants
  • WAIT โŒ›
    • Constants, "WNOHANG", "WUNTRACED", Macros, "WIFEXITED", "WEXITSTATUS", "WIFSIGNALED", "WTERMSIG", "WIFSTOPPED", "WSTOPSIG"
  • WINSOCK ๐ŸชŸ
    • Constants

Params::Check โ€” a generic input parsing/checking mechanism ๐Ÿ”

Your fave little helper for validating args, no cap. TOC:

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • Template ๐Ÿ“‹
    • default, required, strict_type, defined, no_override, store, allow
  • Functions ๐Ÿ› ๏ธ
    • check( \%tmpl, \%args, [$verbose] );
      • Template, Arguments, Verbose
    • allow( $test_me, \@criteria );
      • string, regexp, subroutine, array ref
    • last_error()
  • Global Variables ๐ŸŒ
    • $Params::Check::VERBOSE
    • $Params::Check::STRICT_TYPE
    • $Params::Check::ALLOW_UNKNOWN
    • $Params::Check::STRIP_LEADING_DASHES
    • $Params::Check::NO_DUPLICATES
    • $Params::Check::PRESERVE_CASE
    • $Params::Check::ONLY_ALLOW_DEFINED
    • $Params::Check::SANITY_CHECK_TEMPLATE
    • $Params::Check::WARNINGS_FATAL
    • $Params::Check::CALLER_DEPTH
  • Acknowledgements ๐Ÿซถ
  • BUG REPORTS ๐Ÿ›
  • AUTHOR โœ๏ธ
  • COPYRIGHT ยฉ๏ธ

Parse::CPAN::Meta โ€” parse META.yml and META.json CPAN metadata files ๐Ÿ“ฆ

Reads all the CPAN metadata files so you don't have to. Here's everything it's got:

  • VERSION ๐Ÿท๏ธ
  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • METHODS ๐Ÿ› ๏ธ
    • load_file
    • load_yaml_string
    • load_json_string
    • load_string
    • yaml_backend
    • json_backend
    • json_decoder
  • FUNCTIONS โš™๏ธ
    • Load
    • LoadFile
  • ENVIRONMENT ๐ŸŒ
    • CPAN_META_JSON_DECODER
    • CPAN_META_JSON_BACKEND
    • PERL_JSON_BACKEND
    • PERL_YAML_BACKEND
  • AUTHORS โœ๏ธ
  • COPYRIGHT AND LICENSE ยฉ๏ธ

Perl::OSType โ€” map Perl operating system names to generic types ๐Ÿ—บ๏ธ

It's giving translator for OS names. TOC:

  • VERSION ๐Ÿท๏ธ
  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • USAGE ๐ŸŽฏ
    • os_type()
    • is_os_type()
  • SEE ALSO ๐Ÿ‘€
  • SUPPORT ๐Ÿ†˜
    • Bugs / Feature Requests
    • Source Code
  • AUTHOR โœ๏ธ
  • CONTRIBUTORS ๐Ÿซถ
  • COPYRIGHT AND LICENSE ยฉ๏ธ

PerlIO โ€” on demand loader for PerlIO layers and root of PerlIO::* name space ๐ŸŒ€

The whole vibe of PerlIO lives here. Its TOC:

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
    • Layers ๐Ÿง…
      • :unix, :stdio, :perlio, :crlf, :utf8, :bytes, :raw, :pop
    • Custom Layers ๐ŸŽจ
      • :encoding, :mmap, :via, :scalar
    • Alternatives to raw ๐Ÿงผ
    • Defaults and how to override them ๐Ÿ”€
    • Querying the layers of filehandles ๐Ÿ”Ž
  • AUTHOR โœ๏ธ
  • SEE ALSO ๐Ÿ‘€

PerlIO::encoding โ€” encoding layer ๐Ÿ”ค

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • SEE ALSO ๐Ÿ‘€

PerlIO::mmap โ€” memory mapped IO ๐Ÿง 

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • IMPLEMENTATION NOTE ๐Ÿ“Œ

PerlIO::scalar โ€” in-memory IO, scalar IO ๐Ÿ’ญ

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • IMPLEMENTATION NOTE ๐Ÿ“Œ

PerlIO::via โ€” helper class for PerlIO layers implemented in perl ๐ŸŽ€

The blueprint for writing your own PerlIO layers in pure Perl. Its TOC:

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • EXPECTED METHODS ๐Ÿ› ๏ธ
    • $class->PUSHED([$mode,[$fh]]), $obj->POPPED([$fh]), $obj->UTF8($belowFlag,[$fh]), $obj->OPEN($path,$mode,[$fh]), $obj->BINMODE([$fh]), $obj->FDOPEN($fd,[$fh]), $obj->SYSOPEN($path,$imode,$perm,[$fh]), $obj->FILENO($fh), $obj->READ($buffer,$len,$fh), $obj->WRITE($buffer,$fh), $obj->FILL($fh), $obj->CLOSE($fh), $obj->SEEK($posn,$whence,$fh), $obj->TELL($fh), $obj->UNREAD($buffer,$fh), $obj->FLUSH($fh), $obj->SETLINEBUF($fh), $obj->CLEARERR($fh), $obj->ERROR($fh), $obj->EOF($fh)
  • EXAMPLES ๐Ÿ’ก
    • Example - a Hexadecimal Handle

PerlIO::via::QuotedPrint โ€” PerlIO layer for quoted-printable strings ๐Ÿ“ง

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ“
  • EXPORTS ๐Ÿ“ค
  • KNOWN BUGS ๐Ÿ›
  • FEEDBACK ๐Ÿ’ฌ
  • SEE ALSO ๐Ÿ‘€
  • ACKNOWLEDGEMENTS ๐Ÿซถ
  • AVAILABILITY ๐Ÿ“ฆ
  • INSTALLATION ๐Ÿ”ง
  • AUTHOR โœ๏ธ
  • COPYRIGHT ยฉ๏ธ
  • LICENCE ๐Ÿ“œ
  • VERSION ๐Ÿท๏ธ
  • DATE ๐Ÿ“…
  • HISTORY ๐Ÿ“–

Pod::Checker โ€” check pod documents for syntax errors ๐Ÿ”

The pod quality-control bestie. Here's the whole TOC:

  • SYNOPSIS โœจ
  • OPTIONS/ARGUMENTS ๐ŸŽ›๏ธ
    • podchecker()
      • -warnings => val, -quiet => val
  • DESCRIPTION ๐Ÿ“
  • DIAGNOSTICS ๐Ÿฉบ
    • Errors ๐Ÿšจ
      • empty =headn
      • =over on line N without closing =back
      • You forgot a '=back' before '=headN'
      • =over is the last thing in the document?!
      • '=item' outside of any '=over'
      • =back without =over
      • Can't have a 0 in =over N
      • =over should be: '=over' or '=over positive_number'
      • =begin TARGET without matching =end TARGET
      • =begin without a target?
      • =end TARGET without matching =begin
      • '=end' without a target?
      • '=end TARGET' is invalid
      • =end CONTENT doesn't match =begin TARGET
      • =for without a target?
      • unresolved internal link NAME
      • Unknown directive: CMD
      • Deleting unknown formatting code SEQ
      • Unterminated SEQ<> sequence
      • An E<...> surrounding strange content
      • An empty E<>
      • An empty "L<>"
      • An empty X<>
      • Spurious text after =pod / =cut
      • =back doesn't take any parameters, but you said =back ARGUMENT
      • =pod directives shouldn't be over one line long! Ignoring all N lines of content
      • =cut found outside a pod block
      • Invalid =encoding syntax: CONTENT

โœจ Warnings โœจ

the lil red flags ๐Ÿšฉ Pod::Checker will absolutely clock you for โ€” every single one, no cap:

  • nested commands CMD<...CMD<...>...>
  • multiple occurrences (N) of link target name
  • line containing nothing but whitespace in paragraph
  • =item has no contents
  • You can't have =items (as at line N) unless the first thing after the =over is an =item
  • Expected '=item EXPECTED VALUE'
  • Expected '=item *'
  • Possible =item type mismatch: 'x' found leading a supposed definition =item
  • You have '=item x' instead of the expected '=item N'
  • Unknown E content in E<CONTENT>
  • empty =over/=back block
  • empty section in previous paragraph
  • Verbatim paragraph in NAME section
  • =headn without preceding higher level
  • A non-empty Z<>
  • ignoring leading/trailing whitespace in link
  • alternative text/node '%s' contains non-escaped | or /

๐Ÿ’– RETURN VALUE ๐Ÿ’–

it's giving "go read the real page, bestie" โ€” this section has its own whole moment in the full docs ๐Ÿ‘‘

๐Ÿ’– EXAMPLES ๐Ÿ’–

yep, examples live here. iconic behaviour fr.

๐Ÿ’– SCRIPTS ๐Ÿ’–

this one's got its own section too. lowkey important.

๐Ÿ’– INTERFACE ๐Ÿ’–

the whole method squad ๐Ÿซถ โ€” every last one of them:

end_B, end_C, end_Document, end_F, end_I, end_L, end_Para, end_S, end_X, end_fcode, end_for, end_head, end_head1, end_head2, end_head3, end_head4, end_item, end_item_bullet, end_item_number, end_item_text, handle_pod_and_cut, handle_text, handle_whiteline, hyperlink, scream, start_B, start_C, start_Data, start_F, start_I, start_L, start_Para, start_S, start_Verbatim, start_X, start_fcode, start_for, start_head, start_head1, start_head2, start_head3, start_head4, start_item_bullet, start_item_number, start_item_text, start_over, start_over_block, start_over_bullet, start_over_empty, start_over_number, start_over_text, whine


and then the actual documented methods, each with its own lil heading in the real page โœจ:

  • Pod::Checker->new( %options )
  • $checker->poderror( @args ), $checker->poderror( {%opts}, @args )
  • $checker->num_errors()
  • $checker->num_warnings()
  • $checker->name()
  • $checker->node()
  • $checker->idx()
  • $checker->hyperlinks()
  • line()
  • type()
  • page()
  • node()

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

(their section, their name, go look ๐Ÿ’…)


๐ŸŒธ Pod::Escapes โ€” for resolving Pod E<...> sequences ๐ŸŒธ

SYNOPSIS

DESCRIPTION

๐ŸŽ GOODIES ๐ŸŽ

the lil treats you get handed:

  • e2char($e_content)
  • e2charnum($e_content)
  • $Name2character{name}
  • $Name2character_number{name}
  • $Latin1Code_to_fallback{integer}
  • $Latin1Char_to_fallback{character}
  • $Code2USASCII{integer}

CAVEATS

SEE ALSO

REPOSITORY

AUTHOR


๐Ÿฆ‹ Pod::Html โ€” module to convert pod files to HTML ๐Ÿฆ‹

SYNOPSIS

DESCRIPTION

๐Ÿ’… FUNCTIONS ๐Ÿ’…

pod2html

all the knobs and switches you can turn ๐Ÿ”ง:

  • backlink
  • cachedir
  • css
  • flush
  • header
  • help
  • htmldir
  • htmlroot
  • index
  • infile
  • outfile
  • poderrors
  • podpath
  • podroot
  • quiet
  • recurse
  • title
  • verbose

Formerly Exported Auxiliary Functions

the OGs that used to be out here doing the most:

  • htmlify() (by default)
  • anchorify() (upon request)
  • relativize_url() (upon request)

ENVIRONMENT

AUTHOR

SEE ALSO


๐Ÿงš Pod::Html::Util โ€” helper functions for Pod-Html ๐Ÿงš

SUBROUTINES

the whole helper squad, serving looks โœจ:

  • process_command_line()
  • usage()
  • unixify()
  • relativize_url()
  • html_escape()
  • htmlify()
  • anchorify()
  • trim_leading_whitespace()

๐ŸŽ€ Pod::Man โ€” Convert POD data to formatted *roff input ๐ŸŽ€

SYNOPSIS

DESCRIPTION

๐ŸŒŸ CLASS METHODS ๐ŸŒŸ

new(ARGS) and the full roster of constructor-ish options โ€” every single one:

  • center
  • date
  • encoding
  • errors
  • fixed
  • fixedbold
  • fixeditalic
  • fixedbolditalic
  • guesswork
  • functions
  • manref
  • quoting
  • variables
  • language
  • lquote
  • rquote
  • name
  • nourls
  • quotes
  • release
  • section
  • stderr
  • utf8

๐ŸŒŸ INSTANCE METHODS ๐ŸŒŸ

  • output_fh(FH)
  • output_string(REF)
  • parse_file(PATH)
  • parse_from_file(INPUT, OUTPUT)
  • parse_from_filehandle(FH, OUTPUT)
  • parse_lines(LINES[, ...[, undef]])
  • parse_string_document(INPUT)

๐ŸŒˆ ENCODING ๐ŸŒˆ

History

Testing results

  • [1]
  • [2]
  • [3]

๐Ÿฉบ DIAGNOSTICS ๐Ÿฉบ

the messages it will hit you with:

  • roff font should be 1 or 2 chars, not "%s"
  • Invalid errors setting "%s"
  • Invalid quote specification "%s"
  • POD document had syntax errors

๐ŸŒฑ ENVIRONMENT ๐ŸŒฑ

  • PERL_CORE
  • POD_MAN_DATE
  • SOURCE_DATE_EPOCH

COMPATIBILITY

BUGS

CAVEATS

Sentence spacing

Hyphens and quotes

AUTHOR

SEE ALSO


SYNOPSIS

DESCRIPTION

AUTHOR

SEE ALSO


๐ŸŒธ Pod::Perldoc โ€” Look up Perl documentation in Pod format. ๐ŸŒธ

SYNOPSIS

DESCRIPTION

SEE ALSO

AUTHOR


๐ŸŒธ Pod::Perldoc::BaseTo โ€” Base for Pod::Perldoc formatters ๐ŸŒธ

SYNOPSIS

DESCRIPTION

SEE ALSO

AUTHOR


๐ŸŒธ Pod::Perldoc::GetOptsOO โ€” Customized option parser for Pod::Perldoc ๐ŸŒธ

SYNOPSIS

DESCRIPTION

the whole decision tree, bestie, spelled out:

  • Call Pod::Perldoc::GetOptsOO::getopts($object, \@ARGV, $truth)
  • Given -n, if there's a opt_n_with, it'll call $object->opt_n_with( ARGUMENT ) (e.g., "-n foo" => $object->opt_n_with('foo'). Ditto "-nfoo")
  • Otherwise (given -n) if there's an opt_n, we'll call it $object->opt_n($truth) (Truth defaults to 1)
  • Otherwise we try calling $object->handle_unknown_option('n') (and we increment the error count by the return value of it)
  • If there's no handle_unknown_option, then we just warn, and then increment the error counter

SEE ALSO

AUTHOR


๐ŸŽจ Pod::Perldoc::ToANSI โ€” render Pod with ANSI color escapes ๐ŸŽจ

SYNOPSIS

DESCRIPTION

CAVEAT

SEE ALSO

AUTHOR


๐Ÿฉบ Pod::Perldoc::ToChecker โ€” let Perldoc check Pod for errors ๐Ÿฉบ

SYNOPSIS

DESCRIPTION

SEE ALSO

AUTHOR


๐Ÿ“– Pod::Perldoc::ToMan โ€” let Perldoc render Pod as man pages ๐Ÿ“–

SYNOPSIS

DESCRIPTION

CAVEAT

SEE ALSO

AUTHOR


๐Ÿ“œ Pod::Perldoc::ToNroff โ€” let Perldoc convert Pod to nroff ๐Ÿ“œ

SYNOPSIS

DESCRIPTION

CAVEAT

SEE ALSO

AUTHOR


๐Ÿชž Pod::Perldoc::ToPod โ€” let Perldoc render Pod as ... Pod! ๐Ÿชž

SYNOPSIS

DESCRIPTION

SEE ALSO

AUTHOR


๐Ÿ“„ Pod::Perldoc::ToRtf โ€” let Perldoc render Pod as RTF ๐Ÿ“„

SYNOPSIS

DESCRIPTION

SEE ALSO

AUTHOR


๐Ÿ–ฅ๏ธ Pod::Perldoc::ToTerm โ€” render Pod with terminal escapes ๐Ÿ–ฅ๏ธ

SYNOPSIS

DESCRIPTION

PAGER FORMATTING

CAVEAT

SEE ALSO

AUTHOR


๐Ÿ“ Pod::Perldoc::ToText โ€” let Perldoc render Pod as plaintext ๐Ÿ“

SYNOPSIS

DESCRIPTION

CAVEAT

SEE ALSO

AUTHOR


๐ŸชŸ Pod::Perldoc::ToTk โ€” let Perldoc use Tk::Pod to render Pod ๐ŸชŸ

SYNOPSIS

DESCRIPTION

SEE ALSO

AUTHOR


๐Ÿ—‚๏ธ Pod::Perldoc::ToXml โ€” let Perldoc render Pod as XML ๐Ÿ—‚๏ธ

SYNOPSIS

DESCRIPTION

SEE ALSO

AUTHOR


๐Ÿ‘‘ Pod::Simple โ€” framework for parsing Pod ๐Ÿ‘‘

SYNOPSIS

DESCRIPTION

๐Ÿ”ฅ MAIN METHODS ๐Ÿ”ฅ

  • $parser = SomeClass->new();
  • $parser->output_fh( *OUT );
  • $parser->output_string( \$somestring );
  • $parser->parse_file( $some_filename );
  • $parser->parse_file( *INPUT_FH );
  • $parser->parse_string_document( $all_content );
  • $parser->parse_lines( ...@lines..., undef );
  • $parser->content_seen
  • SomeClass->filter( $filename );
  • SomeClass->filter( *INPUT_FH );
  • SomeClass->filter( \$document_content );

โœจ SECONDARY METHODS โœจ

  • $parser->parse_characters( SOMEVALUE )
  • $parser->no_whining( SOMEVALUE )
  • $parser->no_errata_section( SOMEVALUE )
  • $parser->complain_stderr( SOMEVALUE )
  • $parser->source_filename
  • $parser->doc_has_started
  • $parser->source_dead
  • $parser->strip_verbatim_indent( SOMEVALUE )
  • $parser->expand_verbatim_tabs( n )

๐Ÿ’… TERTIARY METHODS ๐Ÿ’…

  • $parser->abandon_output_fh()
  • $parser->abandon_output_string()
  • $parser->accept_code( @codes )
  • $parser->accept_codes( @codes )
  • $parser->accept_directive_as_data( @directives )
  • $parser->accept_directive_as_processed( @directives )
  • $parser->accept_directive_as_verbatim( @directives )
  • $parser->accept_target( @targets )
  • $parser->accept_target_as_text( @targets )
  • $parser->accept_targets( @targets )
  • $parser->accept_targets_as_text( @targets )
  • $parser->any_errata_seen()
  • $parser->errata_seen()
  • $parser->detected_encoding()
  • $parser->encoding()
  • $parser->parse_from_file( $source, $to )
  • $parser->scream( @error_messages )
  • $parser->unaccept_code( @codes )
  • $parser->unaccept_codes( @codes )
  • $parser->unaccept_directive( @directives )
  • $parser->unaccept_directives( @directives )
  • $parser->unaccept_target( @targets )
  • $parser->unaccept_targets( @targets )
  • $parser->version_report()
  • $parser->whine( @error_messages )

ENCODING

SEE ALSO

SUPPORT

AUTHOR

the whole author squad, shoutout ๐Ÿซถ:

  • Allison Randal allison@perl.org
  • Hans Dieter Pearcey hdp@cpan.org
  • David E. Wheeler dwheeler@cpan.org
  • Karl Williamson khw@cpan.org
  • Gabor Szabo szabgab@gmail.com
  • Shawn H Corey SHCOREY at cpan.org

๐Ÿฉบ Pod::Simple::Checker -- check the Pod syntax of a document ๐Ÿฉบ

SYNOPSIS

DESCRIPTION

SEE ALSO

SUPPORT

AUTHOR

  • Allison Randal allison@perl.org
  • Hans Dieter Pearcey hdp@cpan.org
  • David E. Wheeler dwheeler@cpan.org

๐Ÿ› Pod::Simple::Debug -- put Pod::Simple into trace/debug mode ๐Ÿ›

SYNOPSIS

DESCRIPTION

CAVEATS

GUTS

SEE ALSO

SUPPORT

AUTHOR

  • Allison Randal allison@perl.org
  • Hans Dieter Pearcey hdp@cpan.org
  • David E. Wheeler dwheeler@cpan.org

๐Ÿ“ค Pod::Simple::DumpAsText -- dump Pod-parsing events as text ๐Ÿ“ค

SYNOPSIS

DESCRIPTION

SEE ALSO

SUPPORT

AUTHOR

  • Allison Randal allison@perl.org
  • Hans Dieter Pearcey hdp@cpan.org
  • David E. Wheeler dwheeler@cpan.org

๐Ÿ—ƒ๏ธ Pod::Simple::DumpAsXML -- turn Pod into XML ๐Ÿ—ƒ๏ธ

SYNOPSIS

DESCRIPTION

SEE ALSO

SUPPORT

AUTHOR

  • Allison Randal allison@perl.org
  • Hans Dieter Pearcey hdp@cpan.org
  • David E. Wheeler dwheeler@cpan.org

๐ŸŒ Pod::Simple::HTML โ€” convert Pod to HTML ๐ŸŒ

SYNOPSIS

DESCRIPTION

๐Ÿ’ป CALLING FROM THE COMMAND LINE ๐Ÿ’ป

๐Ÿ’ป CALLING FROM PERL ๐Ÿ’ป

Minimal code

More detailed example

๐Ÿ› ๏ธ METHODS ๐Ÿ› ๏ธ

  • html_css
  • html_javascript
  • title_prefix
  • title_postfix
  • html_header_before_title
  • top_anchor
  • html_h_level
  • index
  • html_header_after_title
  • html_footer

SUBCLASSING

SEE ALSO

SUPPORT

ACKNOWLEDGEMENTS

AUTHOR

  • Allison Randal allison@perl.org
  • Hans Dieter Pearcey hdp@cpan.org
  • David E. Wheeler dwheeler@cpan.org

Pod::Simple::HTMLBatch - convert several Pod files to several HTML files

okay bestie, this one is the batch converter that turns several Pod files into several HTML files. It's giving factory energy. ๐Ÿญโœจ

SYNOPSIS

DESCRIPTION

FROM THE COMMAND LINE

MAIN METHODS

Here are the main methods, no cap:

  • $batchconv = Pod::Simple::HTMLBatch->new;
  • $batchconv->batch_convert( indirs, outdir );
  • $batchconv->batch_convert( undef , ...);
  • $batchconv->batch_convert( q{@INC}, ...);
  • $batchconv->batch_convert( \@dirs , ...);
  • $batchconv->batch_convert( "somedir" , ...);
  • $batchconv->batch_convert( 'somedir:someother:also' , ...);
  • $batchconv->batch_convert( ... , undef );
  • $batchconv->batch_convert( ... , 'somedir' );

ACCESSOR METHODS

Accessor methods, slay:

  • $batchconv->verbose( nonnegative_integer );
  • $batchconv->index( true-or-false );
  • $batchconv->contents_file( filename );
  • $batchconv->contents_page_start( HTML_string );
  • $batchconv->contents_page_end( HTML_string );
  • $batchconv->add_css( $url );
  • $batchconv->add_javascript( $url );
  • $batchconv->css_flurry( true-or-false );
  • $batchconv->javascript_flurry( true-or-false );
  • $batchconv->no_contents_links( true-or-false );
  • $batchconv->html_render_class( classname );
  • $batchconv->search_class( classname );

NOTES ON CUSTOMIZATION

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::JustPod -- just the Pod, the whole Pod, and nothing but the Pod

JustPod is exactly what it says on the tin: just the Pod, the whole Pod, and nothing but the Pod. iconic ๐ŸŽ€

SYNOPSIS

DESCRIPTION

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


This one represents the "section" attributes of L codes. iykyk ๐Ÿ”—

SYNOPSIS

DESCRIPTION

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::Methody -- turn Pod::Simple events into method calls

Turn those Pod::Simple events into method calls. methody energy. ๐Ÿ’…

SYNOPSIS

DESCRIPTION

METHOD CALLING

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::PullParser -- a pull-parser interface to parsing Pod

A pull-parser interface to parsing Pod. pull up ๐Ÿงฒ

SYNOPSIS

DESCRIPTION

METHODS

Methods go hard:

  • my $token = $parser->get_token
  • $parser->unget_token( $token )
  • $parser->unget_token( $token1, $token2, ... )
  • $parser->set_source( $filename )
  • $parser->set_source( $filehandle_object )
  • $parser->set_source( \$document_source )
  • $parser->set_source( \@document_lines )
  • $parser->parse_file(...)
  • $parser->parse_string_document(...)
  • $parser->filter(...)
  • $parser->parse_from_file(...)
  • my $title_string = $parser->get_title
  • my $title_string = $parser->get_short_title
  • $author_name = $parser->get_author
  • $description_name = $parser->get_description
  • $version_block = $parser->get_version

NOTE

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::PullParserEndToken -- end-tokens from Pod::Simple::PullParser

End-tokens from Pod::Simple::PullParser. The finale. ๐ŸŽฌ

SYNOPSIS

DESCRIPTION

  • $token->tagname
  • $token->tagname(somestring)
  • $token->tag(...)
  • $token->is_tag(somestring) or $token->is_tagname(somestring)

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::PullParserStartToken -- start-tokens from Pod::Simple::PullParser

Start-tokens from Pod::Simple::PullParser. The opening act. ๐ŸŒŸ

SYNOPSIS

DESCRIPTION

  • $token->tagname
  • $token->tagname(somestring)
  • $token->tag(...)
  • $token->is_tag(somestring) or $token->is_tagname(somestring)
  • $token->attr(attrname)
  • $token->attr(attrname, newvalue)
  • $token->attr_hash

SEE ALSO

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::PullParserTextToken -- text-tokens from Pod::Simple::PullParser

Text-tokens from Pod::Simple::PullParser. The words, bestie. ๐Ÿ“

SYNOPSIS

DESCRIPTION

  • $token->text
  • $token->text(somestring)
  • $token->text_r()

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::PullParserToken -- tokens from Pod::Simple::PullParser

Tokens from Pod::Simple::PullParser. Token vibes. ๐ŸŽŸ๏ธ

SYNOPSIS

DESCRIPTION

  • $token->type
  • $token->is_start
  • $token->is_text
  • $token->is_end
  • $token->dump

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::RTF -- format Pod as RTF

Format Pod as RTF. Rich Text Format, but make it Pod. fancy โœจ

SYNOPSIS

DESCRIPTION

FORMAT CONTROL ATTRIBUTES

  • $parser->head1_halfpoint_size( halfpoint_integer );
  • $parser->head2_halfpoint_size( halfpoint_integer );
  • $parser->head3_halfpoint_size( halfpoint_integer );
  • $parser->head4_halfpoint_size( halfpoint_integer );
  • $parser->codeblock_halfpoint_size( halfpoint_integer );
  • $parser->header_halfpoint_size( halfpoint_integer );
  • $parser->normal_halfpoint_size( halfpoint_integer );
  • $parser->no_proofing_exemptions( true_or_false );
  • $parser->doc_lang( microsoft_decimal_language_code )

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::Search - find POD documents in directory trees

Find POD documents in directory trees. Detective mode. ๐Ÿ”

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

ACCESSORS

  • $search->inc( true-or-false );
  • $search->verbose( nonnegative-number );
  • $search->limit_glob( some-glob-string );
  • $search->callback( \&some_routine );
  • $search->laborious( true-or-false );
  • $search->recurse( true-or-false );
  • $search->shadows( true-or-false );
  • $search->is_case_insensitive( true-or-false );
  • $search->limit_re( some-regxp );
  • $search->dir_prefix( some-string-value );
  • $search->progress( some-progress-object );
  • $name2path = $self->name2path;
  • $path2name = $self->path2name;

MAIN SEARCH METHODS

  • "$search->survey( @directories )"
    • "name2path"
    • "path2name"
  • "$search->simplify_name( $str )"
  • "$search->find( $pod )"
  • "$search->find( $pod, @search_dirs )"
  • "$self->contains_pod( $file )"

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::SimpleTree -- parse Pod into a simple parse tree

Parse Pod into a simple parse tree. Tree time. ๐ŸŒณ

SYNOPSIS

DESCRIPTION

METHODS

Tree Contents

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::Subclassing -- write a formatter as a Pod::Simple subclass

Write a formatter as a Pod::Simple subclass. Main character energy. ๐Ÿ‘‘

SYNOPSIS

DESCRIPTION

  • Pod::Simple
  • Pod::Simple::Methody
  • Pod::Simple::PullParser
  • Pod::Simple::SimpleTree

Events

  • "$parser->_handle_element_start( element_name, attr_hashref )"
  • "$parser->_handle_element_end( element_name )"
  • "$parser->_handle_text( text_string )"
  • events with an element_name of Document
  • events with an element_name of Para
  • events with an element_name of B, C, F, or I
  • events with an element_name of S
  • events with an element_name of X
  • events with an element_name of L
  • events with an element_name of E or Z
  • events with an element_name of Verbatim
  • events with an element_name of head1 .. head4
  • events with an element_name of encoding
  • events with an element_name of over-bullet
  • events with an element_name of over-number
  • events with an element_name of over-text
  • events with an element_name of over-block
  • events with an element_name of over-empty
  • events with an element_name of item-bullet
  • events with an element_name of item-number
  • events with an element_name of item-text
  • events with an element_name of for
  • events with an element_name of Data

More Pod::Simple Methods

  • "$parser->accept_targets( SOMEVALUE )"
  • "$parser->accept_targets_as_text( SOMEVALUE )"
  • "$parser->accept_codes( Codename, Codename... )"
  • "$parser->accept_directive_as_data( directive_name )"
  • "$parser->accept_directive_as_verbatim( directive_name )"
  • "$parser->accept_directive_as_processed( directive_name )"
  • "$parser->nbsp_for_S( BOOLEAN );"
  • "$parser->version_report()"
  • "$parser->pod_para_count()"
  • "$parser->line_count()"
  • "$parser->nix_X_codes( SOMEVALUE )"
  • "$parser->keep_encoding_directive( SOMEVALUE )"
  • "$parser->merge_text( SOMEVALUE )"
  • "$parser->code_handler( CODE_REF )"
  • "$parser->cut_handler( CODE_REF )"
  • "$parser->pod_handler( CODE_REF )"
  • "$parser->whiteline_handler( CODE_REF )"
  • "$parser->whine( linenumber, complaint string )"
  • "$parser->scream( linenumber, complaint string )"
  • "$parser->source_dead(1)"
  • "$parser->hide_line_numbers( SOMEVALUE )"
  • "$parser->no_whining( SOMEVALUE )"
  • "$parser->no_errata_section( SOMEVALUE )"
  • "$parser->complain_stderr( SOMEVALUE )"
  • "$parser->bare_output( SOMEVALUE )"
  • "$parser->preserve_whitespace( SOMEVALUE )"
  • "$parser->parse_empty_lists( SOMEVALUE )"

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::Text -- format Pod as plaintext

Format Pod as plaintext. No frills, just text. clean ๐Ÿงผ

SYNOPSIS

DESCRIPTION

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::TextContent -- get the text content of Pod

Get the text content of Pod. Just the words, ma'am. ๐Ÿ“„

SYNOPSIS

DESCRIPTION

SEE ALSO

SUPPORT

AUTHOR

Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".


Pod::Simple::XHTML -- format Pod as validating XHTML

Format Pod as validating XHTML. Validating, bestie. โœ…

SYNOPSIS

DESCRIPTION

Minimal code

โœจ METHODS โœจ

okay bestie, here's the full method lineup for this one โ€” every single one, we're not skipping a thing:

  • perldoc_url_prefix
  • perldoc_url_postfix
  • man_url_prefix
  • man_url_postfix
  • title_prefix, title_postfix
  • html_css
  • html_javascript
  • html_doctype
  • html_charset
  • html_header_tags
  • html_h_level
  • default_title
  • force_title
  • html_header, html_footer
  • index
  • anchor_items
  • backlink

โœจ SUBCLASSING โœจ

the subclassing toolkit, if you're feeling adventurous:

  • handle_text
  • handle_code
  • accept_targets_as_html

โœจ idify โœจ

โœจ batch_mode_page_object_init โœจ

โœจ SEE ALSO โœจ

โœจ SUPPORT โœจ

โœจ ACKNOWLEDGEMENTS โœจ

โœจ AUTHOR โœจ

  • Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org"

๐Ÿฆ‹ Pod::Simple::XMLOutStream -- turn Pod into XML

it literally turns Pod into XML, that's the whole vibe, iconic.

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ SEE ALSO โœจ

โœจ ABOUT EXTENDING POD โœจ

โœจ SEE ALSO โœจ

โœจ SUPPORT โœจ

โœจ AUTHOR โœจ

  • Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org"

๐ŸŽ€ Pod::Text - Convert POD data to formatted text

POD in, formatted text out, periodt.

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

๐Ÿ’œ Encoding ๐Ÿ’œ

โœจ CLASS METHODS โœจ

  • new(ARGS)
  • alt
  • code
  • encoding
  • errors
  • guesswork
  • quoting
  • indent
  • loose
  • margin
  • nourls
  • quotes
  • sentence
  • stderr
  • utf8
  • width

โœจ INSTANCE METHODS โœจ

  • output_fh(FH)
  • output_string(REF)
  • parse_file(PATH)
  • parse_from_file(INPUT, OUTPUT)
  • parse_from_filehandle(FH, OUTPUT)
  • parse_lines(LINES[, ...[, undef]])
  • parse_string_document(INPUT)

โœจ FUNCTIONS โœจ

  • pod2text([[-a,] [-NNN,]] INPUT[, OUTPUT])

โœจ DIAGNOSTICS โœจ

  • Bizarre space in item
  • Item called without tag
  • Can't open %s for reading: %s
  • Invalid errors setting "%s"
  • Invalid quote specification "%s"
  • POD document had syntax errors

โœจ COMPATIBILITY โœจ

โœจ CAVEATS โœจ

โœจ AUTHOR โœจ

โœจ SEE ALSO โœจ


๐ŸŒˆ Pod::Text::Color - Convert POD data to formatted color ASCII text

color ASCII text, so aesthetic, so demure.

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ COMPATIBILITY โœจ

โœจ CAVEATS โœจ

โœจ AUTHOR โœจ

โœจ SEE ALSO โœจ


๐ŸŒธ Pod::Text::Overstrike - Convert POD data to formatted overstrike text

overstrike text โ€” giving typewriter-chic, no notes.

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ BUGS โœจ

โœจ COMPATIBILITY โœจ

โœจ CAVEATS โœจ

โœจ AUTHOR โœจ

โœจ SEE ALSO โœจ


๐Ÿฆ‹ Pod::Text::Termcap - Convert POD data to ASCII text with format escapes

format escapes in your ASCII text, fancy fr fr.

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ COMPATIBILITY โœจ

โœจ CAVEATS โœจ

โœจ AUTHOR โœจ

โœจ SEE ALSO โœจ


๐ŸŽ€ Pod::Usage - extracts POD documentation and shows usage information

โœจ SYNOPSIS โœจ

โœจ ARGUMENTS โœจ

every argument, bestie, all of them:

  • "-message" string
  • "-msg" string
  • "-exitval" value
  • "-verbose" value
  • "-sections" spec
  • "-output" handle
  • "-input" handle
  • "-pathlist" string
  • "-noperldoc"
  • "-perlcmd"
  • "-perldoc" path-to-perldoc
  • "-perldocopt" string

๐Ÿ’œ Formatting base class ๐Ÿ’œ

๐Ÿ’œ Pass-through options ๐Ÿ’œ

โœจ DESCRIPTION โœจ

๐Ÿ’œ Scripts ๐Ÿ’œ

โœจ EXAMPLES โœจ

โœจ CAVEATS โœจ

โœจ SUPPORT โœจ

โœจ AUTHOR โœจ

โœจ LICENSE โœจ

โœจ ACKNOWLEDGMENTS โœจ

โœจ SEE ALSO โœจ


๐ŸŒบ SDBM_File - Tied access to sdbm files

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

๐Ÿ’œ Tie ๐Ÿ’œ

โœจ EXPORTS โœจ

โœจ DIAGNOSTICS โœจ

  • "sdbm store returned -1, errno 22, key "..." at ..."

โœจ SECURITY WARNING โœจ

โœจ BUGS AND WARNINGS โœจ


๐Ÿ”ฅ Safe - Compile and execute code in restricted compartments

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

  • a new namespace
  • an operator mask

โœจ WARNING โœจ

โœจ METHODS โœจ

  • permit (OP, ...)
  • permit_only (OP, ...)
  • deny (OP, ...)
  • deny_only (OP, ...)
  • trap (OP, ...), untrap (OP, ...)
  • share (NAME, ...)
  • share_from (PACKAGE, ARRAYREF)
  • varglob (VARNAME)
  • reval (STRING, STRICT)
  • rdo (FILENAME)
  • root (NAMESPACE)
  • mask (MASK)
  • wrap_code_ref (CODEREF)
  • wrap_code_refs_within (...)

โœจ RISKS โœจ

the risky bits, be careful bestie:

  • Memory
  • CPU
  • Snooping
  • Signals
  • State Changes

โœจ AUTHOR โœจ


๐ŸŒŸ Scalar::List::Utils - A distribution of general-utility subroutines

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ MODULES โœจ

  • List::Util
  • Scalar::Util
  • Sub::Util

๐Ÿ’Ž Scalar::Util - A selection of general-utility scalar subroutines

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

๐Ÿ’œ Core Perl "builtin" Functions ๐Ÿ’œ

โœจ FUNCTIONS FOR REFERENCES โœจ

  • blessed
  • refaddr
  • reftype
  • weaken
  • unweaken
  • isweak

โœจ OTHER FUNCTIONS โœจ

  • dualvar
  • isdual
  • isvstring
  • looks_like_number
  • openhandle
  • readonly
  • set_prototype
  • tainted

โœจ DIAGNOSTICS โœจ

  • Vstrings are not implemented in this version of perl

โœจ KNOWN BUGS โœจ

โœจ SEE ALSO โœจ


๐Ÿ” Search::Dict - look - search for key in dictionary file

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ


๐ŸŽ€ SelectSaver - save and restore selected file handle

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ


๐Ÿฆ‹ SelfLoader - load functions only on demand

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

๐Ÿ’œ The __DATA__ token ๐Ÿ’œ

๐Ÿ’œ SelfLoader autoloading ๐Ÿ’œ

๐Ÿ’œ Autoloading and package lexicals ๐Ÿ’œ

๐Ÿ’œ SelfLoader and AutoLoader ๐Ÿ’œ

๐Ÿ’œ __DATA__, __END__, and the FOOBAR::DATA filehandle ๐Ÿ’œ

๐Ÿ’œ Classes and inherited methods ๐Ÿ’œ

โœจ Multiple packages and fully qualified subroutine names โœจ

โœจ AUTHOR โœจ

  • a)
  • b)

๐ŸŒˆ Socket, "Socket" - networking constants and support functions

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ CONSTANTS โœจ

โœจ PF_INET, PF_INET6, PF_UNIX, ... โœจ

โœจ AF_INET, AF_INET6, AF_UNIX, ... โœจ

โœจ SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, ... โœจ

โœจ SOCK_NONBLOCK. SOCK_CLOEXEC โœจ

โœจ SOL_SOCKET โœจ

โœจ SO_ACCEPTCONN, SO_BROADCAST, SO_ERROR, ... โœจ

โœจ IP_OPTIONS, IP_TOS, IP_TTL, ... โœจ

โœจ IP_PMTUDISC_WANT, IP_PMTUDISC_DONT, ... โœจ

โœจ IPTOS_LOWDELAY, IPTOS_THROUGHPUT, IPTOS_RELIABILITY, ... โœจ

โœจ MSG_BCAST, MSG_OOB, MSG_TRUNC, ... โœจ

โœจ SHUT_RD, SHUT_RDWR, SHUT_WR โœจ

โœจ INADDR_ANY, INADDR_BROADCAST, INADDR_LOOPBACK, INADDR_NONE โœจ

โœจ IPPROTO_IP, IPPROTO_IPV6, IPPROTO_TCP, ... โœจ

โœจ TCP_CORK, TCP_KEEPALIVE, TCP_NODELAY, ... โœจ

โœจ IN6ADDR_ANY, IN6ADDR_LOOPBACK โœจ

โœจ IPV6_ADD_MEMBERSHIP, IPV6_MTU, IPV6_V6ONLY, ... โœจ

โœจ STRUCTURE MANIPULATORS โœจ

  • sockaddr_family
  • pack_sockaddr_in
  • unpack_sockaddr_in
  • sockaddr_in
  • pack_sockaddr_in6
  • unpack_sockaddr_in6
  • sockaddr_in6
  • pack_sockaddr_un
  • unpack_sockaddr_un
  • sockaddr_un
  • pack_ip_mreq
  • unpack_ip_mreq
  • pack_ip_mreq_source
  • unpack_ip_mreq_source
  • pack_ipv6_mreq
  • unpack_ipv6_mreq

โœจ FUNCTIONS โœจ

  • inet_aton
  • inet_ntoa
  • inet_pton
  • inet_ntop
  • getaddrinfo
    • flags => INT, family => INT, socktype => INT, protocol => INT, family => INT, socktype => INT, protocol => INT, addr => STRING, canonname => STRING, AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST
  • getnameinfo
    • NI_NUMERICHOST, NI_NUMERICSERV, NI_NAMEREQD, NI_DGRAM, NIx_NOHOST, NIx_NOSERV
  • getaddrinfo() / getnameinfo() ERROR CONSTANTS
    • EAI_AGAIN, EAI_BADFLAGS, EAI_FAMILY, EAI_NODATA, EAI_NONAME, EAI_SERVICE

โœจ EXAMPLES โœจ

  • Lookup for connect()
  • Making a human-readable string out of an address
  • Resolving hostnames into IP addresses
  • Accessing socket options

โœจ AUTHOR โœจ


๐Ÿ’พ Storable - persistence for Perl data structures

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ MEMORY STORE โœจ

โœจ ADVISORY LOCKING โœจ

โœจ SPEED โœจ

โœจ CANONICAL REPRESENTATION โœจ

โœจ CODE REFERENCES โœจ

โœจ FORWARD COMPATIBILITY โœจ

  • utf8 data
  • restricted hashes
  • huge objects
  • files from future versions of Storable

โœจ ERROR REPORTING โœจ

โœจ WIZARDS ONLY โœจ

๐Ÿ’œ Hooks ๐Ÿ’œ

  • "STORABLE_freeze" obj, cloning
  • "STORABLE_thaw" obj, cloning, serialized, ..
  • "STORABLE_attach" class, cloning, serialized

๐Ÿ’œ Predicates ๐Ÿ’œ

  • "Storable::last_op_in_netorder"
  • "Storable::is_storing"
  • "Storable::is_retrieving"

๐Ÿ’œ Recursion ๐Ÿ’œ

๐Ÿ’œ Deep Cloning ๐Ÿ’œ

โœจ Storable magic โœจ

  • $info = Storable::file_magic( $filename )
  • "version"
  • "version_nv"
  • "major"
  • "minor"
  • "hdrsize"
  • "netorder"
  • "byteorder"
  • "intsize"
  • "longsize"
  • "ptrsize"
  • "nvsize"
  • "file"
  • $info = Storable::read_magic( $buffer )
  • $info = Storable::read_magic( $buffer, $must_be_file )

โœจ EXAMPLES โœจ

โœจ SECURITY WARNING โœจ

โœจ WARNING โœจ

โœจ REGULAR EXPRESSIONS โœจ

โœจ BUGS โœจ

๐Ÿ’œ 64 bit data in perl 5.6.0 and 5.6.1 ๐Ÿ’œ

โœจ CREDITS โœจ

โœจ AUTHOR โœจ

โœจ SEE ALSO โœจ


๐Ÿ”ง Sub::Util - A selection of utility subroutines for subs and CODE references

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ FUNCTIONS โœจ

  • prototype
  • set_prototype
  • subname
  • set_subname

โœจ AUTHOR โœจ


โœจ Symbol - manipulate Perl symbols and their names

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ BUGS โœจ


๐Ÿ–ฅ๏ธ Sys::Hostname - Try every conceivable way to get hostname

every conceivable way, literally every single one, obsessed.

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ AUTHOR โœจ


๐Ÿ“œ Sys::Syslog - Perl interface to the UNIX syslog(3) calls

โœจ VERSION โœจ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ EXPORTS โœจ

โœจ FUNCTIONS โœจ

  • openlog($ident, $logopt, $facility)
  • syslog($priority, $message)
  • syslog($priority, $format, @args)
  • Note
  • setlogmask($mask_priority)
  • setlogsock()
  • Note
  • closelog()

โœจ THE RULES OF SYS::SYSLOG โœจ

โœจ EXAMPLES โœจ

โœจ CONSTANTS โœจ

๐Ÿ’œ Facilities ๐Ÿ’œ

๐Ÿ’œ Levels ๐Ÿ’œ

โœจ DIAGNOSTICS โœจ

  • "Invalid argument passed to setlogsock"
  • "eventlog passed to setlogsock, but no Win32 API available"
  • "no connection to syslog available"
  • "stream passed to setlogsock, but %s is not writable"
  • "stream passed to setlogsock, but could not find any device"
  • "tcp passed to setlogsock, but tcp service unavailable"
  • "syslog: expecting argument %s"
  • "syslog: invalid level/facility: %s"
  • "syslog: too many levels given: %s"
  • "syslog: too many facilities given: %s"
  • "syslog: level must be given"
  • "udp passed to setlogsock, but udp service unavailable"
  • "unix passed to setlogsock, but path not available"

โœจ HISTORY โœจ

โœจ SEE ALSO โœจ

๐Ÿ’œ Other modules ๐Ÿ’œ

๐Ÿ’œ Manual Pages ๐Ÿ’œ

๐Ÿ’œ RFCs ๐Ÿ’œ

๐Ÿ’œ Articles ๐Ÿ’œ

๐Ÿ’œ Event Log ๐Ÿ’œ

โœจ AUTHORS & ACKNOWLEDGEMENTS โœจ

โœจ BUGS โœจ

โœจ SUPPORT โœจ

๐Ÿ’œ Perl Documentation ๐Ÿ’œ

๐Ÿ’œ MetaCPAN ๐Ÿ’œ

๐Ÿ’œ Search CPAN ๐Ÿ’œ

๐Ÿ’œ AnnoCPAN: Annotated CPAN documentation ๐Ÿ’œ

๐Ÿ’œ CPAN Ratings ๐Ÿ’œ

๐Ÿ’œ RT: CPAN's request tracker ๐Ÿ’œ

โœจ LICENSE โœจ


๐Ÿงช TAP::Base - Base class that provides common functionality to TAP::Parser and TAP::Harness

โœจ VERSION โœจ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ METHODS โœจ

๐Ÿ’œ Class Methods ๐Ÿ’œ


๐ŸŽจ TAP::Formatter::Base - Base class for harness output delegates

โœจ VERSION โœจ

โœจ DESCRIPTION โœจ

โœจ SYNOPSIS โœจ

โœจ METHODS โœจ

๐Ÿ’œ Class Methods ๐Ÿ’œ

  • "verbosity"
  • "verbose"
  • "timer"
  • "failures"
  • "comments"
  • "quiet"
  • "really_quiet"
  • "silent"
  • "errors"
  • "directives"
  • "stdout"
  • "color"
  • "jobs"
  • "show_count"

๐ŸŒˆ TAP::Formatter::Color - Run Perl test scripts with color

โœจ VERSION โœจ

โœจ DESCRIPTION โœจ

โœจ SYNOPSIS โœจ

โœจ METHODS โœจ

๐Ÿ’œ Class Methods ๐Ÿ’œ


๐Ÿ–ฅ๏ธ TAP::Formatter::Console - Harness output delegate for default console output

โœจ VERSION โœจ

โœจ DESCRIPTION โœจ

โœจ SYNOPSIS โœจ

  • "open_test"

okay so we're still deep in the module list and we've just hit the TAP:: family โ€” the Test Anything Protocol squad, and bestie they are ICONIC ๐Ÿ’… every single one of these is a little building block for running and parsing test output, so let's get into it, no cap ๐Ÿซถ


๐ŸŽ€ TAP::Formatter::Console::ParallelSession

the harness output delegate for parallel console output โ€” yes bestie, it formats your parallel test output for the console ๐Ÿ’–

  • VERSION
  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • Class Methods

๐ŸŒธ TAP::Formatter::Console::Session

the harness output delegate for default console output ๐Ÿซถ

  • VERSION
  • DESCRIPTION
  • clear_for_close
  • close_test
  • header
  • result

๐Ÿฆ‹ TAP::Formatter::File

the harness output delegate for file output โœจ

  • VERSION
  • DESCRIPTION
  • SYNOPSIS
    • open_test

๐Ÿ“ TAP::Formatter::File::Session

the harness output delegate for file output (yes, the sibling of the one above, they're a matching set ๐Ÿ’…)

  • VERSION
  • DESCRIPTION
  • METHODS
    • result
  • close_test

๐Ÿ’œ TAP::Formatter::Session

the abstract base class for harness output delegates ๐Ÿ‘‘

  • VERSION
  • METHODS
    • Class Methods
      • formatter, parser, name, show_count

๐Ÿ”ฅ TAP::Harness

run test scripts with statistics โ€” this is the one, bestie, the whole point of the whole operation ๐Ÿ“Š

  • VERSION
  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • Class Methods
      • verbosity, timer, failures, comments, show_count, normalize, lib, switches, test_args, color, exec, merge, sources, aggregator_class, version, formatter_class, multiplexer_class, parser_class, scheduler_class, formatter, errors, directives, ignore_exit, jobs, rules, rulesfiles, stdout, trap
  • Instance Methods

the source name of a test to run, a reference to a [ source name, display name ] array โ€” yes that's literally the whole sentence, we keep it ๐Ÿซก

  • CONFIGURING
    • Plugins
    • Module::Build
    • ExtUtils::MakeMaker
    • prove
  • WRITING PLUGINS
    • Customize how TAP gets into the parser, Customize how TAP results are output from the parser
  • SUBCLASSING
    • Methods
      • new in TAP::Harness, runtests in TAP::Harness, summary in TAP::Harness
  • REPLACING
  • SEE ALSO

๐ŸŒˆ TAP::Harness::Beyond, Test::Harness::Beyond

Beyond make test โ€” going way past plain old make test, and honestly? obsessed ๐Ÿงš

  • Beyond make test
    • Saved State
    • Parallel Testing
    • Non-Perl Tests
    • Mixing it up
    • Rolling My Own
    • Deeper Customisation
    • Callbacks
    • Parsing TAP
    • Getting Support

๐ŸŽ€ TAP::Harness::Env

parsing harness-related environmental variables where appropriate ๐ŸŒฑ it does exactly what it says on the tin, no more no less

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • create( \%args )
  • ENVIRONMENTAL VARIABLES
    • HARNESS_PERL_SWITCHES, HARNESS_VERBOSE, HARNESS_SUBCLASS, HARNESS_OPTIONS, j<n>, c, a<file.tgz>, fPackage-With-Dashes, HARNESS_TIMER, HARNESS_COLOR, HARNESS_IGNORE_EXIT

โœจ TAP::Object

the base class that provides common functionality to all TAP::* modules ๐Ÿ’… the mom friend of the family

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods

๐Ÿ‘‘ TAP::Parser

parse TAP output โ€” the parser itself, the moment, the icon ๐ŸŽ€

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
      • source, tap, exec, sources, callback, switches, test_args, spool, merge, grammar_class, result_factory_class, iterator_factory_class
  • Instance Methods
  • INDIVIDUAL RESULTS
    • Result types
      • Version, Plan, Pragma, Test, Comment, Bailout, Unknown
    • Common type methods
    • plan methods
    • pragma methods
    • comment methods
    • bailout methods
    • unknown methods
    • test methods
  • TOTAL RESULTS
    • Individual Results
  • Pragmas
  • Summary Results
  • ignore_exit
  • Misplaced plan, No plan, More than one plan, Test numbers out of sequence
  • CALLBACKS
    • test, version, plan, comment, bailout, yaml, unknown, ELSE, ALL, EOF
  • TAP GRAMMAR
  • BACKWARDS COMPATIBILITY
    • Differences
      • TODO plans, 'Missing' tests
  • SUBCLASSING
    • Parser Components
      • option 1, option 2
  • ACKNOWLEDGMENTS
    • Michael Schwern, Andy Lester, chromatic, GEOFFR, Shlomi Fish, Torsten Schoenfeld, Jerry Gay, Aristotle, Adam Kennedy, Yves Orton, Adrian Howard, Sean & Lil, Andreas J. Koenig, Florian Ragwitz, Corion, Mark Stosberg, Matt Kraai, David Wheeler, Alex Vandiver, Cosimo Streppone, Ville Skyttรค
  • AUTHORS
  • BUGS
  • COPYRIGHT & LICENSE

๐Ÿ’– TAP::Parser::Aggregator

aggregate TAP::Parser results ๐Ÿ—‚๏ธ it gathers everything up like a little raccoon of test data

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods
  • Summary methods
    • failed, parse_errors, passed, planned, skipped, todo, todo_passed, wait, exit
  • Failed tests, Parse errors, Bad exit or wait status
  • See Also

๐Ÿงš TAP::Parser::Grammar

a grammar for the Test Anything Protocol. ๐Ÿ“œ the rules of the TAP language, fr fr

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods
  • TAP GRAMMAR
  • SUBCLASSING
  • SEE ALSO

๐ŸŒˆ TAP::Parser::Iterator

the base class for TAP source iterators ๐Ÿ”

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods
  • SUBCLASSING
    • Example
  • SEE ALSO

๐Ÿ“ TAP::Parser::Iterator::Array

the iterator for array-based TAP sources ๐Ÿ“ฆ

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods
  • ATTRIBUTION
  • SEE ALSO

๐Ÿ’œ TAP::Parser::Iterator::Process

the iterator for process-based TAP sources โš™๏ธ

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods
  • ATTRIBUTION
  • SEE ALSO

๐Ÿฆ‹ TAP::Parser::Iterator::Stream

the iterator for filehandle-based TAP sources ๐ŸŒŠ

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods
  • ATTRIBUTION
  • SEE ALSO

โœจ TAP::Parser::IteratorFactory

figures out which SourceHandler objects to use for a given Source ๐Ÿ•ต๏ธ it's the matchmaker, it's giving yenta energy

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods
  • SUBCLASSING
    • Example
  • AUTHORS
  • ATTRIBUTION
  • SEE ALSO

๐Ÿ”ฅ TAP::Parser::Multiplexer

multiplex multiple TAP::Parsers ๐Ÿ“ก many parsers, one stream, we love to see it

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods
  • See Also

๐ŸŽ€ TAP::Parser::Result

the base class for TAP::Parser output objects ๐Ÿ’…

  • VERSION
  • SYNOPSIS
    • DESCRIPTION
    • METHODS
  • Boolean methods
    • is_plan, is_pragma, is_test, is_comment, is_bailout, is_version, is_unknown, is_yaml
  • SUBCLASSING
    • Example
  • SEE ALSO

๐Ÿ‘‘ TAP::Parser::Result::Bailout

the bailout result token. ๐Ÿšจ when a test just screams and runs away

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • as_string
  • Instance Methods

๐ŸŒธ TAP::Parser::Result::Comment

the comment result token. ๐Ÿ’ฌ the little # side-notes of TAP

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • as_string
  • Instance Methods

๐Ÿฆ‹ TAP::Parser::Result::Plan

the plan result token. ๐Ÿ—บ๏ธ the "here's how many tests we're doing" token

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • as_string, raw
  • Instance Methods

๐Ÿ’œ TAP::Parser::Result::Pragma

the TAP pragma token. ๐Ÿช„

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • as_string, raw
  • Instance Methods

๐Ÿ“ TAP::Parser::Result::Test

the test result token. โœ… the main character of the token lineup honestly

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
  • Instance Methods

๐Ÿงš TAP::Parser::Result::Unknown

the unknown result token. โ“ it's giving mystery, it's giving "what is this line"

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • as_string, raw

๐ŸŒˆ TAP::Parser::Result::Version

the TAP syntax version token. ๐Ÿ”ข

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • as_string, raw
  • Instance Methods

โœจ TAP::Parser::Result::YAML

the YAML result token. ๐Ÿ“„

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • as_string, raw
  • Instance Methods

๐ŸŽ€ TAP::Parser::ResultFactory

the factory for creating TAP::Parser output objects ๐Ÿญ

  • SYNOPSIS
  • VERSION
  • DESCRIPTION
  • METHODS
  • Class Methods
  • SUBCLASSING
    • Example
  • SEE ALSO

๐Ÿ‘‘ TAP::Parser::Scheduler

schedule tests during parallel testing ๐Ÿ—“๏ธ it decides who runs when, and bestie it has rules

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Rules data structure
      • By default, all tests are eligible to be run in parallel. Specifying any of your own rules removes this one
      • "First match wins". The first rule that matches a test will be the one that applies
      • Any test which does not match a rule will be run in sequence at the end of the run
      • The existence of a rule does not imply selecting a test. You must still specify the tests to run
      • Specifying a rule to allow tests to run in parallel does not make the run in parallel. You still need specify the number of parallel "jobs" in your Harness object
  • Instance Methods

๐Ÿฆ‹ TAP::Parser::Scheduler::Job

a single testing job. ๐Ÿงฉ one test, one job, one vibe

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods
  • Attributes

๐Ÿ’œ TAP::Parser::Scheduler::Spinner

a no-op job. ๐ŸŒ€ it does nothing and that's literally the job description

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods
  • SEE ALSO

๐Ÿ“ TAP::Parser::Source

a TAP source & meta data about it ๐Ÿ“

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • Instance Methods
  • AUTHORS
  • SEE ALSO

๐Ÿงš TAP::Parser::SourceHandler

the base class for different TAP source handlers ๐ŸŽ›๏ธ

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • SUBCLASSING
    • Example
  • AUTHORS
  • SEE ALSO

๐ŸŒˆ TAP::Parser::SourceHandler::Executable

stream output from an executable TAP source ๐Ÿƒ

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • SUBCLASSING
    • Example
  • SEE ALSO

โœจ TAP::Parser::SourceHandler::File

stream TAP from a text file. ๐Ÿ“„

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • CONFIGURATION
  • SUBCLASSING
  • SEE ALSO

๐ŸŽ€ TAP::Parser::SourceHandler::Handle

stream TAP from an IO::Handle or a GLOB. ๐Ÿ”—

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • SUBCLASSING
  • SEE ALSO

๐Ÿ‘‘ TAP::Parser::SourceHandler::Perl

stream TAP from a Perl executable ๐Ÿช

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • SUBCLASSING
    • Example
  • SEE ALSO

๐Ÿฆ‹ TAP::Parser::SourceHandler::RawTAP

stream output from raw TAP in a scalar/array ref. ๐Ÿงช

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
  • SUBCLASSING
  • SEE ALSO

๐Ÿ’œ TAP::Parser::YAMLish::Reader

read YAMLish data from iterator ๐Ÿ“–

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods
  • AUTHOR
  • SEE ALSO
  • COPYRIGHT

TAP::Parser::YAMLish::Writer โ€” Write YAMLish data

okay so this lil guy's whole personality is writing out YAML-ish data. no cap. ๐ŸŽ€

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods
      • a reference to a scalar to append YAML to, the handle of an open file, a reference to an array into which YAML will be pushed, a code reference
  • AUTHOR
  • SEE ALSO
  • COPYRIGHT

Term::ANSIColor โ€” Color screen output using ANSI escape sequences

the moment you've been waiting for, bestie โ€” COLOR for your terminal ๐Ÿ’…โœจ it's giving rainbow vibes and we are obsessed.

  • SYNOPSIS
  • DESCRIPTION
    • Supported Colors
    • Function Interface
      • color(ATTR[, ATTR ...]), colored(STRING, ATTR[, ATTR ...]), colored(ATTR-REF, STRING[, STRING...]), uncolor(ESCAPE), colorstrip(STRING[, STRING ...]), colorvalid(ATTR[, ATTR ...]), coloralias(ALIAS[, ATTR ...])
    • Constant Interface
    • The Color Stack
    • Supporting CLICOLOR
  • DIAGNOSTICS
    • Bad color mapping %s, Bad escape sequence %s, Bareword "%s" not allowed while "strict subs" in use, Cannot alias standard color %s, Cannot alias standard color %s in %s, Invalid alias name %s, Invalid alias name %s in %s, Invalid attribute name %s, Invalid attribute name %s in %s, Name "%s" used only once: possible typo, No comma allowed after filehandle, No name for escape sequence %s
  • ENVIRONMENT
    • ANSI_COLORS_ALIASES, ANSI_COLORS_DISABLED, NO_COLOR
  • COMPATIBILITY
  • RESTRICTIONS
  • NOTES
  • AUTHORS
  • COPYRIGHT AND LICENSE
  • SEE ALSO

Term::Cap โ€” Perl termcap interface

the termcap plug ๐Ÿ”ฅ

  • SYNOPSIS
  • DESCRIPTION
    • METHODS
  • Tgetent, OSPEED, TERM
  • Tpad, $string, $cnt, $FH
  • Tputs, $cap, $cnt, $FH
  • Tgoto, $cap, $col, $row, $FH
  • Trequire
  • EXAMPLES
  • COPYRIGHT AND LICENSE
  • AUTHOR
  • SEE ALSO

Term::Complete โ€” Perl word completion module

word completion, the OG autocomplete energy โœจ

  • SYNOPSIS
  • DESCRIPTION
    • <tab>, ^D, ^U, <del>, <bs>
  • DIAGNOSTICS
  • BUGS
  • AUTHOR

Term::ReadLine โ€” Perl interface to various "readline" packages. If no real package is found, substitutes stubs instead of basic functions.

so if the real deal isn't around, this one just vibes with stubs instead of the actual functions. iconic fallback behaviour fr fr.

  • SYNOPSIS
  • DESCRIPTION
  • Minimal set of supported functions
    • "ReadLine", "new", "readline", "addhistory", "IN", "OUT", "MinLine", "findConsole", Attribs, "Features"
  • Additional supported functions
    • "tkRunning", "event_loop", "ornaments", "newTTY"
  • EXPORTS
  • ENVIRONMENT

Term::Table โ€” Format a header and rows into a table

making pretty lil tables, no more ugly columns ๐Ÿ’–

  • DESCRIPTION
  • SYNOPSIS
  • INTERFACE
    • OPTIONS
      • header => [ ... ], rows => [ [...], [...], ... ], collapse => $bool, max_width => $num, pad => $num, allow_overflow => $bool, sanitize => $bool, mark_tail => $bool, show_header => $bool, auto_columns => $bool, no_collapse => [ $col_num_a, $col_num_b, ... ], no_collapse => [ $col_name_a, $col_name_b, ... ], no_collapse => { $col_num_a => 1, $col_num_b => 1, ... }, no_collapse => { $col_name_a => 1, $col_name_b => 1, ... }
  • NOTE ON UNICODE/WIDE CHARACTERS
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Term::Table::Cell โ€” Representation of a cell in a table.

one single cell, doing its little cell thing ๐ŸŽ€

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Term::Table::CellStack โ€” Combine several cells into one (vertical)

stacking cells vertically, main character energy ๐Ÿ’…

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Term::Table::HashBase โ€” Build hash based classes.

building hash-based classes, the way that it just works ๐Ÿฆ‹

  • SYNOPSIS
  • DESCRIPTION
  • THIS IS A BUNDLED COPY OF HASHBASE
  • METHODS
    • PROVIDED BY HASH BASE
      • $it = $class->new(%PAIRS), $it = $class->new(\%PAIRS), $it = $class->new(\@ORDERED_VALUES)
    • HOOKS
      • $self->init()
    • ACCESSORS
      • READ/WRITE
        • foo(), set_foo(), FOO()
      • READ ONLY
        • set_foo()
      • DEPRECATED SETTER
        • set_foo()
      • NO SETTER
      • NO READER
      • CONSTANT ONLY
  • SUBCLASSING
  • GETTING A LIST OF ATTRIBUTES FOR A CLASS
    • @list = Term::Table::HashBase::attr_list($class), @list = $class->Term::Table::HashBase::attr_list()
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Term::Table::LineBreak โ€” Break up lines for use in tables.

breaking up lines so your tables don't look a mess ๐Ÿ˜ญ

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Term::Table::Util โ€” Utilities for Term::Table.

the lil helper toolbox ๐Ÿงš

  • DESCRIPTION
  • EXPORTS
    • CONSTANTS
      • $bool = USE_GCS, $bool = USE_TERM_READKEY
    • UTILITIES
      • $width = term_size(), $width = uni_length($string)
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test โ€” provides a simple framework for writing test scripts

the classic, the blueprint, the moment ๐Ÿ‘‘

  • SYNOPSIS
  • DESCRIPTION
  • QUICK START GUIDE
    • Functions
      • plan(...), "tests => number", "todo => [1,5,14]", "onfail => sub { ... }", "onfail => \&some_sub"
  • _to_value
  • ok(...)
  • "skip(skip_if_true, args...)"
  • TEST TYPES
    • NORMAL TESTS, SKIPPED TESTS, TODO TESTS
  • ONFAIL
  • BUGS and CAVEATS
  • ENVIRONMENT
  • NOTE
  • SEE ALSO
  • AUTHOR

Test2 โ€” Framework for writing test tools that all work together.

the glow-up era of Perl testing โœจ everything just plays nice together now.

  • DESCRIPTION
    • WHAT IS NEW?
      • Easier to test new testing tools, Better diagnostics capabilities, Event driven, More complete API, Support for output other than TAP, Subtest implementation is more sane, Support for threading/forking
  • GETTING STARTED

Test2 โ€” This describes the namespace layout for the Test2 ecosystem. Not all the namespaces listed here are part of the Test2 distribution, some are implemented in Test2::Suite.

  • Test2::Tools::
  • Test2::Plugin::
  • Test2::Bundle::
  • Test2::Require::
  • Test2::Formatter::
  • Test2::Event::
  • Test2::Hub::
  • Test2::IPC::
  • Test2::Util::
  • Test2::API::
  • Test2::
  • SEE ALSO
  • CONTACTING US
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::API โ€” Primary interface for writing Test2 based testing tools.

the main API entrance, bestie. this is where the Test2 tools get built ๐Ÿ’œ

  • ***INTERNALS NOTE***
  • DESCRIPTION
  • SYNOPSIS
    • WRITING A TOOL
    • TESTING YOUR TOOLS
    • OTHER API FUNCTIONS
  • ENVIRONMENT VARIABLES
  • MAIN API EXPORTS
    • context(...)
      • $ctx = context(), $ctx = context(%params), level => $int, wrapped => $int, stack => $stack, hub => $hub, on_init => sub { ... }, on_release => sub { ... }
    • release($;$)
      • release $ctx;, release $ctx, ...;
    • context_do(&;@)
    • no_context(&;$)
      • no_context { ... };, no_context { ... } $hid;
    • intercept(&)
    • run_subtest(...)
      • $NAME, \&CODE, $BUFFERED or \%PARAMS, 'buffered' => $bool, 'inherit_trace' => $bool, 'no_fork' => $bool, @ARGS, Things not affected by this flag, Things that are affected by this flag, Things that are formatter dependent
  • OTHER API EXPORTS
    • STATUS AND INITIALIZATION STATE
      • $bool = test2_init_done(), $bool = test2_load_done(), test2_set_is_end(), test2_set_is_end($bool), $bool = test2_get_is_end(), $stack = test2_stack(), $bool = test2_is_testing_done(), test2_ipc_disable, $bool = test2_ipc_disabled, test2_ipc_wait_enable(), test2_ipc_wait_disable(), $bool = test2_ipc_wait_enabled(), $bool = test2_no_wait(), test2_no_wait($bool), $fh = test2_stdout(), $fh = test2_stderr(), test2_reset_io()
    • BEHAVIOR HOOKS
      • test2_add_callback_exit(sub { ... }), test2_add_callback_post_load(sub { ... }), test2_add_callback_testing_done(sub { ... }), test2_add_callback_context_acquire(sub { ... }), test2_add_callback_context_init(sub { ... }), test2_add_callback_context_release(sub { ... }), test2_add_callback_pre_subtest(sub { ... }), @list = test2_list_context_acquire_callbacks(), @list = test2_list_context_init_callbacks(), @list = test2_list_context_release_callbacks(), @list = test2_list_exit_callbacks(), @list = test2_list_post_load_callbacks(), @list = test2_list_pre_subtest_callbacks(), test2_add_uuid_via(sub { ... }), $sub = test2_add_uuid_via(), test2_add_pending_diag($diag), test2_add_pending_diag($diag1, $diag2), @diags = test2_get_pending_diags(), @diags = test2_clear_pending_diags()
    • IPC AND CONCURRENCY
      • $bool = test2_has_ipc(), $ipc = test2_ipc(), test2_ipc_add_driver($DRIVER), @drivers = test2_ipc_drivers(), $bool = test2_ipc_polling(), test2_ipc_enable_polling(), test2_ipc_disable_polling(), test2_ipc_enable_shm(), test2_ipc_set_pending($uniq_val), $pending = test2_ipc_get_pending(), $timeout = test2_ipc_get_timeout(), test2_ipc_set_timeout($timeout)
    • MANAGING FORMATTERS
      • $formatter = test2_formatter, test2_formatter_set($class_or_instance), @formatters = test2_formatters(), test2_formatter_add($class_or_instance)
    • TIME STAMPS
      • test2_enable_trace_stamps(), test2_disable_trace_stamps(), $bool = test2_trace_stamps_enabled()
  • OTHER EXAMPLES
  • SEE ALSO
  • MAGIC
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::API::Breakage โ€” What breaks at what version

ngl this one's the "what's gonna break and when" mood board ๐Ÿ’€

  • DESCRIPTION
  • FUNCTIONS
    • %mod_ver = upgrade_suggested(), %mod_ver = Test2::API::Breakage->upgrade_suggested(), %mod_ver = upgrade_required(), %mod_ver = Test2::API::Breakage->upgrade_required(), %mod_ver = known_broken(), %mod_ver = Test2::API::Breakage->known_broken()
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::API::Context โ€” Object to represent a testing context.

the context object, holding the whole vibe of a test run together ๐Ÿซถ

  • DESCRIPTION
  • SYNOPSIS
  • CRITICAL DETAILS
    • you MUST always use the context() sub from Test2::API, You MUST always release the context when done with it, You MUST NOT pass context objects around, You MUST NOT store or cache a context for later, You SHOULD obtain your context as soon as possible in a given tool

METHODS ๐Ÿ’…

okay so these are the $ctx methods, and the whole roster is giving main character energy โ€” no cap, every single one is here:

  • $ctx->done_testing;
  • $clone = $ctx->snapshot()
  • $ctx->release()
  • $ctx->throw($message)
  • $ctx->alert($message)
  • $stack = $ctx->stack()
  • $hub = $ctx->hub()
  • $dbg = $ctx->trace()
  • $ctx->do_in_context(\&code, @args);
  • $ctx->restore_error_vars()
  • $! = $ctx->errno()
  • $? = $ctx->child_error()
  • $@ = $ctx->eval_error()

EVENT PRODUCTION METHODS ๐ŸŽ€

bestie this is the event-making squad, and the way that there are this many ways to make a pass/fail... iconic. Every single signature, exactly as written:

  • $event = $ctx->pass()
  • $event = $ctx->pass($name)
  • $true = $ctx->pass_and_release()
  • $true = $ctx->pass_and_release($name)
  • my $event = $ctx->fail()
  • my $event = $ctx->fail($name)
  • my $event = $ctx->fail($name, @diagnostics)
  • my $false = $ctx->fail_and_release()
  • my $false = $ctx->fail_and_release($name)
  • my $false = $ctx->fail_and_release($name, @diagnostics)
  • $event = $ctx->ok($bool, $name)
  • $event = $ctx->ok($bool, $name, \@on_fail)
  • $event = $ctx->note($message)
  • $event = $ctx->diag($message)
  • $event = $ctx->plan($max)
  • $event = $ctx->plan(0, 'SKIP', $reason)
  • $event = $ctx->skip($name, $reason);
  • $event = $ctx->bail($reason)
  • $event = $ctx->send_ev2(%facets)
  • $event = $ctx->build_e2(%facets)
  • $event = $ctx->send_ev2_and_release($Type, %parameters)
  • $event = $ctx->send_event($Type, %parameters)
  • $event = $ctx->build_event($Type, %parameters)
  • $event = $ctx->send_event_and_release($Type, %parameters)

HOOKS ๐Ÿช

(the manpage leaves this one empty, fr โ€” just vibes and a heading)

INIT HOOKS โœจ

(also empty, bestie, we're just sitting here)

RELEASE HOOKS ๐Ÿฆ‹

(yep. empty. not a single line.)

THIRD PARTY META-DATA ๐Ÿ“

(empty, no notes)

SOURCE ๐ŸŒˆ

(empty โ€” the source speaks for itself, iykyk)

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿ’œ

  • Chad Granum <exodist@cpan.org>
  • Kent Fredric <kentnl@cpan.org>

COPYRIGHT ๐ŸŽ€

(nothing listed here, bestie)


Test2::API::Instance - Object used by Test2::API under the hood

the internals bestie, the machinery behind the curtain ๐Ÿ’…

DESCRIPTION

(empty, no content listed)

SYNOPSIS

Okay so here's the full menu of $obj calls โ€” every single one, copied exact:

  • $pid = $obj->pid
  • $obj->tid
  • $obj->reset()
  • $obj->load()
  • $bool = $obj->loaded
  • $arrayref = $obj->post_load_callbacks
  • $obj->add_post_load_callback(sub { ... })
  • $hashref = $obj->contexts()
  • $arrayref = $obj->context_acquire_callbacks
  • $arrayref = $obj->context_init_callbacks
  • $arrayref = $obj->context_release_callbacks
  • $arrayref = $obj->pre_subtest_callbacks
  • $obj->add_context_init_callback(sub { ... })
  • $obj->add_context_release_callback(sub { ... })
  • $obj->add_pre_subtest_callback(sub { ... })
  • $obj->set_exit()
  • $obj->set_ipc_pending($val)
  • $pending = $obj->get_ipc_pending()
  • $timeout = $obj->ipc_timeout;
  • $obj->set_ipc_timeout($timeout);
  • $drivers = $obj->ipc_drivers
  • $obj->add_ipc_driver($DRIVER_CLASS)
  • $bool = $obj->ipc_polling
  • $obj->enable_ipc_polling
  • $obj->disable_ipc_polling
  • $bool = $obj->no_wait
  • $bool = $obj->set_no_wait($bool)
  • $arrayref = $obj->exit_callbacks
  • $obj->add_exit_callback(sub { ... })
  • $bool = $obj->finalized
  • $ipc = $obj->ipc
  • $obj->ipc_disable
  • $bool = $obj->ipc_disabled
  • $stack = $obj->stack
  • $formatter = $obj->formatter
  • $bool = $obj->formatter_set()
  • $obj->add_formatter($class)
  • $obj->add_formatter($obj)
  • $obj->set_add_uuid_via(sub { ... })
  • $sub = $obj->add_uuid_via()

SOURCE

(empty, nothing here)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)


Test2::API::InterceptResult - Representation of a list of events.

DESCRIPTION

(no content listed, just the heading)

SYNOPSIS

(empty, bestie โ€” the heading is doing all the work)

METHODS

CONSTRUCTION ๐Ÿงš

  • $events = Test2::API::InterceptResult->new(@EVENTS)
  • $events = Test2::API::InterceptResult->new_from_ref(\@EVENTS)
  • $clone = $events->clone()

NORMALIZATION ๐ŸŒธ

  • @events = $events->event_list
  • $hub = $events->hub
  • $state = $events->state
  • $new = $events->upgrade
  • $events->upgrade(in_place => $BOOL)
  • $new = $events->squash_info
  • $events->squash_info(in_place => $BOOL)

FILTERING ๐Ÿ”ฅ

  • in_place => $BOOL
  • args => \@ARGS
  • $events->grep($CALL, %PARAMS)
  • $events->asserts(%PARAMS)
  • $events->subtests(%PARAMS)
  • $events->diags(%PARAMS)
  • $events->notes(%PARAMS)
  • $events->errors(%PARAMS)
  • $events->plans(%PARAMS)
  • $events->causes_fail(%PARAMS)
  • $events->causes_failure(%PARAMS)

MAPPING ๐Ÿ’–

  • $arrayref = $events->map($CALL, %PARAMS)
  • $arrayref = $events->flatten(%PARAMS)
  • $arrayref = $events->briefs(%PARAMS)
  • $arrayref = $events->summaries(%PARAMS)
  • $arrayref = $events->subtest_results(%PARAMS)
  • $arrayref = $events->diag_messages(%PARAMS)
  • $arrayref = $events->note_messages(%PARAMS)
  • $arrayref = $events->error_messages(%PARAMS)

SOURCE

(empty)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)


Test2::API::InterceptResult::Event - Representation of an event for use in testing other test tools.

DESCRIPTION

(empty, no content)

SYNOPSIS

(empty)

METHODS

!!! IMPORTANT NOTES ON DESIGN !!! โš ๏ธ

Okay bestie, this heading is literally shouting and that's on purpose โ€” pay attention here. Important design notes territory, do not skip.

ATTRIBUTES ๐ŸŽ€

  • $hashref = $event->facet_data
  • $class = $event->result_class

DUPLICATION ๐Ÿฆ‹

  • $copy = $event->clone

CONDENSED MULTI-FACET DATA ๐ŸŒˆ

  • $bool = $event->causes_failure
  • $bool = $event->causes_fail
  • STRING_OR_EMPTY_LIST = $event->brief
  • $hashref = $event->flatten
  • $hashref = $event->flatten(include_subevents => 1)
  • always present
  • Present if the event has a trace facet
  • If an assertion is present
  • If a plan is present:
  • If amnesty facets are present
  • If Info (note/diag) facets are present
  • If error facets are present
  • Present if the event is a subtest
  • If a bail-out is being requested
  • $hashref = $event->summary()

DIRECT ARBITRARY FACET ACCESS ๐Ÿ’…

  • @list_of_facets = $event->facet($name)
  • $undef_or_facet = $event->the_facet($name)

TRACE FACET ๐Ÿ‘‘

  • @list_of_facets = $event->trace
  • $undef_or_hashref = $event->the_trace
  • $undef_or_arrayref = $event->frame
  • $undef_or_string = $event->trace_details
  • $undef_or_string = $event->trace_package
  • $undef_or_string = $event->trace_file
  • $undef_or_integer = $event->trace_line
  • $undef_or_string = $event->trace_subname
  • $undef_or_string = $event->trace_tool
  • $undef_or_string = $event->trace_signature

ASSERT FACET โœจ

  • $bool = $event->has_assert
  • $undef_or_hashref = $event->the_assert
  • @list_of_facets = $event->assert
  • EMPTY_LIST_OR_STRING = $event->assert_brief

SUBTESTS (PARENT FACET) ๐Ÿงš

  • $bool = $event->has_subtest
  • $undef_or_hashref = $event->the_subtest
  • @list_of_facets = $event->subtest
  • EMPTY_LIST_OR_OBJECT = $event->subtest_result

CONTROL FACET (BAILOUT, ENCODING) ๐Ÿšจ

  • $bool = $event->has_bailout
  • $undef_hashref = $event->the_bailout
  • EMPTY_LIST_OR_HASHREF = $event->bailout
  • EMPTY_LIST_OR_STRING = $event->bailout_brief
  • EMPTY_LIST_OR_STRING = $event->bailout_reason

PLAN FACET ๐Ÿ“‹

  • $bool = $event->has_plan
  • $undef_or_hashref = $event->the_plan
  • @list_if_hashrefs = $event->plan
  • EMPTY_LIST_OR_STRING $event->plan_brief

AMNESTY FACET (TODO AND SKIP) ๐Ÿ™ˆ

  • $event->has_amnesty
  • $event->the_amnesty
  • $event->amnesty
  • $event->amnesty_reasons
  • $event->has_todos
  • $event->todos
  • $event->todo_reasons
  • $event->has_skips
  • $event->skips
  • $event->skip_reasons
  • $event->has_other_amnesty
  • $event->other_amnesty
  • $event->other_amnesty_reasons

ERROR FACET (CAPTURED EXCEPTIONS) ๐Ÿ’€

  • $event->has_errors
  • $event->the_errors
  • $event->errors
  • $event->error_messages
  • $event->error_brief

INFO FACET (DIAG, NOTE) ๐Ÿ“

  • $event->has_info
  • $event->the_info
  • $event->info
  • $event->info_messages
  • $event->has_diags
  • $event->diags
  • $event->diag_messages
  • $event->has_notes
  • $event->notes
  • $event->note_messages
  • $event->has_other_info
  • $event->other_info
  • $event->other_info_messages

SOURCE

(empty)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)


Test2::API::InterceptResult::Hub - Hub used by InterceptResult.

SOURCE

(empty)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)


Test2::API::InterceptResult::Squasher - Encapsulation of the algorithm that squashes diags into assertions.

squashing diags into assertions?? that's the whole personality right there ๐Ÿ“

DESCRIPTION

(empty, nothing listed)

SOURCE

(empty)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)


Test2::API::Stack - Object to manage a stack of Test2::Hub instances.

***INTERNALS NOTE*** ๐Ÿ‘€

Heads up bestie โ€” this one is flagged as internals. Internals note, so tread carefully.

DESCRIPTION

(empty)

SYNOPSIS

(empty)

METHODS

  • $stack = Test2::API::Stack->new()
  • $hub = $stack->new_hub()
  • $hub = $stack->new_hub(%params)
  • $hub = $stack->new_hub(%params, class => $class)
  • $hub = $stack->top()
  • $hub = $stack->peek()
  • $stack->cull
  • @hubs = $stack->all
  • $stack->clear
  • $stack->push($hub)
  • $stack->pop($hub)

SOURCE

(empty)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)


Test2::AsyncSubtest - Object representing an async subtest.

DESCRIPTION

(empty)

SYNOPSIS

(empty)

CONSTRUCTION

  • name => $name (required)
  • send_to => $hub (optional)
  • trace => $trace (optional)
  • hub => $hub (optional)

METHODS

SIMPLE ACCESSORS ๐ŸŒธ

  • $bool = $ast->active
  • $arrayref = $ast->children
  • $arrayref = $ast->events
  • $bool = $ast->finished
  • $hub = $ast->hub
  • $int = $ast->id
  • $str = $ast->name
  • $pid = $ast->pid
  • $tid = $ast->tid
  • $hub = $ast->send_to
  • $arrayref = $ast->stack
  • $trace = $ast->trace

INTERFACE ๐Ÿ’–

  • $ast->attach($id)
  • $id = $ast->cleave
  • $ctx = $ast->context
  • $ast->detach
  • $ast->finish
  • $ast->finish(%options)
  • collapse => 1
  • silent => 1
  • no_plan => 1
  • skip => "reason"
  • $out = $ast->fork
  • $bool = $ast->pending
  • $bool = $ast->ready
  • $ast->run(sub { ... })
  • $pid = $ast->run_fork(sub { ... })
  • my $thr = $ast->run_thread(sub { ... });
  • $passing = $ast->start
  • $ast->stop
  • $ast->wait

SOURCE

(empty)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)


Test2::AsyncSubtest::Event::Attach - Event to attach a subtest to the parent.

DESCRIPTION

(empty)

SOURCE

(empty)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)


Test2::AsyncSubtest::Event::Detach - Event to detach a subtest from the parent.

DESCRIPTION

(empty)

SOURCE

(empty)

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(empty)

๐Ÿฆ‹ Test2::AsyncSubtest::Hub โ€” Hub used by async subtests

DESCRIPTION

SYNOPSIS

METHODS

  • $ast = $hub->ast

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŽ€ Test2::Bundle โ€” Documentation for bundles

DESCRIPTION

FAQ Should my bundle subclass Test2::Bundle?

HOW DO I WRITE A BUNDLE?

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ’€ Test2::Bundle::Extended โ€” Old name for Test2::V0

* DEPRECATED * bestie this one is old news, it's literally the old name for Test2::V0. Periodt. ๐Ÿ’…

DESCRIPTION

SYNOPSIS

RESOLVING CONFLICTS WITH MOOSE

TAGS

  • :v1, :DEFAULT

RENAMING ON IMPORT

  • ':v1', '!ok', ok => {-as => 'my_ok'}

PRAGMAS

STRICT

WARNINGS

UTF8

PLUGINS

SRAND

UTF8

EXIT SUMMARY

API FUNCTIONS

  • $ctx = context(), $events = intercept { ... }

TOOLS

TARGET

  • $CLASS, $class = CLASS()

DEFER

  • def $func => @args;, do_def()

BASIC

  • ok($bool, $name), pass($name), fail($name), diag($message), note($message), $todo = todo($reason), todo $reason => sub { ... }, skip($reason, $count), plan($count), skip_all($reason), done_testing(), bail_out($reason)

COMPARE

  • is($got, $want, $name), isnt($got, $do_not_want, $name), like($got, qr/match/, $name), unlike($got, qr/mismatch/, $name), $check = match(qr/pattern/), $check = mismatch(qr/pattern/), $check = validator(sub { return $bool }), $check = hash { ... }, $check = array { ... }, $check = bag { ... }, $check = object { ... }, $check = meta { ... }, $check = number($num), $check = string($str), $check = check_isa($class_name), $check = in_set(@things), $check = not_in_set(@things), $check = check_set(@things), $check = item($thing), $check = item($idx => $thing), $check = field($name => $val), $check = call($method => $expect), $check = call_list($method => $expect), $check = call_hash($method => $expect), $check = prop($name => $expect), $check = check($thing), $check = T(), $check = F(), $check = D(), $check = DF(), $check = E(), $check = DNE(), $check = FDNE(), $check = U(), $check = L(), $check = exact_ref($ref), end(), etc(), filter_items { grep { ... } @_ }, $check = event $type => .., @checks = fail_events $type => ..

CLASSIC COMPARE

  • cmp_ok($got, $op, $want, $name)

SUBTEST

  • subtest $name => sub { ... }

CLASS

  • can_ok($thing, @methods), isa_ok($thing, @classes), DOES_ok($thing, @roles)

ENCODING

  • set_encoding($encoding)

EXPORTS

  • imported_ok('function', '$scalar', ...), not_imported_ok('function', '$scalar', ...)

REF

  • ref_ok($ref, $type), ref_is($got, $want), ref_is_not($got, $do_not_want)

MOCK

  • $control = mock .., $bool = mocked($thing)

EXCEPTION

  • $exception = dies { ... }, $bool = lives { ... }, $bool = try_ok { ... }

WARNINGS

  • $count = warns { ... }, $warning = warning { ... }, $warnings_ref = warnings { ... }, $bool = no_warnings { ... }

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŒธ Test2::Bundle::More โ€” ALMOST a drop-in replacement for Test::More.

the word is ALMOST bestie, read it again ๐Ÿ˜ญ

DESCRIPTION

SYNOPSIS

PLUGINS

TOOLS

  • ok($bool, $name), pass($name), fail($name), skip($why, $count), $todo = todo($why), diag($message), note($message), plan($count), skip_all($why), done_testing(), BAIL_OUT($why), is($got, $want, $name), isnt($got, $donotwant, $name), like($got, qr/match/, $name), unlike($got, qr/mismatch/, $name), is_deeply($got, $want, "Deep compare"), cmp_ok($got, $op, $want, $name), isa_ok($thing, @classes), can_ok($thing, @subs), subtest $name => sub { ... }

KEY DIFFERENCES FROM Test::More

  • You cannot plan at import
  • You have three subs imported for use in planning
  • isa_ok accepts different arguments

THESE FUNCTIONS AND VARIABLES HAVE BEEN REMOVED

  • $TODO, use_ok(), require_ok(), todo_skip(), eq_array(), eq_hash(), eq_set(), explain(), new_ok()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

โœจ Test2::Bundle::Simple โ€” ALMOST a drop-in replacement for Test::Simple.

DESCRIPTION

SYNOPSIS

PLUGINS

TOOLS

  • ok($bool, $name), plan($count), skip_all($reason), done_testing();

KEY DIFFERENCES FROM Test::Simple

  • You cannot plan at import
  • You have three subs imported for use in planning

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ”ฅ Test2::Compare โ€” Test2 extension for writing deep comparison tools.

DESCRIPTION

SYNOPSIS

EXPORTS

  • $delta = compare($got, $expect, \&convert), $build = get_build(), push_build($build), $build = pop_build($build), build($class, sub { ... }), $check = convert($thing), $check = convert($thing, $config), implicit_end => 1, use_regex => 1, use_code => 0, $check = strict_convert($thing), implicit_end => 1, use_code => 0, use_regex => 0, $compare = relaxed_convert($thing), implicit_end => 0, use_code => 1, use_regex => 1

WRITING A VARIANT OF IS/LIKE

  • compare(), \&convert, $delta

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿงš Test2::Compare::Array โ€” Internal representation of an array comparison.

DESCRIPTION

METHODS

  • $ref = $arr->inref(), $bool = $arr->ending, $arr->set_ending($bool), $hashref = $arr->items(), $arr->set_items($hashref), $arrayref = $arr->order(), $arr->set_order($arrayref), $name = $arr->name(), $bool = $arr->verify(got => $got, exists => $bool), $idx = $arr->top_index(), $arr->add_item($item), $arr->add_item($idx => $item), $arr->add_filter(sub { ... }), @deltas = $arr->deltas(got => $got, convert => \&convert, seen => \%seen)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ“ Test2::Compare::Bag โ€” Internal representation of a bag comparison.

DESCRIPTION

METHODS

  • $bool = $arr->ending, $arr->set_ending($bool), $arrayref = $arr->items(), $arr->set_items($arrayref), $name = $arr->name(), $bool = $arr->verify(got => $got, exists => $bool), $arr->add_item($item), @deltas = $arr->deltas(got => $got, convert => \&convert, seen => \%seen)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>, Gianni Ceccarelli <dakkar@thenautilus.net>

AUTHORS

  • Chad Granum <exodist@cpan.org>, Gianni Ceccarelli <dakkar@thenautilus.net>

๐Ÿ’œ Test2::Compare::Base โ€” Base class for comparison classes.

the blueprint, the blueprint-er, the blueprint-est ๐Ÿ’…

DESCRIPTION

SYNOPSIS

METHODS

  • $dclass = $check->delta_class, @deltas = $check->deltas(id => $id, exists => $bool, got => $got, convert => \&convert, seen => \%seen), @lines = $check->got_lines($got), $op = $check->operator(), $op = $check->operator($got), $bool = $check->verify(id => $id, exists => $bool, got => $got, convert => \&convert, seen => \%seen), $name = $check->name, $display = $check->render, $delta = $check->run(id => $id, exists => $bool, got => $got, convert => \&convert, seen => \%seen)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

โญ Test2::Compare::Bool โ€” Compare two values as booleans

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŽ€ Test2::Compare::Custom โ€” Custom field check for comparisons.

DESCRIPTION

SYNOPSIS

ARGUMENTS

  • got, $_, exists, operator, name

METHODS

  • $code = $cus->code, $name = $cus->name, $op = $cus->operator, $stringify = $cus->stringify_got, $bool = $cus->verify(got => $got, exists => $bool)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>, Daniel Bรถhmer <dboehmer@cpan.org>

๐ŸŒˆ Test2::Compare::DeepRef โ€” Ref comparison

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ’– Test2::Compare::Delta โ€” Representation of differences between nested data structures.

DESCRIPTION

METHODS

CLASS METHODS

  • $class->add_column($NAME => sub { ... }), $class->add_column($NAME, %PARAMS), $bool = $class->remove_column($NAME), $class->set_column_alias($NAME, $ALIAS)

ATTRIBUTES

  • $bool = $delta->verified, $delta->set_verified($bool), $aref = $delta->id, $delta->set_id([$type, $name]), $val = $delta->got, $delta->set_got($val), $check = $delta->chk, $check = $delta->check, $delta->set_chk($check), $delta->set_check($check), $aref = $delta->children, $delta->set_children([$delta1, $delta2, ...]), $dne = $delta->dne, $delta->set_dne($dne), $e = $delta->exception, $delta->set_exception($e)

OTHER

  • $string = $delta->render_got, $string = $delta->render_check, $bool = $delta->should_show, $aref = $delta->filter_visible, $aref = $delta->table_header, $string = $delta->table_op, $string = $delta->table_check_lines, $string = $delta->table_got_lines, $aref = $delta->table_rows, @table_lines = $delta->table

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿฆ‹ Test2::Compare::Event โ€” Event specific Object subclass.

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ‘‘ Test2::Compare::EventMeta โ€” Meta class for events in deep comparisons

DESCRIPTION

DEFINED CHECKS

  • file, line, package, subname, debug, tid, pid

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŒธ Test2::Compare::Float โ€” Compare two values as numbers with tolerance.

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Andrew Grangaard <spazm@cpan.org> ๐Ÿ’œ
  • COPYRIGHT โ€” ๐ŸŒˆ (that's the whole entry bestie, it's a short one)

๐Ÿฆ‹ Test2::Compare::Hash โ€” Representation of a hash in a deep comparison.

Okay so this page is the โœจrepresentation of a hashโœจ in a deep comparison. That's the whole vibe. Sections it rolls with, in order:

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ’… Test2::Compare::Isa โ€” Check if the value is an instance of the class.

Exactly what it says on the tin: it checks whether the value is an instance of the class. Iconic behaviour honestly. Sections:

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>, TOYAMA Nao <nanto@moon.email.ne.jp> ๐ŸŒธ
  • COPYRIGHT

๐ŸŽ€ Test2::Compare::Meta โ€” Check library for meta-checks

Meta-checks!! The library for them. Here's what it brings:

  • DESCRIPTION
  • DEFINED CHECKS โ€” the roster is: blessed, reftype, isa, this, size ๐Ÿ‘‘
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

โœจ Test2::Compare::Negatable โ€” Poor mans 'role' for compare objects that can be negated.

A poor man's 'role', for compare objects that can be negated. Lowkey genius, highkey humble. ๐Ÿซถ

  • DESCRIPTION
  • WHY? โ€” yes, the page literally has a section called WHY? and honestly? fair.
  • ATTRIBUTES
    • $bool = $obj->negate
    • $obj->set_negate($bool)
    • $attr = NEGATE()
  • METHODS
    • $clone = $obj->clone_negate()
    • $obj->toggle_negate()
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŒˆ Test2::Compare::Number โ€” Compare two values as numbers

Compares two values as numbers. No string shenanigans. ๐Ÿ’ฏ

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿงš Test2::Compare::Object โ€” Representation of an object during deep comparison.

Representation of an object during deep comparison. It's giving main character energy of the whole deep-compare arc.

  • DESCRIPTION
  • METHODS
    • $class = $obj->meta_class
    • $class = $obj->object_base
    • $obj->add_prop(...)
    • $obj->add_field(...)
    • $obj->add_item(...)
    • $obj->add_call($method, $check)
    • $obj->add_call($method, $check, $name)
    • $obj->add_call($method, $check, $name, $context)
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ’– Test2::Compare::OrderedSubset โ€” Internal representation of an ordered subset.

Internal representation of an ordered subset โ€” iykyk, it's not here to be your public API bestie.

  • DESCRIPTION
  • METHODS
    • $ref = $arr->inref()
    • $arrayref = $arr->items()
    • $arr->set_items($arrayref)
    • $name = $arr->name()
    • $bool = $arr->verify(got => $got, exists => $bool)
    • $arr->add_item($item)
    • @deltas = $arr->deltas(got => $got, convert => \&convert, seen => \%seen)
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿฆ‹ Test2::Compare::Pattern โ€” Use a pattern to validate values in a deep comparison.

Use a pattern to validate values in a deep comparison. Slay. ๐Ÿ’…

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ”ฅ Test2::Compare::Ref โ€” Ref comparison

Ref comparison, periodt.

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

โญ Test2::Compare::Regex โ€” Regex direct comparison

Regex direct comparison. Straight up, no detours.

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŽ€ Test2::Compare::Scalar โ€” Representation of a Scalar Ref in deep comparisons

Representation of a Scalar Ref in deep comparisons. Yes, scalar refs get their own page, and yes, they deserve it. ๐Ÿซถ

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŒธ Test2::Compare::Set โ€” Allows a field to be matched against a set of checks.

Allows a field to be matched against a set of checks. Multiple options? We love to see it.

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ’œ Test2::Compare::String โ€” Compare two values as strings

Compares two values as strings โ€” the number one's sibling but with totally different energy. ๐Ÿ“

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

โœจ Test2::Compare::Undef โ€” Check that something is undefined

Checks that something is undef. Sometimes nothing is the whole point bestie. ๐Ÿ’€

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŒˆ Test2::Compare::Wildcard โ€” Placeholder check.

A placeholder check. It's literally there to hold the place. Iconic of it.

  • DESCRIPTION
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿซถ Test2::Env โ€” Documentation for environment variables used or set by Test2.

Okay so this one is the docs for the environment variables that Test2 uses or sets. The whole page is basically a list of env-var sections, and here they all are, in order:

  • AUTHOR_TESTING
  • AUTOMATED_TESTING
  • EXTENDED_TESTING
  • HARNESS_ACTIVE
  • NONINTERACTIVE_TESTING
  • RELEASE_TESTING
  • T2_FORMATTER
  • T2_IN_PRELOAD
  • TABLE_TERM_SIZE
  • TEST2_ACTIVE
  • TEST2_ENABLE_PLUGINS
  • TEST_ACTIVE
  • TS_MAX_DELTA

And then the usual suspects:

  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ‘‘ Test2::Event โ€” Base class for events

The base class for events, aka the mother of all event types. This is a big one, so buckle up. ๐Ÿฆ‹

  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • GENERAL
      • $trace = $e->trace
      • $bool_or_undef = $e->related($e2)
      • $e->add_amnesty({tag => $TAG, details => $DETAILS});
      • $uuid = $e->uuid
      • $class = $e->load_facet($name)
      • @classes = $e->FACET_TYPES()
      • @classes = Test2::Event->FACET_TYPES()
    • NEW API
      • $hashref = $e->common_facet_data();
      • $hashref = $e->facet_data()
      • $hashref = $e->facets()
      • @errors = $e->validate_facet_data();
      • @errors = $e->validate_facet_data(%params);
      • @errors = $e->validate_facet_data(\%facets, %params);
      • @errors = Test2::Event->validate_facet_data(%params);
      • @errors = Test2::Event->validate_facet_data(\%facets, %params);
      • require_facet_class => $BOOL
      • about => {...}
      • assert => {...}
      • control => {...}
      • meta => {...}
      • parent => {...}
      • plan => {...}
      • trace => {...}
      • amnesty => [{...}, ...]
      • errors => [{...}, ...]
      • info => [{...}, ...]
    • LEGACY API
      • $bool = $e->causes_fail
      • $bool = $e->increments_count
      • $e->callback($hub)
      • $num = $e->nested
      • $bool = $e->global
      • $code = $e->terminate
      • $msg = $e->summary
      • ($count, $directive, $reason) = $e->sets_plan()
      • $bool = $e->diagnostics
      • $bool = $e->no_display
      • $id = $e->in_subtest
      • $id = $e->subtest_id
  • THIRD PARTY META-DATA
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ’€ Test2::Event::Bail โ€” Bailout!

Bailout! The dramatic exit of the event world. ๐Ÿ˜ญ

  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • $reason = $e->reason
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ“ Test2::Event::Diag โ€” Diag event type

The diag event type โ€” you know it, you've seen it in your TAP output. ๐Ÿ’œ

  • DESCRIPTION
  • SYNOPSIS
  • ACCESSORS
    • $diag->message
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŒˆ Test2::Event::Encoding โ€” Set the encoding for the output stream

Sets the encoding for the output stream. Unlock the characters bestie. โœจ

  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • $encoding = $e->encoding
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ”ฅ Test2::Event::Exception โ€” Exception event

The exception event. When things go sideways, this is the one showing up to tell you.

  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • $reason = $e->error
  • CAVEATS โ€” yes there are caveats, read them, don't skip. ๐Ÿ™ˆ
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŽ€ Test2::Event::Fail โ€” Event for a simple failed assertion

The event for a simple failed assertion. It's giving "we don't always win and that's okay". ๐Ÿ’…

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

โญ Test2::Event::Generic โ€” Generic event type.

The generic event type โ€” fully customisable, every dial is yours to turn.

  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • $e->facet_data($data)
    • $data = $e->facet_data
    • $e->callback($hub)
    • $e->set_callback(sub { ... })
    • $bool = $e->causes_fail
    • $e->set_causes_fail($bool)
    • $bool = $e->diagnostics
    • $e->set_diagnostics($bool)
    • $bool_or_undef = $e->global
    • @bool_or_empty = $e->global
    • $e->set_global($bool_or_undef)
    • $bool = $e->increments_count
    • $e->set_increments_count($bool)
    • $bool = $e->no_display
    • $e->set_no_display($bool)
    • @plan = $e->sets_plan
    • $e->set_sets_plan(\@plan)
    • $summary = $e->summary
    • $e->set_summary($summary_or_undef)
    • $int_or_undef = $e->terminate
    • @int_or_empty = $e->terminate
    • $e->set_terminate($int_or_undef)
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿงš Test2::Event::Note โ€” Note event type

The note event type. Little FYI, no drama. ๐ŸŒธ

  • DESCRIPTION
  • SYNOPSIS
  • ACCESSORS
    • $note->message
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ‘‘ Test2::Event::Ok โ€” Ok event type

The ok event type. The one everybody wants to see. โœจ

  • DESCRIPTION
  • SYNOPSIS
  • ACCESSORS
    • $rb = $e->pass
    • $name = $e->name
    • $b = $e->effective_pass
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ’– Test2::Event::Pass โ€” Event for a simple passing assertion

The event for a simple passing assertion. Pure serotonin. ๐Ÿซถ

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŒŸ Test2::Event::Plan โ€” The event of a plan

The event of a plan. Every good test suite has one. ๐ŸŽ€

  • DESCRIPTION
  • SYNOPSIS
  • ACCESSORS
    • $num = $plan->max
    • $dir = $plan->directive
    • $reason = $plan->reason
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿฆ‹ Test2::Event::Skip โ€” Skip event type

The skip event type. Sometimes the move is to not do the thing, and that's valid. ๐Ÿ’œ

  • DESCRIPTION
  • SYNOPSIS
  • ACCESSORS
    • $reason = $e->reason
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŒˆ Test2::Event::Subtest โ€” Event for subtest types

The event for subtest types. Events inside events, it's giving inception. ๐Ÿ”ฅ

  • DESCRIPTION
  • ACCESSORS
    • $arrayref = $e->subevents
    • $bool = $e->buffered
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

โญ Test2::Event::TAP::Version โ€” Event for TAP version.

The event for the TAP version. โœจ

  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • $version = $e->version
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ‘‘ Test2::Event::V2 โ€” Second generation event.

The second generation event. Gen 2. The glow-up. ๐Ÿ’…

  • DESCRIPTION
  • SYNOPSIS
    • USING A CONTEXT
    • USING THE CONSTRUCTOR
  • METHODS
    • $fd = $e->facet_data()
    • $about = $e->about()
    • $trace = $e->trace()
    • MUTATION
      • $e->add_amnesty({...})
      • $e->add_hub({...})
      • $e->set_uuid($UUID)
      • $e->set_trace($trace)
    • LEGACY SUPPORT METHODS
      • causes_fail
      • diagnostics
      • global
      • increments_count
      • no_display
      • sets_plan
      • subtest_id
      • summary
      • terminate
  • THIRD PARTY META-DATA
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>

Standard copyright block bestie, nothing new to see here ๐Ÿ’…


๐ŸŒธ Test2::Event::Waiting - Tell all procs/threads it is time to be done

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ’– Test2::EventFacet - Base class for all event facets.

Like, the blueprint for every facet out there, fr fr.

DESCRIPTION

METHODS

$key = $facet_class->facet_key()
$bool = $facet_class->is_list()
$clone = $facet->clone()
$clone = $facet->clone(%replace)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

โœจ Test2::EventFacet::About - Facet with event details.

DESCRIPTION

FIELDS

$string = $about->{details}
$string = $about->details()
$package = $about->{package}
$package = $about->package()
$bool = $about->{no_display}
$bool = $about->no_display()
$uuid = $about->{uuid}
$uuid = $about->uuid()
$uuid = $about->{eid}
$uuid = $about->eid()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŽ€ Test2::EventFacet::Amnesty - Facet for assertion amnesty.

DESCRIPTION

NOTES

FIELDS

$string = $amnesty->{details}
$string = $amnesty->details()
$short_string = $amnesty->{tag}
$short_string = $amnesty->tag()
$bool = $amnesty->{inherited}
$bool = $amnesty->inherited()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿฆ‹ Test2::EventFacet::Assert - Facet representing an assertion.

DESCRIPTION

FIELDS

$string = $assert->{details}
$string = $assert->details()
$bool = $assert->{pass}
$bool = $assert->pass()
$bool = $assert->{no_debug}
$bool = $assert->no_debug()
$int = $assert->{number}
$int = $assert->number()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ’… Test2::EventFacet::Control - Facet for hub actions and behaviors.

DESCRIPTION

FIELDS

$string = $control->{details}
$string = $control->details()
$bool = $control->{global}
$bool = $control->global()
$exit = $control->{terminate}
$exit = $control->terminate()
$bool = $control->{halt}
$bool = $control->halt()
$bool = $control->{has_callback}
$bool = $control->has_callback()
$encoding = $control->{encoding}
$encoding = $control->encoding()
$phase = $control->{phase}
$phase = $control->phase()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ’€ Test2::EventFacet::Error - Facet for errors that need to be shown.

DESCRIPTION

NOTES

FIELDS

$string = $error->{details}
$string = $error->details()
$short_string = $error->{tag}
$short_string = $error->tag()
$bool = $error->{fail}
$bool = $error->fail()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ”ฅ Test2::EventFacet::Hub - Facet for the hubs an event passes through.

DESCRIPTION

FACET FIELDS

$string = $trace->{details}
$string = $trace->details()
$int = $trace->{pid}
$int = $trace->pid()
$int = $trace->{tid}
$int = $trace->tid()
$hid = $trace->{hid}
$hid = $trace->hid()
$huuid = $trace->{huuid}
$huuid = $trace->huuid()
$int = $trace->{nested}
$int = $trace->nested()
$bool = $trace->{buffered}
$bool = $trace->buffered()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ“ Test2::EventFacet::Info - Facet for information a developer might care about.

DESCRIPTION

NOTES

FIELDS

$string_or_structure = $info->{details}
$string_or_structure = $info->details()
$structure = $info->{table}
$structure = $info->table()
$short_string = $info->{tag}
$short_string = $info->tag()
$bool = $info->{debug}
$bool = $info->debug()
$bool = $info->{important}
$bool = $info->important

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ‘‘ Test2::EventFacet::Info::Table - Intermediary representation of a table.

DESCRIPTION

SYNOPSIS

ATTRIBUTES

$header_aref = $t->header()
$rows_aref = $t->rows()
$bool = $t->collapse()
$aref = $t->no_collapse()
$str = $t->as_string()
$href = $t->as_hash()
%args = $t->info_args()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿงš Test2::EventFacet::Meta - Facet for meta-data

DESCRIPTION

METHODS AND FIELDS

$anything = $meta->{anything}
$anything = $meta->anything()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŒˆ Test2::EventFacet::Parent - Facet for events contains other events

DESCRIPTION

FIELDS

$string = $parent->{details}
$string = $parent->details()
$hid = $parent->{hid}
$hid = $parent->hid()
$arrayref = $parent->{children}
$arrayref = $parent->children()
$bool = $parent->{buffered}
$bool = $parent->buffered()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

โญ Test2::EventFacet::Plan - Facet for setting the plan

DESCRIPTION

FIELDS

$string = $plan->{details}
$string = $plan->details()
$positive_int = $plan->{count}
$positive_int = $plan->count()
$bool = $plan->{skip}
$bool = $plan->skip()
$bool = $plan->{none}
$bool = $plan->none()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŽ€ Test2::EventFacet::Render - Facet that dictates how to render an event.

DESCRIPTION

FIELDS

$string = $render->[#]->{details}
$string = $render->[#]->details()
$string = $render->[#]->{tag}
$string = $render->[#]->tag()
$string = $render->[#]->{facet}
$string = $render->[#]->facet()
$mode = $render->[#]->{mode}
$mode = $render->[#]->mode()
calculated
replace

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿฆ‹ Test2::EventFacet::Trace - Debug information for events

DESCRIPTION

SYNOPSIS

FACET FIELDS

$string = $trace->{details}
$string = $trace->details()
$frame = $trace->{frame}
$frame = $trace->frame()
$int = $trace->{pid}
$int = $trace->pid()
$int = $trace->{tid}
$int = $trace->tid()
$id = $trace->{cid}
$id = $trace->cid()
$uuid = $trace->{uuid}
$uuid = $trace->uuid()
($pkg, $file, $line, $subname) = $trace->call
@caller = $trace->full_call
$warning_bits = $trace->warning_bits
$hid = $trace->{hid}
$hid = $trace->hid()
$huuid = $trace->{huuid}
$huuid = $trace->huuid()
$int = $trace->{nested}
$int = $trace->nested()
$bool = $trace->{buffered}
$bool = $trace->buffered()

METHODS

$trace->set_detail($msg)
$msg = $trace->detail
$str = $trace->debug
$trace->alert($MESSAGE)
$trace->throw($MESSAGE)
($package, $file, $line, $subname) = $trace->call()
$pkg = $trace->package
$file = $trace->file
$line = $trace->line
$subname = $trace->subname
$sig = trace->signature

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ’œ Test2::Formatter - Namespace for formatters.

DESCRIPTION

CREATING FORMATTERS

Okay so when you're building one of these bad boys, here's the tea you're working with:

  • The number of tests that were planned
  • The number of tests actually seen
  • The number of tests which failed
  • A boolean indicating whether or not the test suite passed
  • A boolean indicating whether or not this call is for a subtest

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŒธ Test2::Formatter::TAP - Standard TAP formatter

DESCRIPTION

SYNOPSIS

METHODS

$bool = $tap->no_numbers
$tap->set_no_numbers($bool)
$arrayref = $tap->handles
$tap->set_handles(\@handles);
$encoding = $tap->encoding
$tap->encoding($encoding)
$tap->write($e, $num)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>
  • Kent Fredric <kentnl@cpan.org>

๐Ÿ”ฅ Test2::Hub - The conduit through which all events flow.

SYNOPSIS

DESCRIPTION

COMMON TASKS

SENDING EVENTS

ALTERING OR REMOVING EVENTS

LISTENING FOR EVENTS

POST-TEST BEHAVIORS

SETTING THE FORMATTER

METHODS

$hub->send($event)
$hub->process($event)
$old = $hub->format($formatter)
$sub = $hub->listen(sub { ... }, %optional_params)
$hub->unlisten($sub)
$sub = $hub->filter(sub { ... }, %optional_params)
$sub = $hub->pre_filter(sub { ... }, %optional_params)
$hub->unfilter($sub)
$hub->pre_unfilter($sub)
$hub->follow_op(sub { ... })
$sub = $hub->add_context_acquire(sub { ... });
$hub->remove_context_acquire($sub);
$sub = $hub->add_context_init(sub { ... });
$hub->remove_context_init($sub);
$sub = $hub->add_context_release(sub { ... });
$hub->remove_context_release($sub);
$hub->cull()
$pid = $hub->pid()
$tid = $hub->tid()
$hud = $hub->hid()
$uuid = $hub->uuid()
$ipc = $hub->ipc()
$hub->set_no_ending($bool)
$bool = $hub->no_ending
$bool = $hub->active
$hub->set_active($bool)

STATE METHODS

$hub->reset_state()
$num = $hub->count
$num = $hub->failed
$bool = $hub->ended
$bool = $hub->is_passing
$hub->is_passing($bool)
$hub->plan($plan)
$plan = $hub->plan
$bool = $hub->check_plan

THIRD PARTY META-DATA

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ’– Test2::Hub::Interceptor - Hub used by interceptor to grab results.

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿฆ‹ Test2::Hub::Interceptor::Terminator - Exception class used by Test2::Hub::Interceptor

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

โœจ Test2::Hub::Subtest - Hub used by subtests

DESCRIPTION

TOGGLES

$bool = $hub->manual_skip_all
$hub->set_manual_skip_all($bool)

๐Ÿฆ‹ Test2::IPC โ€” Turn on IPC for threading or forking support.

Okay so real talk, this module is the one that makes IPC (inter-process communication) go live so your forks and your threads can actually gossip with each other. You flip it on, the magic happens. โœจ

โœจ SYNOPSIS โœจ

๐Ÿ’… DISABLING IT

There's a whole subsection on how to turn it back off, iykyk โ€” sometimes you genuinely want the silence.

๐Ÿ“ฆ EXPORTS ๐Ÿ“ฆ

  • cull() โ€” the one and only export, bestie. That's it.

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐ŸŒธ Test2::IPC::Driver โ€” Base class for Test2 IPC drivers.

The blueprint. If you're writing an IPC driver, this is your parent class, periodt. ๐Ÿ‘‘

โœจ SYNOPSIS โœจ

๐Ÿ› ๏ธ METHODS ๐Ÿ› ๏ธ

  • $self->abort($msg)
  • $self->abort_trace($msg)

๐Ÿšš LOADING DRIVERS ๐Ÿšš

๐Ÿงš WRITING DRIVERS ๐Ÿงš

๐Ÿ”ฅ METHODS SUBCLASSES MUST IMPLEMENT ๐Ÿ”ฅ

  • $ipc->is_viable
  • $ipc->add_hub($hid)
  • $ipc->drop_hub($hid)
  • $ipc->send($hid, $event);
  • $ipc->send($hid, $event, $global);
  • @events = $ipc->cull($hid)
  • $ipc->waiting()

๐Ÿ’– METHODS SUBCLASSES MAY IMPLEMENT OR OVERRIDE ๐Ÿ’–

  • $ipc->driver_abort($msg)

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿ“ Test2::IPC::Driver::Files โ€” Temp dir + Files concurrency model.

The default vibe: a temp directory plus files. It's giving "old reliable but make it filesystem." ๐Ÿ—‚๏ธ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โœจ SYNOPSIS โœจ

๐ŸŒˆ ENVIRONMENT VARIABLES ๐ŸŒˆ

  • T2_KEEP_TEMPDIR=0
  • T2_TEMPDIR_TEMPLATE='test2-XXXXXX'

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐ŸŽ€ Test2::Manual โ€” Documentation hub for Test2 and Test2-Suite.

Your home base, bestie. Everything Test2 and Test2-Suite lives here. ๐Ÿ ๐Ÿ’–

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โœ๏ธ WRITING TESTS โœ๏ธ

๐Ÿงฐ WRITING TOOLS ๐Ÿงฐ

๐Ÿซ€ GUTS AND INNER WORKINGS ๐Ÿซ€

๐Ÿงต A NOTE ON CONCURRENCY (SUPPORT FOR FORKING AND THREADING) ๐Ÿงต

๐Ÿค CONTRIBUTING ๐Ÿค

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿ’œ Test2::Manual::Anatomy โ€” The hub for documentation of the inner workings of Test2 components.

Not me opening up Test2 and showing you the whole anatomy ๐Ÿ’€ this is the master hub for all the guts-level docs.

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ” END TO END ๐Ÿ”

โšก EVENTS โšก

๐ŸŒ€ THE CONTEXT ๐ŸŒ€

๐Ÿงฉ THE API AND THE API INSTANCE ๐Ÿงฉ

๐Ÿ›Ž๏ธ HUBS ๐Ÿ›Ž๏ธ

๐Ÿ“ก THE IPC SYSTEM ๐Ÿ“ก

๐Ÿ”ง INTERNAL UTILITIES ๐Ÿ”ง

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐ŸŒŸ Test2::Manual::Anatomy::API โ€” Internals documentation for the API.

The API, but zoomed all the way in. Internals o'clock. ๐Ÿ”ฌ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ› ๏ธ IMPLEMENTATION DETAILS ๐Ÿ› ๏ธ

๐Ÿ’ซ Test2::API

๐Ÿ’ซ Test2::API::Instance

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿงš Test2::Manual::Anatomy::Context โ€” Internals documentation for the Context objects.

The Context object is lowkey the main character of Test2 and I will not be taking questions. ๐ŸŒˆ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐ŸŒ€ WHAT IS THE CONTEXT OBJECT? ๐ŸŒ€

๐ŸŽฏ PRIMARY INTERFACE FOR TEST TOOLS ๐ŸŽฏ

๐Ÿ“ TRACK FILE AND LINE NUMBERS FOR ERROR REPORTING ๐Ÿ“

๐Ÿ›ก๏ธ PRESERVE $?, $!, $^E AND $@ ๐Ÿ›ก๏ธ

๐Ÿ FINALIZE THE API STATE ๐Ÿ

๐Ÿ” FIND/CREATE THE CURRENT/ROOT HUB ๐Ÿ”

๐Ÿช PROVIDE HOOKS ๐Ÿช

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿ” Test2::Manual::Anatomy::EndToEnd โ€” Overview of Test2 from load to finish.

The full journey, start to finish, no skipped steps. Buckle up bestie, we're doing the whole plot. ๐ŸŽฌ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โ“ WHAT HAPPENS WHEN I LOAD THE API? โ“

  • A singleton instance of Test2::API::Instance is created
  • Several API functions are defined that use the singleton instance
  • Then what?

โ“ WHAT HAPPENS WHEN I USE A TOOL? โ“

  • A tool function is run
  • The tool acquires a context object
  • The tool uses the context object to create, send, and return events
  • When done the tool MUST release the context
  • The tool returns

โ“ WHAT HAPPENS WHEN I ACQUIRE A CONTEXT? โ“

  • $!, $@, $? and $^E are captured and preserved
  • The API state is changed to 'loaded'
  • The current hub is found
  • Context acquire hooks fire
  • Any existing context is found
  • Stack depth is measured
  • A new context is created (if no existing context was found)
  • Context init hooks fire (if no existing context was found)
  • $!, $@, $?, and $^E are restored
  • The context is returned

โ“ WHAT HAPPENS WHEN I SEND AN EVENT? โ“

  • The Test2::Event::Ok module is loaded
  • A new instance of Test2::Event::Ok is created
  • The event object is sent to the hub
  • The hub runs the event through any filters
  • The global test state is updated to reflect the event
  • The event is sent to the formatter
  • The event is sent to all listeners

โ“ WHAT HAPPENS WHEN I RELEASE A CONTEXT? โ“

  • The current context clone is released
  • If this was the canonical context, it will actually release
  • Release hooks are called
  • The context is cleared
  • $!, $@, $?, and $^E are restored

โ“ WHAT HAPPENS WHEN I USE done_testing()? โ“

  • Any pending IPC events will be culled
  • Follow-up hooks are run
  • The final plan event is generated and processed
  • The current hub is finalized

โ“ WHAT HAPPENS WHEN A TEST SCRIPT IS DONE? โ“

  • API Versions are checked
  • Any remaining context objects are cleaned up
  • Child processes are sent a 'waiting' event
  • The script will wait for all child processes and/or threads to complete
  • The hub stack is cleaned up
  • The root hub is finalized
  • Exit callbacks are called
  • The scripts exit value ($?) is set
  • Broken module diagnostics

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


โšก Test2::Manual::Anatomy::Event โ€” The internals of events

Events, but from the inside. The lore. ๐Ÿ“œโœจ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ

๐ŸŽ THE EVENT OBJECT ๐ŸŽ

๐Ÿ’Ž THE FACET API ๐Ÿ’Ž

  • assert => {details => $name, pass => $bool, no_debug => $bool, number => $maybe_int}
  • about => {details => $string, no_display => $bool, package => $pkg}
  • amnesty => [{details => $string, tag => $short_string, inherited => $bool}]
  • control => {details => $string, global => $bool, terminate => $maybe_int, halt => $bool, has_callback => $bool, encoding => $enc}
  • errors => [{details => $string, tag => $short_string, fail => $bool}]
  • info => [{details => $string, tag => $short_string, debug => $bool, important => $bool}]
  • parent => {details => $string, hid => $hid, children => [...], buffered => 1}
  • plan => {details => $string, count => $int, skip => $bool, none => $bool}
  • trace => {details => $string, frame => [$pkg, $file, $line, $sub], pid => $int, tid => $int, cid => $cid, hid => $hid, nested => $int, buffered => $bool}

๐Ÿฆ‹ CUSTOM FACETS ๐Ÿฆ‹

  • $string = $facet_class->facet_key
  • $bool = $facet_class->is_list

๐Ÿง“ THE OLD API ๐Ÿง“

  • $bool = $e->causes_fail
  • $bool = $e->increments_count
  • $e->callback($hub)
  • $num = $e->nested
  • $bool = $e->global
  • $code = $e->terminate
  • $msg = $e->summary
  • ($count, $directive, $reason) = $e->sets_plan()
  • $bool = $e->diagnostics
  • $bool = $e->no_display

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿ›Ž๏ธ Test2::Manual::Anatomy::Hubs โ€” Internals documentation for the hub stack, and hubs.

The hub stack, explained. This is where everything routes through, bestie. ๐Ÿšฆ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿค” WHAT IS A HUB? ๐Ÿค”

๐Ÿฅž WHY DO WE HAVE A HUB STACK? ๐Ÿฅž

  • subtests
  • testing your test tools

๐Ÿ“ฅ WHEN SHOULD I ADD A HUB TO THE STACK? ๐Ÿ“ฅ

๐Ÿ—บ๏ธ WHERE IS THE STACK? ๐Ÿ—บ๏ธ

๐ŸŒณ WHAT ABOUT THE ROOT HUB? ๐ŸŒณ

๐Ÿ“ก HOW DO HUBS HANDLE IPC? ๐Ÿ“ก

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿ“ก Test2::Manual::Anatomy::IPC โ€” Manual for the IPC system.

The inter-process communication system, dissected. ๐Ÿง โœจ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โ” WHAT IS THE IPC SYSTEM

๐ŸŒ HOW DOES THE IPC SYSTEM AFFECT EVERYTHING?

๐Ÿšš WHAT DOES AN IPC DRIVER DO?

๐Ÿ—‚๏ธ HOW DOES THE DEFAULT IPC DRIVER WORK?

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿ”ง Test2::Manual::Anatomy::Utilities โ€” Overview of utilities for Test2.

All the little helper modules that keep the whole thing running. The supporting cast that ate. ๐Ÿ’…

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ’ซ Test2::Util

๐Ÿ’ซ Test2::Util::ExternalMeta

๐Ÿ’ซ Test2::Util::Facets2Legacy

๐Ÿ’ซ Test2::Util::HashBase

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿงต Test2::Manual::Concurrency โ€” Documentation for Concurrency support.

Forking AND threading, both. The chaos is organized, I promise. ๐ŸŒช๏ธ

๐Ÿด FORKING ๐Ÿด

๐Ÿ’ซ Test2

๐Ÿ’ซ Test::Builder

๐Ÿ’ซ Test2::Suite

๐Ÿ’ซ Test::SharedFork

๐Ÿ’ซ Others

๐Ÿงถ THREADING ๐Ÿงถ

๐Ÿ’ซ Test2

๐Ÿ’ซ Test::Builder

๐Ÿ’ซ Test2::Suite

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿค Test2::Manual::Contributing โ€” How to contribute to the Test2 project.

Want in? Obsessed, honestly. Here's how you help. ๐Ÿซถ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ› ๏ธ WAYS TO HELP ๐Ÿ› ๏ธ

๐Ÿ› REPORT BUGS ๐Ÿ›

  • Test2/Test-Builder/Test-More/test-more
  • Test2-Harness

๐Ÿ“ค SUBMIT PATCHES ๐Ÿ“ค

๐Ÿ“š ADD/UPDATE DOCUMENTATION ๐Ÿ“š

๐Ÿ’ฌ ANSWER QUESTIONS ON IRC/SLACK ๐Ÿ’ฌ

๐Ÿงฐ WRITE NEW TOOLS USING TEST2 ๐Ÿงฐ

๐Ÿšš PORT OLD TOOLS TO TEST2 ๐Ÿšš

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐ŸŽ€ Test2::Manual::Testing โ€” Hub for documentation about writing tests with Test2.

Your testing bible, bestie. Everything about actually writing tests lives right here. ๐Ÿ“–๐Ÿ’–

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿงญ Test2::Manual::Testing, When writing tests there are a couple namespaces to focus on:

  • Test2::Tools::*
  • Test2::Plugins::*
  • Test2::Bundle::*
  • Test2::Require::*

๐Ÿ“‹ LISTING DEPENDENCIES ๐Ÿ“‹

๐ŸŽ“ TUTORIALS ๐ŸŽ“

๐ŸŒฑ SIMPLE/INTRODUCTION TUTORIAL ๐ŸŒฑ

๐Ÿšš MIGRATING FROM TEST::BUILDER and TEST::MORE ๐Ÿšš

๐Ÿง  ADVANCED PLANNING ๐Ÿง 

๐Ÿ“ TODO TESTS ๐Ÿ“

๐Ÿช† SUBTESTS ๐Ÿช†

โš–๏ธ COMPARISONS โš–๏ธ

๐Ÿ“ฆ TESTING EXPORTERS ๐Ÿ“ฆ

๐Ÿ›๏ธ TESTING CLASSES ๐Ÿ›๏ธ

๐Ÿชค TRAPPING ๐Ÿชค

โณ DEFERRED TESTING โณ

๐Ÿ”ค MANAGING ENCODINGS ๐Ÿ”ค

๐Ÿ›‘ AUTO-ABORT ON FAILURE ๐Ÿ›‘

๐ŸŽฒ CONTROLLING RANDOM BEHAVIOR ๐ŸŽฒ

๐ŸŽ WRITING YOUR OWN BUNDLE ๐ŸŽ

๐Ÿงฐ TOOLSET DOCUMENTATION ๐Ÿงฐ

๐Ÿ”Œ PLUGIN DOCUMENTATION ๐Ÿ”Œ

๐ŸŽ BUNDLE DOCUMENTATION ๐ŸŽ

๐Ÿ“Œ REQUIRE DOCUMENTATION ๐Ÿ“Œ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐ŸŒฑ Test2::Manual::Testing::Introduction โ€” Introduction to testing with Test2.

Your very first test. So exciting. Let's gooo. ๐Ÿš€

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ“ BOILERPLATE ๐Ÿ“

๐Ÿ“„ THE TEST FILE ๐Ÿ“„

  • use Test2::V0;
  • done_testing;

โš™๏ธ DIST CONFIG โš™๏ธ

โœ… MAKING ASSERTIONS โœ…

๐Ÿƒ RUNNING THE TEST ๐Ÿƒ

๐Ÿƒ RUN DIRECTLY ๐Ÿƒ

๐Ÿƒ USING YATH ๐Ÿƒ

๐Ÿƒ USING PROVE ๐Ÿƒ

๐Ÿ—“๏ธ THE "PLAN" ๐Ÿ—“๏ธ

  • done_testing()
  • plan($COUNT)

๐Ÿงฐ ADDITIONAL ASSERTION TOOLS ๐Ÿงฐ

  • is($a, $b, $description)
  • like($a, $b, $description)

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ“ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿšš Test2::Manual::Testing::Migrating โ€” How to migrate existing tests from Test::More to Test2.

Moving your old Test::More tests over to Test2. It's giving glow-up, and honestly? Easier than you think. ๐Ÿ’…โœจ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ•ฐ๏ธ LEGACY TEST ๐Ÿ•ฐ๏ธ

๐Ÿ“ BOILERPLATE ๐Ÿ“

  • Replace Test::More with Test2::V0
  • NOTE: srand
  • Stop using use_ok()
  • Stop using require_ok()
  • Remove strict/warnings (optional)
  • Change where the plan is set

โœ… SIMPLE ASSERTIONS โœ…

๐Ÿ“ TODO ๐Ÿ“

  • todo $reason => sub { ... }
  • { my $TODO = todo $reason; ... }
  • DEEP COMPARISONS
  • COMPARING REFERENCES
  • TOOLS THAT ARE GONE
  • TOOLS THAT HAVE CHANGED
  • FINAL VERSION
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank โ€” heading's there, body isn't, that's just how it is)

๐ŸŒˆ Test2::Manual::Testing::Planning โ€” The many ways to set a plan.

okay so this one is literally about plans, bestie. here's what's inside:

  • DESCRIPTION
  • TEST COUNT
  • DONE TESTING
  • SKIP ALL
  • CUSTOM PLAN EVENT
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐ŸŽ€ Test2::Manual::Testing::Todo โ€” Tutorial for marking tests as TODO.

  • DESCRIPTION
  • THE TOOL
    • TODO BLOCK
    • TODO VARIABLE
  • MANUAL TODO EVENTS
  • HOW THE TODO TOOLS WORK UNDER THE HOOD
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿฆ‹ Test2::Manual::Tooling โ€” Manual page for tool authors.

  • DESCRIPTION
  • TOOL TUTORIALS
    • FIRST TOOL
    • MOVING FROM Test::Builder
    • NESTING TOOLS
    • TOOLS WITH SUBTESTS
    • TESTING YOUR TEST TOOLS
  • PLUGIN TUTORIALS
    • TAKING ACTION WHEN A NEW TOOL STARTS
    • TAKING ACTION AFTER A TOOL IS DONE
    • TAKING ACTION AT THE END OF TESTING
    • TAKING ACTION JUST BEFORE EXIT
  • WRITING A SIMPLE JSONL FORMATTER
  • WHERE TO FIND HOOKS AND APIS
    • global API, In hubs
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

โœจ Test2::Manual::Tooling::FirstTool โ€” Write your first tool with Test2.

  • DESCRIPTION
  • COMPLETE CODE UP FRONT
  • LINE BY LINE
    • sub ok($;$@) {
    • my ($bool, $name, @diag) = @_;
    • my $ctx = context();
    • return $ctx->pass_and_release($name) if $bool;
    • return $ctx->fail_and_release($name, @diag);
  • CONTEXT OBJECT DOCUMENTATION
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐ŸŒธ Test2::Manual::Tooling::Formatter โ€” How to write a custom formatter, in our case a JSONL formatter.

  • DESCRIPTION
  • COMPLETE CODE UP FRONT
  • LINE BY LINE
    • use base qw/Test2::Formatter/;
    • sub new { bless {}, shift }
    • sub encoding {};
    • sub write { ... }
    • my ($self, $e, $num, $f) = @_;
    • $self
    • $e
    • $num
    • $f
    • $f ||= $e->facet_data;
    • print encode_json($f), "\n";
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿงš Test2::Manual::Tooling::Nesting โ€” Tutorial for using other tools within your own.

  • DESCRIPTION
  • NAIVE WAY
    • WHATS WRONG WITH IT?
    • HOW TO FIX IT
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿ”ฅ Test2::Manual::Tooling::Plugin::TestExit โ€” How to safely add pre-exit behaviors.

  • DESCRIPTION
  • COMPLETE CODE UP FRONT
  • LINE BY LINE
    • use Test2::API qw{test2_add_callback_exit};
    • test2_add_callback_exit(sub { ... });
    • my ($ctx, $orig_code, $new_exit_code_ref) = @_
    • return if $orig_code == 42
    • $$new_exit_code_ref = 42
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿ“ Test2::Manual::Tooling::Plugin::TestingDone โ€” Run code when the test file is finished, or when done_testing is called.

  • DESCRIPTION
  • COMPLETE CODE UP FRONT
  • LINE BY LINE
    • use Test2::API qw{test2_add_callback_testing_done};
    • test2_add_callback_testing_done(sub { ... });
    • ok(!$some_global, '$some_global was not set')
    • print "The test file is done, or done_testing was just called\n"
  • UNDER THE HOOD
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿ’… Test2::Manual::Tooling::Plugin::ToolCompletes โ€” How to add behaviors that occur when a tool completes work.

  • DESCRIPTION
  • COMPLETE CODE UP FRONT
  • LINE BY LINE
    • use Test2::API qw{test2_add_callback_context_release};
    • test2_add_callback_context_release(sub { ... })
    • my $ctx_ref = shift
    • print "Context was released\n"
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿซถ Test2::Manual::Tooling::Plugin::ToolStarts โ€” How to add behaviors that occur when a tool starts work.

  • DESCRIPTION
  • COMPLETE CODE UP FRONT
  • LINE BY LINE
    • use Test2::API qw{test2_add_callback_context_init test2_add_callback_context_acquire};
    • test2_add_callback_context_acquire(sub { ... })
    • my $params_ref = shift
    • print "A tool has requested the context\n"
    • test2_add_callback_context_init(sub { ... })
    • my $ctx_ref = shift
    • print "A new context was created\n"
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

โญ Test2::Manual::Tooling::Subtest โ€” How to implement a tool that makes use of subtests.

  • DESCRIPTION
  • WHICH TYPE OF SUBTEST DO I NEED?
    • SUBTEST WITH USER SUPPLIED CODEREF
      • @args
      • \%params
      • buffered => $bool
      • inherit_trace => $bool
      • no_fork => $bool
    • SUBTEST WITH TOOL-SIDE CODEREF
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐ŸŒˆ Test2::Manual::Tooling::TestBuilder โ€” This section maps Test::Builder methods to Test2 concepts.

  • DESCRIPTION
  • CONTEXT
  • TEST BUILDER METHODS
    • $tb->BAIL_OUT($reason)
    • $tb->diag($string)
    • $tb->note($string)
    • $tb->done_testing
    • $tb->like
    • $tb->unlike
    • $tb->ok($bool, $name)
    • $tb->subtest
    • $tb->todo_start
    • $tb->todo_end
    • $tb->output
    • $tb->failure_output
    • and $tb->todo_output
  • LEVEL
  • TODO
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿ’– Test2::Manual::Tooling::Testing โ€” Tutorial on how to test your testing tools.

  • DESCRIPTION
  • THE HOLY GRAIL OF TESTING YOUR TOOLS
  • ADDITIONAL HELPERS
    • Test2::Tools::Tester
    • Test2::Tools::HarnessTester
    • Test2::Tools::Compare
      • event $TYPE => ..
      • fail_events $TYPE => ..
  • SEE ALSO
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿ‘‘ Test2::Mock โ€” Module for managing mocked classes and instances.

  • DESCRIPTION
  • SYNOPSIS
  • CONSTRUCTION
  • METHODS
    • $mock = Test2::Mock->new(class => $CLASS, ...)
    • $mock->track($bool)
    • $hashref = $mock->sub_tracking
    • $arrayref = $mock->call_tracking
    • $mock->clear_sub_tracking()
    • $mock->clear_sub_tracking(\@subnames)
    • $mock->clear_call_tracking()
    • $mock->add('symbol' => ..., 'symbol2' => ...)
    • $mock->override('symbol1' => ..., 'symbol2' => ...)
    • $mock->set('symbol1' => ..., 'symbol2' => ...)
    • $mock->restore($SYMBOL)
    • $mock->reset($SYMBOL)
    • $mock->orig($SYMBOL)
    • $mock->current($SYMBOL)
    • $mock->reset_all
    • $mock->add_constructor($NAME => $TYPE)
    • $mock->override_constructor($NAME => $TYPE)
    • $mock->before($NAME, sub { ... })
    • $mock->after($NAME, sub { ... })
    • $mock->around($NAME, sub { ... })
    • $mock->autoload
    • $mock->block_load
    • $pm_file = $mock->file
    • $bool = $mock->purge_on_destroy($bool)
    • $stash = $mock->stash
    • $class = $mock->class
    • $p = $mock->parent
    • $c = $mock->child
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐ŸŒŸ Test2::Plugin โ€” Documentation for plugins

  • DESCRIPTION
  • FAQ Should I subclass Test2::Plugin?
  • HOW DO I WRITE A PLUGIN?
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿšจ Test2::Plugin::BailOnFail โ€” Automatically bail out of testing on the first test failure.

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿ’€ Test2::Plugin::DieOnFail โ€” Automatically die on the first test failure.

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿ“‹ Test2::Plugin::ExitSummary โ€” Add extra diagnostics on failure at the end of the test.

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐ŸŽฒ Test2::Plugin::SRand โ€” Control the random seed for more controlled test environments.

  • DESCRIPTION
  • SYNOPSIS
  • NOTE ON LOAD ORDER
  • CAVEATS
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

โฑ๏ธ Test2::Plugin::Times โ€” Output timing data at the end of the test.

  • CAVEAT
  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐ŸŒˆ Test2::Plugin::UTF8 โ€” Test2 plugin to test with utf8.

  • DESCRIPTION
  • SYNOPSIS
  • import options
    • encoding_only
  • NOTES
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐ŸŽ€ Test2::Require โ€” Base class and documentation for skip-unless type test packages.

  • DESCRIPTION
  • HOW DO I WRITE A 'REQUIRE' MODULE?
    • AS A SUBCLASS
    • STAND-ALONE
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿง‘โ€๐Ÿ’ป Test2::Require::AuthorTesting โ€” Only run a test when the AUTHOR_TESTING environment variable is set.

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐Ÿค– Test2::Require::AutomatedTesting โ€” Only run a test when the AUTOMATED_TESTING environment variable is set.

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

๐ŸŒฑ Test2::Require::EnvVar โ€” Only run a test when a specific environment variable is set.

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
  • AUTHORS
  • COPYRIGHT
๐Ÿ’œ MAINTAINERS Chad Granum <exodist@cpan.org> ยท AUTHORS Chad Granum <exodist@cpan.org> ยท COPYRIGHT (blank)

Test2::Require::ExtendedTesting ๐Ÿ’–

Only run a test when the EXTENDED_TESTING environment variable is set. Like, if your env var isn't set, the whole file just... doesn't go. Bye bestie ๐Ÿ‘‹

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Require::Fork ๐Ÿด

Skip a test file unless the system supports forking. No fork? No test. Simple as ๐Ÿ’…

DESCRIPTION

SYNOPSIS

EXPLANATION

SEE ALSO

  • Test2::Require::RealFork, Test2::Require::Threads

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Require::Module ๐Ÿ“ฆ

Skip tests if certain packages are not installed, or insufficient versions. She's the bouncer at the door โ€” no package, no entry, no version, no entry ๐Ÿšชโœจ

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Require::NonInteractiveTesting ๐Ÿ™ˆ

Only run a test when the NONINTERACTIVE_TESTING environment variable is set. Same energy as its sibling, different env var, zero drama.

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Require::Perl ๐Ÿช

Skip the test unless the necessary version of Perl is installed. If your perl is too vintage for the vibe, the test file just sits this one out ๐ŸŽ€

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Require::RealFork ๐Ÿงฌ

Skip a test file unless the system supports true forking. Emphasis on true forking, okay? She has standards ๐Ÿ’…

DESCRIPTION

SYNOPSIS

SEE ALSO

  • Test2::Require::Fork, Test2::Require::Threads

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Require::ReleaseTesting ๐Ÿš€

Only run a test when the RELEASE_TESTING environment variable is set. Release-time behaviour only, bestie. Everyone else can go home ๐Ÿ˜Œ

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Require::Threads ๐Ÿงต

Skip a test file unless the system supports threading. No threads, no test, and honestly? Respect the boundary ๐Ÿซถ

DESCRIPTION

SYNOPSIS

EXPLANATION

SEE ALSO

  • Test2::Require::Fork, Test2

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Suite ๐Ÿ‘‘

Distribution with a rich set of tools built upon the Test2 framework. This is the whole treasure chest, babe โ€” bundles, tools, plugins, the works. Main character distribution energy ๐Ÿ”ฅ

DESCRIPTION

WHAT ARE TOOLS, PLUGINS, AND BUNDLES?

TOOLS, PLUGINS, BUNDLES

INCLUDED BUNDLES

  • Test2::V#, Extended, More, Simple

INCLUDED TOOLS

  • Basic, Compare, ClassicCompare, Class, Defer, Encoding, Exports, Mock, Ref, Spec, Subtest, Target

INCLUDED PLUGINS

  • BailOnFail, DieOnFail, ExitSummary, SRand, UTF8

INCLUDED REQUIREMENT CHECKERS

  • AuthorTesting, EnvVar, Fork, RealFork, Module, Perl, Threads

SEE ALSO

CONTACTING US

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Todo ๐Ÿ“

TODO extension for Test2. The "yeah I know it's broken, it's on the list" wrapper ๐ŸŽ€

DESCRIPTION

SYNOPSIS

CONSTRUCTION OPTIONS

  • reason (required)
  • hub (optional)

INSTANCE METHODS

  • $todo->end

CLASS METHODS

  • $count = Test2::Todo->hub_in_todo($hub)

OTHER NOTES

How it works

$todo->end is called at destruction

Can I use multiple instances?

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Tools ๐Ÿงฐ

Documentation for Tools. The meta-doc, the lore, the behind-the-scenes of how tools get built ๐Ÿ’–

DESCRIPTION

FAQ

  • Why is it called Test2::Tools, and not Test2::Tool?
  • Should my tools subclass Test2::Tools?

HOW DO I WRITE A 'TOOLS' MODULE?

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Tools::AsyncSubtest ๐Ÿฆ‹

Tools for writing async subtests. Subtests that run off in their own little world, then come back and tell you everything ๐ŸŒธ

DESCRIPTION

SYNOPSIS

EXPORTS

  • $ast = async_subtest $name
  • $ast = async_subtest $name => sub { ... }
  • $ast = async_subtest $name => \%hub_params, sub { ... }
  • $ast = fork_subtest $name => sub { ... }
  • $ast = fork_subtest $name => \%hub_params, sub { ... }
  • $ast = thread_subtest $name => sub { ... }
  • $ast = thread_subtest $name => \%hub_params, sub { ... }

NOTES

  • Async Subtests are always buffered
  • Do not use done_testing() yourself

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Tools::Basic ๐ŸŽ€

Test2 implementation of the basic testing tools. The classics, but glow-up'd for Test2 โœจ

DESCRIPTION

SYNOPSIS

EXPORTS

PLANNING

  • plan($num)
  • plan('tests' => $num)
  • plan('skip_all' => $reason)
  • skip_all($reason)
  • done_testing
  • bail_out($reason)

ASSERTIONS

  • ok($bool)
  • ok($bool, $name)
  • ok($bool, $name, @diag)
  • pass()
  • pass($name)
  • fail()
  • fail($name)
  • fail($name, @diag)

DIAGNOSTICS

  • diag(@messages)
  • note(@messages)

META

  • $todo = todo($reason)
  • todo $reason => sub { ... }
  • skip($why)
  • skip($why, $count)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Tools::Class ๐Ÿ›๏ธ

Test2 implementation of the tools for testing classes. Is it a class? Does it do the thing? Does it do the role? Let's find out, bestie ๐Ÿ’…

DESCRIPTION

SYNOPSIS

EXPORTS

  • can_ok($thing, @methods)
  • can_ok($thing, \@methods, $test_name)
  • isa_ok($thing, @classes)
  • isa_ok($thing, \@classes, $test_name)
  • DOES_ok($thing, @roles)
  • DOES_ok($thing, \@roles, $test_name)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Tools::ClassicCompare ๐Ÿ•ฐ๏ธ

Classic (Test::More style) comparison tools. Old money, but make it Test2 ๐Ÿ’–

DESCRIPTION

SYNOPSIS

EXPORTS

  • $bool = is($got, $expect)
  • $bool = is($got, $expect, $name)
  • $bool = is($got, $expect, $name, @diag)
  • $bool = isnt($got, $dont_expect)
  • $bool = isnt($got, $dont_expect, $name)
  • $bool = isnt($got, $dont_expect, $name, @diag)
  • $bool = like($got, $pattern)
  • $bool = like($got, $pattern, $name)
  • $bool = like($got, $pattern, $name, @diag)
  • $bool = unlike($got, $pattern)
  • $bool = unlike($got, $pattern, $name)
  • $bool = unlike($got, $pattern, $name, @diag)
  • $bool = is_deeply($got, $expect)
  • $bool = is_deeply($got, $expect, $name)
  • $bool = is_deeply($got, $expect, $name, @diag)
  • cmp_ok($got, $op, $expect)
  • cmp_ok($got, $op, $expect, $name)
  • cmp_ok($got, $op, $expect, $name, @diag)

And the whole lil operator squad it supports, exactly as listed:

!=  (num), >=  (num), <=  (num), >   (num), <
 (num), <=> (num), eq  (str), ne  (str), gt  (str), lt  (str), ge
(str), le  (str), cmp (str), !~  (str), &&, ||, xor, or, and, //, &,
|, ~~

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

COPYRIGHT


Test2::Tools::Compare ๐Ÿ”

Tools for comparing deep data structures. This is the big one. Deep structures, builders on builders, checks on checks. She ate and left no crumbs ๐Ÿ‘‘

DESCRIPTION

SYNOPSIS

ADVANCED

COMPARISON TOOLS

  • $bool = is($got, $expect)
  • $bool = is($got, $expect, $name)
  • $bool = is($got, $expect, $name, @diag)
  • $bool = isnt($got, $expect)
  • $bool = isnt($got, $expect, $name)
  • $bool = isnt($got, $expect, $name, @diag)
  • $bool = like($got, $expect)
  • $bool = like($got, $expect, $name)
  • $bool = like($got, $expect, $name, @diag)
  • $bool = unlike($got, $expect)
  • $bool = unlike($got, $expect, $name)
  • $bool = unlike($got, $expect, $name, @diag)

QUICK CHECKS

  • $check = T()
  • $check = F()
  • $check = D()
  • $check = U()
  • $check = DF()
  • $check = E()
  • $check = DNE()
  • $check = FDNE()
  • $check = L()

VALUE SPECIFICATIONS

  • $check = string "..."
  • $check = !string "..."
  • $check = number ...;
  • $check = !number ...;
  • $check = number_lt ...;
  • $check = number_le ...;
  • $check = number_ge ...;
  • $check = number_gt ...;
  • $check = float ...;
  • $check = !float ...;
  • $check = within($num, $tolerance);
  • $check = !within($num, $tolerance);
  • $check = rounded($num, $precision);
  • $check = !rounded($num, $precision);
  • $check = bool ...;
  • $check = !bool ...;
  • $check = check_isa ...;
  • $check = !check_isa ...;
  • $check = match qr/.../
  • $check = !mismatch qr/.../
  • $check = !match qr/.../
  • $check = mismatch qr/.../
  • $check = validator(sub{ ... })
  • $check = validator($NAME => sub{ ... })
  • $check = validator($OP, $NAME, sub{ ... })
  • $check = exact_ref($ref)

SET BUILDERS

  • my $check = check_set($check1, $check2, ...)
  • my $check = in_set($check1, $check2, ...)
  • not_in_set($check1, $check2, ...)
  • check $thing

HASH BUILDER

  • $check = hash { ... }
  • field $NAME => $VAL
  • field $NAME => $CHECK
  • all_keys($CHECK1, $CHECK2, ...)
  • all_vals($CHECK1, $CHECK2, ...)
  • all_values($CHECK1, $CHECK2, ...)
  • end()
  • etc()
  • DNE()

ARRAY BUILDER

  • $check = array { ... }
  • item $VAL
  • item $CHECK
  • item $IDX, $VAL
  • item $IDX, $CHECK
  • filter_items { my @remaining = @_; ...; return @filtered }
  • all_items($CHECK1, $CHECK2, ...)
  • end()
  • etc()
  • DNE()

BAG BUILDER

  • $check = bag { ... }
  • item $VAL
  • item $CHECK
  • all_items($CHECK1, $CHECK2, ...)
  • end()
  • etc()

ORDERED SUBSET BUILDER

  • $check = subset { ... }
  • item $VAL
  • item $CHECK

META BUILDER

  • meta { ... }
  • meta_check { ... }
  • prop $NAME => $VAL
  • prop $NAME => $CHECK
  • 'blessed'
  • 'reftype'
  • 'isa'
  • 'this'
  • 'size'

OBJECT BUILDER

  • $check = object { ... }
  • call $METHOD_NAME => $RESULT
  • call $METHOD_NAME => $CHECK
  • call [$METHOD_NAME, @METHOD_ARGS] => $RESULT
  • call [$METHOD_NAME, @METHOD_ARGS] => $CHECK
  • call sub { ... }, $RESULT
  • call sub { ... }, $CHECK
  • call_list $METHOD_NAME => $RESULT
  • call_list $METHOD_NAME => $CHECK
  • call_list [$METHOD_NAME, @METHOD_ARGS] => $RESULT
  • call_list [$METHOD_NAME, @METHOD_ARGS] => $CHECK
  • call_list sub { ... }, $RESULT
  • call_list sub { ... }, $CHECK
  • call_hash $METHOD_NAME => $RESULT
  • call_hash $METHOD_NAME => $CHECK
  • call_hash [$METHOD_NAME, @METHOD_ARGS] => $RESULT
  • call_hash [$METHOD_NAME, @METHOD_ARGS] => $CHECK
  • call_hash sub { ... }, $RESULT
  • call_hash sub { ... }, $CHECK
  • field $NAME => $VAL
  • item $VAL
  • item $IDX, $VAL
  • prop $NAME => $VAL
  • prop $NAME => $CHECK
  • 'blessed'
  • 'reftype'
  • 'isa'
  • 'this'
  • 'size'
  • DNE()
  • end()
  • etc()

๐ŸŽ€ EVENT BUILDERS

Bestie, these are the lil' event-makers you can call โœจ

  • $check = event $TYPE;
  • $check = event $TYPE => sub { ... };
  • $check = event $TYPE => { ... };
  • and the field keys you can pass: 'file', 'line', 'package', 'subname', 'skip', 'todo', 'trace', 'tid', 'pid'
  • @checks = fail_events $TYPE;
  • @checks = fail_events $TYPE => sub { ... };
  • @checks = fail_events $TYPE => { ... };

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(The page doesn't spell out any copyright text right here โ€” that's just how it is ๐Ÿ’…)


๐Ÿฆ‹ Test2::Tools::Defer โ€” Write tests that get executed at a later time

DESCRIPTION

SYNOPSIS

EXPORTS

  • def function => @args;
  • do_def()

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Nothing written out under this one either โ€” empty, iconic, moving on โœจ)


๐ŸŒธ Test2::Tools::Encoding โ€” Tools for managing the encoding of Test2 based tests.

DESCRIPTION

SYNOPSIS

EXPORTS

  • set_encoding($encoding)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Blank here too, bestie ๐Ÿซถ)


๐Ÿ’œ Test2::Tools::Event โ€” Tools for generating test events.

DESCRIPTION

EXPORTS

  • $e = gen_event($TYPE)
  • $e = gen_event($TYPE, %FIELDS)
  • $e = gen_event 'Ok';
  • $e = gen_event Ok => ( ... )
  • $e = gen_event '+Test2::Event::Ok' => ( ... )

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(No copyright text listed right here ๐ŸŒˆ)


๐Ÿ”ฅ Test2::Tools::Exception โ€” Test2 based tools for checking exceptions

DESCRIPTION

SYNOPSIS

EXPORTS

  • $e = dies { ... }
  • $bool = lives { ... }
  • $bool = try_ok { ... }
  • $bool = try_ok { ... } "Test Description"

DIFFERENCES FROM TEST::FATAL

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Empty again, and that's fine ๐Ÿ’–)


โญ Test2::Tools::Exports โ€” Tools for validating exporters.

DESCRIPTION

SYNOPSIS

EXPORTS

  • imported_ok(@SYMBOLS)
  • not_imported_ok(@SYMBOLS)

CAVEATS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Nothing spelled out here ๐ŸŽ€)


๐Ÿงš Test2::Tools::GenTemp โ€” Tool for generating a populated temp directory.

DESCRIPTION

SYNOPSIS

EXPORTS

  • gen_temp(file => 'content', subdir => [ sub_dir_file => 'content', ...], ...)
  • gen_temp(-tempdir => \@TEMPDIR_ARGS, file => 'content', subdir => [ sub_dir_file => 'content', ...], ...)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Blank, bestie ๐ŸŒธ)


๐Ÿซถ Test2::Tools::Grab โ€” Temporarily intercept all events without adding a scope level.

DESCRIPTION

SYNOPSIS

EXPORTS

  • $grab = grab()

SEE ALSO

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(No text here either โœจ)


๐Ÿ’… Test2::Tools::Mock โ€” Class/Instance mocking for Test2.

DESCRIPTION

SYNOPSIS

EXPORTS

DEFAULT

  • mock
  • @mocks = mocked($object)
  • @mocks = mocked($class)
  • $mock = mock $class => ( ... );
  • $mock = mock $instance => ( ... )
  • $mock = mock 'class', $class => ( ... )
  • $obj = mock()
  • $obj = mock { ... }
  • $obj = mock 'obj', ...;
  • mock $mock => sub { ... }
  • mock $method => ( ... )

BY REQUEST

  • $obj = mock_obj( ... )
  • $obj = mock_obj { ... } => ( ... )
  • $obj = mock_obj sub { ... }
  • $obj = mock_obj { ... } => sub { ... }
  • $mock = mock_class $class => ( ... )
  • $mock = mock_class $instance => ( ... )
  • $mock = mock_class ... => sub { ... }
  • mock_build $mock => sub { ... }
  • $mock = mock_building()
  • mock_do $method => $args
  • $sub = mock_accessor $field
  • $sub = mock_getter $field
  • $sub = mock_setter $field
  • %pairs = mock_accessors(qw/name1 name2 name3/)
  • %pairs = mock_getters(qw/name1 name2 name3/)
  • %pairs = mock_setters(qw/name1 name2 name3/)

MOCK CONTROL OBJECTS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Nothing listed right here, no cap ๐Ÿ’œ)


๐Ÿ“ Test2::Tools::Ref โ€” Tools for validating references.

DESCRIPTION

SYNOPSIS

EXPORTS

  • ref_ok($thing)
  • ref_ok($thing, $type)
  • ref_ok($thing, $type, $name)
  • ref_is($ref1, $ref2, $name)
  • ref_is_not($ref1, $ref2, $name)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Blank, and we move on ๐ŸŒˆ)


๐Ÿ’€ Test2::Tools::Refcount, "Test2::Tools::Refcount" โ€” assert reference counts on objects

SYNOPSIS

DESCRIPTION

FUNCTIONS

is_refcount

is_oneref

refcount

EXAMPLE

BUGS

Temporaries created on the stack

ACKNOWLEDGEMENTS

AUTHOR


๐Ÿ‘‘ Test2::Tools::Spec โ€” RSPEC implementation on top of Test2::Workflow

DESCRIPTION

SYNOPSIS

EXPORTS

  • NAME
  • PARAMS
  • flat => $bool
  • async => $bool
  • iso => $bool
  • todo => $reason
  • skip => $reason
  • CODEREF

ESSENTIALS

  • tests NAME => sub { ... }
  • tests NAME => \%params
  • sub { ... }
  • tests($NAME, \%PARAMS, \&CODE)
  • it NAME => sub { ... }
  • it NAME => \%params
  • sub { ... }
  • it($NAME, \%PARAMS, \&CODE)
  • case NAME => sub { ... }
  • case NAME => \%params
  • sub { ... }
  • case($NAME, \%PARAMS, \&CODE)
  • before_each NAME => sub { ... }
  • before_each NAME => \%params
  • sub { ... }
  • before_each($NAME, \%PARAMS, \&CODE)
  • before_case NAME => sub { ... }
  • before_case NAME => \%params
  • sub { ... }
  • before_case($NAME, \%PARAMS, \&CODE)
  • before_all NAME => sub { ... }
  • before_all NAME => \%params
  • sub { ... }
  • before_all($NAME, \%PARAMS, \&CODE)
  • around_each NAME => sub { ... }
  • around_each NAME => \%params
  • sub { ... }
  • around_each($NAME, \%PARAMS, \&CODE)
  • around_case NAME => sub { ... }
  • around_case NAME => \%params
  • sub { ... }
  • around_case($NAME, \%PARAMS, \&CODE)
  • around_all NAME => sub { ... }
  • around_all NAME => \%params
  • sub { ... }
  • around_all($NAME, \%PARAMS, \&CODE)
  • after_each NAME => sub { ... }
  • after_each NAME => \%params
  • sub { ... }
  • after_each($NAME, \%PARAMS, \&CODE)
  • after_case NAME => sub { ... }
  • after_case NAME => \%params
  • sub { ... }
  • after_case($NAME, \%PARAMS, \&CODE)
  • after_all NAME => sub { ... }
  • after_all NAME => \%params
  • sub { ... }
  • after_all($NAME, \%PARAMS, \&CODE)

SHORTCUTS

  • mini NAME => sub { ... }
  • iso NAME => sub { ... }
  • miso NAME => sub { ... }
  • async NAME => sub { ... }
  • masync NAME => sub { ... }

CUSTOM ATTRIBUTE DEFAULTS

EXECUTION ORDER

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Empty in the source, so empty here ๐ŸŽ€)


๐Ÿงš Test2::Tools::Subtest โ€” Tools for writing subtests

DESCRIPTION

SYNOPSIS

BUFFERED

STREAMED

IMPORTANT NOTE

EXPORTS

  • subtest_streamed $name => $sub
  • subtest_streamed($name, $sub, @args)
  • subtest_streamed $name => \%params, $sub
  • subtest_streamed($name, \%params, $sub, @args)
  • subtest_buffered $name => $sub
  • subtest_buffered($name, $sub, @args)
  • subtest_buffered $name => \%params, $sub
  • subtest_buffered($name, \%params, $sub, @args)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Nothing spelled out here ๐Ÿ’–)


๐ŸŒธ Test2::Tools::Target โ€” Alias the testing target package.

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Blank, bestie โœจ)


๐Ÿ’… Test2::Tools::Tester โ€” Tools to help you test other testing tools.

DESCRIPTION

SYNOPSIS

EXPORTS

  • $array_ref = filter $events => $PACKAGE
  • $array_ref = filter $events => $PACKAGE1, $PACKAGE2
  • $array_ref = filter $events => qr/match/
  • $array_ref = filter $events => qr/match/, $PACKAGE
  • $grouped = group_events($events)
  • $arrayref = facets TYPE => $events

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(No copyright text right here ๐ŸŒˆ)


๐Ÿ’œ Test2::Tools::Tiny โ€” Tiny set of tools for unfortunate souls who cannot use Test2::Suite.

DESCRIPTION

USE Test2::Suite INSTEAD

EXPORTS

  • ok($bool, $name)
  • ok($bool, $name, @diag)
  • is($got, $want, $name)
  • is($got, $want, $name, @diag)
  • isnt($got, $do_not_want, $name)
  • isnt($got, $do_not_want, $name, @diag)
  • like($got, $regex, $name)
  • like($got, $regex, $name, @diag)
  • unlike($got, $regex, $name)
  • unlike($got, $regex, $name, @diag)
  • is_deeply($got, $want, $name)
  • is_deeply($got, $want, $name, @diag)
  • diag($msg)
  • note($msg)
  • skip_all($reason)
  • todo $reason => sub { ... }
  • plan($count)
  • done_testing()
  • $warnings = warnings { ... }
  • $exception = exception { ... }
  • tests $name => sub { ... }
  • $output = capture { ... }

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Empty, moving on ๐Ÿซถ)


๐Ÿ”ฅ Test2::Tools::Warnings โ€” Tools to verify warnings.

DESCRIPTION

SYNOPSIS

EXPORTS

  • $count = warns { ... }
  • $warning = warning { ... }
  • $warnings_ref = warnings { ... }
  • $bool = no_warnings { ... }

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

(Nothing written out right here โญ)


๐Ÿฆ‹ Test2::Transition โ€” Transition notes when upgrading to Test2

DESCRIPTION

THINGS THAT BREAK

  • Test::Builder1.5/2 conditionals
  • Replacing the Test::Builder singleton
  • Directly Accessing Hash Elements
  • Subtest indentation

DISTRIBUTIONS THAT BREAK OR NEED TO BE UPGRADED

WORKS BUT TESTS WILL FAIL

  • Test::DBIx::Class::Schema
  • Device::Chip

UPGRADE SUGGESTED

  • Test::Exception
  • Data::Peek
  • circular::require
  • Test::Module::Used
  • Test::Moose::More
  • Test::FITesque
  • Test::Kit
  • autouse

NEED TO UPGRADE

  • Test::SharedFork
  • Test::Builder::Clutch
  • Test::Dist::VersionSync
  • Test::Modern
  • Test::UseAllModules
  • Test::More::Prefix

STILL BROKEN

  • Test::Aggregate
  • Test::Wrapper
  • Test::ParallelSubtest
  • Test::Pretty
  • Net::BitTorrent
  • Test::Group
  • Test::Flatten
  • Log::Dispatch::Config::TestLog
  • Test::Able

MAKE ASSERTIONS -> SEND EVENTS

LEGACY

TEST2

  • ok($bool, $name)
  • diag(@messages)
  • note(@messages)
  • subtest($name, $code)

WRAP EXISTING TOOLS

LEGACY

TEST2

USING UTF8

LEGACY

TEST2

AUTHORS, CONTRIBUTORS AND REVIEWERS

  • Chad Granum (EXODIST) <exodist@cpan.org>

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINER ๐Ÿ‘‘

Chad Granum <exodist@cpan.org> โ€” bestie holds the whole thing down, no cap ๐Ÿ’…


๐Ÿงฐ Test2::Util โ€” Tools used by Test2 and friends. ๐Ÿงฐ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐ŸŽ EXPORTS ๐ŸŽ

  • ($success, $error) = try { ... } โ€” wraps the code block, catches what it throws ๐Ÿซถ
  • protect { ... } โ€” shields your block, fr fr
  • CAN_FORK
  • CAN_REALLY_FORK
  • CAN_THREAD
  • USE_THREADS
  • get_tid
  • my $file = pkg_to_file($package) โ€” package name in, file path out โœจ
  • $string = ipc_separator()
  • $string = gen_uid() โ€” unique id generator, iconic
  • ($ok, $err) = do_rename($old_name, $new_name)
  • ($ok, $err) = do_unlink($filename)

๐Ÿซฃ NOTES && CAVEATS ๐Ÿซฃ

  • Devel::Cover โ€” yeah this one's a whole vibe, pay attention

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>, Kent Fredric <kentnl@cpan.org> โ€” duo, slay ๐Ÿ’–


๐Ÿช„ Test2::Util::ExternalMeta โ€” Allow third party tools to safely attach meta-data to your instances. ๐Ÿช„

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โœจ SYNOPSIS โœจ

๐Ÿ—„๏ธ WHERE IS THE DATA STORED? ๐Ÿ—„๏ธ

๐ŸŽ EXPORTS ๐ŸŽ

  • $val = $obj->meta($key)
  • $val = $obj->meta($key, $default)
  • $val = $obj->get_meta($key)
  • $val = $obj->delete_meta($key)
  • $obj->set_meta($key, $val)

๐Ÿšง META-KEY RESTRICTIONS ๐Ÿšง

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿ”„ Test2::Util::Facets2Legacy โ€” Convert facet data to the legacy event API. ๐Ÿ”„

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โœจ SYNOPSIS โœจ

๐Ÿงš AS METHODS ๐Ÿงš

๐Ÿงš AS FUNCTIONS ๐Ÿงš

๐ŸŒ€ NOTE ON CYCLES ๐ŸŒ€

๐ŸŽ EXPORTS ๐ŸŽ

  • $bool = $e->causes_fail(), $bool = causes_fail($f)
  • $bool = $e->diagnostics(), $bool = diagnostics($f)
  • $bool = $e->global(), $bool = global($f)
  • $bool = $e->increments_count(), $bool = increments_count($f)
  • $bool = $e->no_display(), $bool = no_display($f)
  • ($max, $directive, $reason) = $e->sets_plan(), ($max, $directive, $reason) = sets_plan($f)
  • $id = $e->subtest_id(), $id = subtest_id($f)
  • $string = $e->summary(), $string = summary($f)
  • $undef_or_int = $e->terminate(), $undef_or_int = terminate($f)
  • $uuid = $e->uuid(), $uuid = uuid($f)

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿซณ Test2::Util::Grabber โ€” Object used to temporarily intercept all events. ๐Ÿซณ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โœจ SYNOPSIS โœจ

๐ŸŽ EXPORTS ๐ŸŽ

  • $grab = grab() โ€” snatch those events bestie ๐Ÿซด

๐Ÿ› ๏ธ METHODS ๐Ÿ› ๏ธ

  • $grab = $class->new()
  • $ar = $grab->flush()
  • $ar = $grab->events()
  • $ar = $grab->finish()
  • $hub = $grab->hub()

๐Ÿ ENDING BEHAVIOR ๐Ÿ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿ›ก๏ธ Test2::Util::Guard โ€” Inline copy of Scope::Guard ๐Ÿ›ก๏ธ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

โœ๏ธ ORIGINAL AUTHOR โœ๏ธ

chocolateboy <chocolate@cpan.org> โ€” the blueprint, the blueprint ๐Ÿ’œ

๐Ÿ”ง INLINE AND MODIFICATION AUTHOR ๐Ÿ”ง

Chad Granum <exodist@cpan.org>


๐Ÿ—๏ธ Test2::Util::HashBase โ€” Build hash based classes. ๐Ÿ—๏ธ

โœจ SYNOPSIS โœจ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ“ฆ THIS IS A BUNDLED COPY OF HASHBASE ๐Ÿ“ฆ

๐Ÿ› ๏ธ METHODS ๐Ÿ› ๏ธ

๐ŸŽ PROVIDED BY HASH BASE ๐ŸŽ

  • $it = $class->new(%PAIRS)
  • $it = $class->new(\%PAIRS)
  • $it = $class->new(\@ORDERED_VALUES)

๐Ÿช HOOKS ๐Ÿช

  • $self->init()

๐Ÿ”‘ ACCESSORS ๐Ÿ”‘

๐Ÿ“ READ/WRITE ๐Ÿ“

  • foo()
  • set_foo()
  • FOO()

๐Ÿ‘€ READ ONLY ๐Ÿ‘€

  • set_foo()

โš ๏ธ DEPRECATED SETTER โš ๏ธ

  • set_foo() โ€” yeah it's deprecated bestie, don't @ me ๐Ÿ’€

๐Ÿšซ NO SETTER ๐Ÿšซ

๐Ÿ™ˆ NO READER ๐Ÿ™ˆ

๐ŸงŠ CONSTANT ONLY ๐ŸงŠ

๐Ÿงฌ SUBCLASSING ๐Ÿงฌ

๐Ÿ“‹ GETTING A LIST OF ATTRIBUTES FOR A CLASS ๐Ÿ“‹

  • @list = Test2::Util::HashBase::attr_list($class)
  • @list = $class->Test2::Util::HashBase::attr_list()

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿ“ฅ Test2::Util::Importer โ€” Inline copy of Importer. ๐Ÿ“ฅ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿ” Test2::Util::Ref โ€” Tools for inspecting or manipulating references. ๐Ÿ”

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐ŸŽ EXPORTS ๐ŸŽ

  • $type = rtype($ref) โ€” what kind of ref is this, bestie? ๐Ÿ‘€
  • $addr_str = render_ref($ref) โ€” pretty it up โœจ

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>, Kent Fredric <kentnl@cpan.org>


๐Ÿ“ก Test2::Util::Sig โ€” Signal tools used by Test2 and friends. ๐Ÿ“ก

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐ŸŽ EXPORTS ๐ŸŽ

  • ($ok, $err) = try_sig_mask { ... }
  • SIGINT
  • SIGALRM
  • SIGHUP
  • SIGTERM
  • SIGUSR1
  • SIGUSR2

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>, Kent Fredric <kentnl@cpan.org>


๐Ÿ—ƒ๏ธ Test2::Util::Stash โ€” Utilities for manipulating stashes and globs. ๐Ÿ—ƒ๏ธ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐ŸŽ EXPORTS ๐ŸŽ

  • $stash = get_stash($package)
  • $sym_spec = parse_symbol($symbol)
  • $sym_spec = parse_symbol($symbol, $package)
  • $glob_ref = get_glob($symbol)
  • $glob_ref = get_glob($symbol, $package)
  • $ref = get_symbol($symbol)
  • $ref = get_symbol($symbol, $package)
  • $ref = purge_symbol($symbol)
  • $ref = purge_symbol($symbol, $package)
  • $sig = slot_to_sig($slot)
  • $slot = sig_to_slot($sig)

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿ”ฌ Test2::Util::Sub โ€” Tools for inspecting and manipulating subs. ๐Ÿ”ฌ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐ŸŽ EXPORTS ๐ŸŽ

  • $name = sub_name(\&sub)
  • my $hr = sub_info(\&code)
  • $info->{ref} => \&code
  • $info->{cobj} => $cobj
  • $info->{name} => "Some::Mod::code"
  • $info->{file} => "Some/Mod.pm"
  • $info->{package} => "Some::Mod"
  • $info->{start_line} => 22
  • $info->{end_line} => 42
  • $info->{lines} => [22, 42]
  • $info->{all_lines} => [23, 25, ..., 39, 41]

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>, Kent Fredric <kentnl@cpan.org>


๐Ÿ“Š Test2::Util::Table โ€” Format a header and rows into a table ๐Ÿ“Š

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โœจ SYNOPSIS โœจ

๐ŸŽ EXPORTS ๐ŸŽ

  • @rows = table(...) โ€” the main character of this module, honestly ๐Ÿ‘‘
    • header => [ ... ]
    • rows => [ [...], [...], ... ]
    • collapse => $bool
    • max_width => $num
    • sanitize => $bool
    • mark_tail => $bool
  • my $cols = term_size() โ€” how wide is your terminal, bestie ๐Ÿ“

๐ŸŒ NOTE ON UNICODE/WIDE CHARACTERS ๐ŸŒ

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


โœ‚๏ธ Test2::Util::Table::LineBreak โ€” Break up lines for use in tables. โœ‚๏ธ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

โœจ SYNOPSIS โœจ

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


โฑ๏ธ Test2::Util::Times โ€” Format timing/benchmark information. โฑ๏ธ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐ŸŽ EXPORTS ๐ŸŽ

  • $str = render_bench($start, $end, $user, $system, $cuser, $csystem)
  • $str = render_bench($start, time(), times())

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿงต Test2::Util::Trace โ€” Legacy wrapper for Test2::EventFacet::Trace. ๐Ÿงต

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿท๏ธ NAMING, USING, DEPENDING ๐Ÿท๏ธ

โœจ SYNOPSIS โœจ

๐Ÿซฏ RESOLVING CONFLICTS WITH MOOSE ๐Ÿซฏ

๐ŸŽ€ TAGS ๐ŸŽ€

  • :DEFAULT

โœ๏ธ RENAMING ON IMPORT โœ๏ธ

  • '!ok', ok => {-as => 'my_ok'}

๐Ÿ”ฎ PRAGMAS ๐Ÿ”ฎ

๐Ÿ“ STRICT ๐Ÿ“

โš ๏ธ WARNINGS โš ๏ธ

๐ŸŒ UTF8 ๐ŸŒ

๐Ÿ”Œ PLUGINS ๐Ÿ”Œ

๐ŸŽฒ SRAND ๐ŸŽฒ

๐ŸŒ UTF8 ๐ŸŒ

๐Ÿšช EXIT SUMMARY ๐Ÿšช

๐ŸŒฑ ENVIRONMENT VARIABLES ๐ŸŒฑ

๐Ÿงฉ API FUNCTIONS ๐Ÿงฉ

  • $ctx = context()
  • $events = intercept { ... }

๐Ÿงฐ TOOLS ๐Ÿงฐ

๐ŸŽฏ TARGET ๐ŸŽฏ

  • $CLASS
  • $class = CLASS()

โณ DEFER โณ

  • def $func => @args;
  • do_def()

๐Ÿงฑ BASIC ๐Ÿงฑ

  • ok($bool, $name)
  • ok($bool, $name, @diag)
  • pass($name)
  • pass($name, @diag)
  • fail($name)
  • fail($name, @diag)
  • diag($message)
  • note($message)
  • $todo = todo($reason)
  • todo $reason => sub { ... }
  • skip($reason, $count)
  • plan($count)
  • skip_all($reason)
  • done_testing()
  • bail_out($reason)

โš–๏ธ COMPARE โš–๏ธ

  • is($got, $want, $name)
  • isnt($got, $do_not_want, $name)
  • like($got, qr/match/, $name)
  • unlike($got, qr/mismatch/, $name)
  • $check = match(qr/pattern/)
  • $check = mismatch(qr/pattern/)
  • $check = validator(sub { return $bool })
  • $check = hash { ... }
  • $check = array { ... }
  • $check = bag { ... }
  • $check = object { ... }
  • $check = meta { ... }
  • $check = number($num)
  • $check = string($str)
  • $check = bool($bool)
  • $check = check_isa($class_name)
  • $check = in_set(@things)
  • $check = not_in_set(@things)
  • $check = check_set(@things)
  • $check = item($thing)
  • $check = item($idx => $thing)
  • $check = field($name => $val)
  • $check = call($method => $expect)
  • $check = call_list($method => $expect)
  • $check = call_hash($method => $expect)
  • $check = prop($name => $expect)
  • $check = check($thing)
  • $check = T()
  • $check = F()
  • $check = D()
  • $check = DF()
  • $check = E()
  • $check = DNE()
  • $check = FDNE()
  • $check = U()
  • $check = L()
  • $check = exact_ref($ref)
  • end()
  • etc()
  • filter_items { grep { ... } @_ }
  • $check = event $type => ..
  • @checks = fail_events $type => ..

๐Ÿ›๏ธ CLASSIC COMPARE ๐Ÿ›๏ธ

  • cmp_ok($got, $op, $want, $name)

๐Ÿช† SUBTEST ๐Ÿช†

  • subtest $name => sub { ... };

๐ŸŽ“ CLASS ๐ŸŽ“

  • can_ok($thing, @methods)
  • isa_ok($thing, @classes)
  • DOES_ok($thing, @roles)

๐Ÿ”ค ENCODING ๐Ÿ”ค

  • set_encoding($encoding)

๐Ÿ“ค EXPORTS ๐Ÿ“ค

  • imported_ok('function', '$scalar', ...)
  • not_imported_ok('function', '$scalar', ...)

๐Ÿ”— REF ๐Ÿ”—

  • ref_ok($ref, $type)
  • ref_is($got, $want)
  • ref_is_not($got, $do_not_want)
  • is_refcount($ref, $count, $description)
  • is_oneref($ref, $description)
  • $count = refcount($ref)

๐ŸŽญ MOCK ๐ŸŽญ

  • $control = mock ..
  • $bool = mocked($thing)

๐Ÿ’ฅ EXCEPTION ๐Ÿ’ฅ

  • $exception = dies { ... }
  • $bool = lives { ... }
  • $bool = try_ok { ... }

๐Ÿ”” WARNINGS ๐Ÿ””

  • $count = warns { ... }
  • $warning = warning { ... }
  • $warnings_ref = warnings { ... }
  • $bool = no_warnings { ... }

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>


๐Ÿงญ Test2::Workflow โ€” A test workflow is a way of structuring tests using composable units. ๐Ÿงญ

๐Ÿ“– DESCRIPTION ๐Ÿ“–

๐Ÿง  IMPORTANT CONCEPTS ๐Ÿง 

๐Ÿ—๏ธ BUILD ๐Ÿ—๏ธ

๐Ÿƒ RUNNER ๐Ÿƒ

๐Ÿ“‹ TASK ๐Ÿ“‹

๐ŸŽ EXPORTS ๐ŸŽ

  • $parsed = parse_args(args => \@args)
  • $parsed = parse_args(args => \@args, level => $L)
  • $parsed = parse_args(args => \@args, caller => [caller($L)])
  • $build = init_root($pkg, %args)
  • $build = root_build($pkg)
  • $build = current_build()
  • $build = build($name, \%params, sub { ... })

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

  • Test2::Tools::Spec

๐Ÿ’พ SOURCE ๐Ÿ’พ

๐Ÿ‘‘ MAINTAINERS ๐Ÿ‘‘

Chad Granum <exodist@cpan.org>

๐ŸŒŸ AUTHORS ๐ŸŒŸ

Chad Granum <exodist@cpan.org>

Test2::Workflow::BlockBase โ€” base class for all workflow blocks, no cap ๐Ÿงš

โœจ SOURCE โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ AUTHORS โœจ

  • Chad Granum <exodist@cpan.org>

Test2::Workflow::Build โ€” represents a build in progress, slay ๐Ÿ—๏ธ

โœจ SOURCE โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ AUTHORS โœจ

  • Chad Granum <exodist@cpan.org>

Test2::Workflow::Runner โ€” runs the workflows, periodt ๐Ÿƒโ€โ™€๏ธ

โœจ SOURCE โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ AUTHORS โœจ

  • Chad Granum <exodist@cpan.org>

Test2::Workflow::Task โ€” encapsulation of a Task, iykyk ๐Ÿ“ฆ

โœจ SOURCE โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ AUTHORS โœจ

  • Chad Granum <exodist@cpan.org>

Test2::Workflow::Task::Action โ€” encapsulation of an action, bestie ๐Ÿ’…

โœจ SOURCE โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ AUTHORS โœจ

  • Chad Granum <exodist@cpan.org>

Test2::Workflow::Task::Group โ€” encapsulation of a group (describe), fr fr ๐Ÿ‘‘

โœจ SOURCE โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ AUTHORS โœจ

  • Chad Granum <exodist@cpan.org>

Test::Builder โ€” backend for building test libraries, the moment ๐ŸŽ€

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

  • Construction
    • new, create, subtest, name, reset
  • Setting up tests
    • plan, expected_tests, no_plan, done_testing, has_plan, skip_all, exported_to
  • Running tests
    • ok, is_eq, is_num, isnt_eq, isnt_num, like, unlike, cmp_ok
  • Other Testing Methods
    • BAIL_OUT, skip, todo_skip, skip_rest
  • Test building utility methods
    • maybe_regex, is_fh

โœจ Test style โœจ

  • level, use_numbers, no_diag, no_ending, no_header

โœจ Output โœจ

  • diag, note, explain, output, failure_output, todo_output, reset_outputs, carp, croak

โœจ Test Status and Info โœจ

  • no_log_results, current_test, is_passing, summary, details, todo, find_TODO, in_todo, todo_start, "todo_end", caller

โœจ EXIT CODES โœจ

โœจ THREADS โœจ

โœจ MEMORY โœจ

โœจ EXAMPLES โœจ

โœจ SEE ALSO โœจ

  • INTERNALS
  • LEGACY
  • EXTERNAL

โœจ AUTHORS โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

Test::Builder::Formatter โ€” Test::Builder subclass of Test2::Formatter::TAP, iconic ๐ŸŽจ

โœจ DESCRIPTION โœจ

โœจ SYNOPSIS โœจ

โœจ SOURCE โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ AUTHORS โœจ

  • Chad Granum <exodist@cpan.org>

Test::Builder::Module โ€” base class for test modules, the blueprint ๐Ÿงฑ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

  • Importing

โœจ Builder โœจ

โœจ SEE ALSO โœจ


Test::Builder::Tester โ€” test testsuites that have been built with Test::Builder, periodt ๐Ÿงช

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ Functions โœจ

  • test_out, test_err

โœจ test_fail โœจ

โœจ test_diag โœจ

โœจ test_test, title (synonym 'name', 'label'), skip_out, skip_err โœจ

โœจ line_num โœจ

โœจ color โœจ

โœจ BUGS โœจ

โœจ AUTHOR โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ NOTES โœจ

โœจ SEE ALSO โœจ


Test::Builder::Tester::Color โ€” turn on colour in Test::Builder::Tester, slay ๐ŸŒˆ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ AUTHOR โœจ

โœจ BUGS โœจ

โœจ SEE ALSO โœจ


Test::Builder::TodoDiag โ€” Test::Builder subclass of Test2::Event::Diag, no cap ๐Ÿ“

โœจ DESCRIPTION โœจ

โœจ SYNOPSIS โœจ

โœจ SOURCE โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ AUTHORS โœจ

  • Chad Granum <exodist@cpan.org>

Test::Harness โ€” run Perl standard test scripts with statistics, the whole vibe ๐Ÿ“Š

โœจ VERSION โœจ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ FUNCTIONS โœจ

  • runtests( @test_files )
  • execute_tests( tests => \@test_files, out => \*FH )

โœจ EXPORT โœจ

โœจ ENVIRONMENT VARIABLES THAT TAP::HARNESS::COMPATIBLE SETS โœจ

  • "HARNESS_ACTIVE", "HARNESS_VERSION"

โœจ ENVIRONMENT VARIABLES THAT AFFECT TEST::HARNESS โœจ

  • "HARNESS_PERL_SWITCHES", "HARNESS_TIMER", "HARNESS_VERBOSE", "HARNESS_OPTIONS", "j<n>", "c", "a<file.tgz>", "fPackage-With-Dashes", "HARNESS_SUBCLASS", "HARNESS_SUMMARY_COLOR_SUCCESS", "HARNESS_SUMMARY_COLOR_FAIL"

โœจ Taint Mode โœจ

โœจ SEE ALSO โœจ

โœจ BUGS โœจ

โœจ AUTHORS โœจ


Test::More โ€” yet another framework for writing test scripts, bestie ๐Ÿ’–

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

  • I love it when a plan comes together

โœจ done_testing โœจ

โœจ Test names โœจ

โœจ I'm ok, you're not ok. โœจ

  • ok

โœจ is, isnt โœจ

โœจ like โœจ

โœจ unlike โœจ

โœจ cmp_ok โœจ

โœจ can_ok โœจ

โœจ isa_ok โœจ

โœจ new_ok โœจ

โœจ subtest โœจ

โœจ pass, fail โœจ

โœจ Module tests โœจ

  • require_ok

โœจ use_ok โœจ

โœจ Complex data structures โœจ

  • is_deeply

โœจ Diagnostics โœจ

  • diag, note

โœจ explain โœจ

โœจ Conditional tests โœจ

  • SKIP: BLOCK

โœจ TODO: BLOCK, todo_skip โœจ

โœจ When do I use SKIP vs. TODO? โœจ

โœจ Test control โœจ

  • BAIL_OUT

โœจ Discouraged comparison functions โœจ

  • eq_array

โœจ eq_hash โœจ

โœจ eq_set โœจ

โœจ Extending and Embedding Test::More โœจ

  • builder

โœจ EXIT CODES โœจ

โœจ COMPATIBILITY โœจ

  • subtests, done_testing(), cmp_ok(), new_ok() note() and explain()

โœจ CAVEATS and NOTES โœจ

  • UTF-8 / "Wide character in print", Overloaded objects, Threads

โœจ HISTORY โœจ

โœจ SEE ALSO โœจ

  • ALTERNATIVES
  • ADDITIONAL LIBRARIES
  • OTHER COMPONENTS
  • BUNDLES

โœจ ENVIRONMENT VARIABLES โœจ

โœจ AUTHORS โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

โœจ BUGS โœจ

โœจ SOURCE โœจ


Test::Simple โ€” basic utilities for writing tests, the starter pack ๐Ÿงธ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

  • ok

โœจ EXAMPLE โœจ

โœจ CAVEATS โœจ

โœจ NOTES โœจ

โœจ HISTORY โœจ

โœจ SEE ALSO โœจ

  • Test::More

โœจ AUTHORS โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

Test::Tester โ€” ease testing test modules built with Test::Builder, the meta vibe ๐Ÿงช

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ HOW TO USE (THE EASY WAY) โœจ

โœจ HOW TO USE (THE HARD WAY) โœจ

โœจ TEST RESULTS โœจ

  • ok, actual_ok, name, type, reason, diag, depth

โœจ SPACES AND TABS โœจ

โœจ COLOUR โœจ

โœจ EXPORTED FUNCTIONS โœจ

โœจ HOW IT WORKS โœจ

โœจ CAVEATS โœจ

โœจ SEE ALSO โœจ

โœจ AUTHOR โœจ

โœจ LICENSE โœจ


Test::Tester::Capture โ€” help testing test modules built with Test::Builder, periodt ๐ŸŽฅ

โœจ DESCRIPTION โœจ

โœจ AUTHOR โœจ

โœจ LICENSE โœจ


Test::Tester::CaptureRunner โ€” help testing test modules built with Test::Builder, fr fr ๐Ÿƒ

โœจ DESCRIPTION โœจ

โœจ AUTHOR โœจ

โœจ LICENSE โœจ


Test::Tutorial โ€” a tutorial about writing really basic tests, the whole class ๐Ÿ“š

โœจ DESCRIPTION โœจ

  • Nuts and bolts of testing.
  • Where to start?
  • Names
  • Test the manual
  • Sometimes the tests are wrong
  • Testing lots of values
  • Informative names
  • Skipping tests
  • Todo tests
  • Testing with taint mode.

โœจ FOOTNOTES โœจ

โœจ AUTHORS โœจ

โœจ MAINTAINERS โœจ

  • Chad Granum <exodist@cpan.org>

Test::use::ok โ€” alternative to Test::More::use_ok, the remix โœ…

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ SEE ALSO โœจ

โœจ MAINTAINER โœจ

  • Chad Granum <exodist@cpan.org>

โœจ CC0 1.0 Universal โœจ


Text::Abbrev โ€” abbrev - create an abbreviation table from a list, iykyk ๐Ÿ“

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ EXAMPLE โœจ


Text::Balanced โ€” extract delimited text sequences from strings, the balance act โš–๏ธ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

  • General Behaviour in List Contexts
    • [0], [1], [2]
  • General Behaviour in Scalar and Void Contexts
  • A Note About Prefixes
  • Functions
    • "extract_delimited", "extract_bracketed", "extract_variable", [0], [1], [2], "extract_tagged", "reject => $listref", ignore => $listref, "fail => $str", [0], [1], [2], [3], [4], [5], "gen_extract_tagged", "extract_quotelike", [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], "extract_quotelike", [0], [1], [2], [3], [4], [5], [6], [7..10], "extract_codeblock", "extract_multiple", "gen_delimited_pat", "delimited_pat"

โœจ DIAGNOSTICS โœจ

  • C<Did not find a suitable bracket: "%s">, C<Did not find prefix: /%s/>, C<Did not find opening bracket after prefix: "%s">, C<No quotelike operator found after prefix: "%s">, C<Unmatched closing bracket: "%c">, C<Unmatched opening bracket(s): "%s">, C<Unmatched embedded quote (%s)>, C<Did not find closing delimiter to match '%s'>, C<Mismatched closing bracket: expected "%c" but found "%s">, C<No block delimiter found after quotelike "%s">, C<Did not find leading dereferencer>, C<Bad identifier after dereferencer>, C<Did not find expected opening bracket at %s>, C<Improperly nested codeblock at %s>, C<Missing second block for quotelike "%s">, C<No match found for opening bracket>, C<Did not find opening tag: /%s/>, C<Unable to construct closing tag to match: /%s/>, C<Found invalid nested tag: %s>, C<Found unbalanced nested tag: %s>, C<Did not find closing tag>

โœจ EXPORTS โœจ

  • Default Exports, Optional Exports, Export Tags, ":ALL"

โœจ KNOWN BUGS โœจ

โœจ FEEDBACK โœจ

โœจ AVAILABILITY โœจ

โœจ INSTALLATION โœจ

โœจ AUTHOR โœจ

โœจ LICENCE โœจ

โœจ VERSION โœจ

โœจ DATE โœจ

โœจ HISTORY โœจ


Text::ParseWords โ€” parse text into an array of tokens or array of arrays, the parse party ๐Ÿงฉ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

  • true, false, "delimiters"

โœจ EXAMPLES โœจ

  • 0, 1, 2, 3, 4, 5

โœจ SEE ALSO โœจ

โœจ AUTHORS โœจ


Text::Tabs โ€” expand and unexpand tabs like unix expand(1) and unexpand(1), the tab slay ๐Ÿ“

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ EXPORTS โœจ

  • expand, unexpand, $tabstop

โœจ EXAMPLE โœจ

โœจ BUGS โœจ

โœจ LICENSE โœจ


Text::Wrap โ€” line wrapping to form simple paragraphs, the wrap star ๐Ÿ“œ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ OVERRIDES โœจ

โœจ EXAMPLES โœจ

โœจ SEE ALSO โœจ

โœจ AUTHOR โœจ

โœจ LICENSE โœจ


Thread โ€” manipulate threads in Perl (for old code only), the throwback ๐Ÿงต

โœจ DEPRECATED โœจ

โœจ HISTORY โœจ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ FUNCTIONS โœจ

  • $thread = Thread->new(\&start_sub), $thread = Thread->new(\&start_sub, LIST), lock VARIABLE, async BLOCK;, Thread->self, Thread->list, cond_wait VARIABLE, cond_signal VARIABLE, cond_broadcast VARIABLE, yield

โœจ METHODS โœจ

  • join, detach, equal, tid, done

โœจ DEFUNCT โœจ

  • lock(\&sub), eval, flags

โœจ SEE ALSO โœจ


Thread::Queue โ€” thread-safe queues, the queue crew ๐Ÿšถโ€โ™€๏ธ๐Ÿšถโ€โ™‚๏ธ

โœจ VERSION โœจ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

  • Ordinary scalars, Array refs, Hash refs, Scalar refs, Objects based on the above

โœจ QUEUE CREATION โœจ

  • ->new(), ->new(LIST)

โœจ BASIC METHODS โœจ

  • ->enqueue(LIST), ->dequeue(), ->dequeue(COUNT), ->dequeue_nb(), ->dequeue_nb(COUNT), ->dequeue_timed(TIMEOUT), ->dequeue_timed(TIMEOUT, COUNT), ->pending(), ->limit, ->end()

โœจ ADVANCED METHODS โœจ

  • ->peek(), ->peek(INDEX), ->insert(INDEX, LIST), ->extract(), ->extract(INDEX), ->extract(INDEX, COUNT)

โœจ NOTES โœจ

โœจ LIMITATIONS โœจ

โœจ SEE ALSO โœจ

โœจ MAINTAINER โœจ

โœจ LICENSE โœจ


Thread::Semaphore โ€” thread-safe semaphores, the traffic control ๐Ÿšฆ

โœจ VERSION โœจ

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ METHODS โœจ

  • ->new(), ->new(NUMBER), ->down(), ->down(NUMBER), ->down_nb(), ->down_nb(NUMBER), ->down_force(), ->down_force(NUMBER), ->down_timed(TIMEOUT), ->down_timed(TIMEOUT, NUMBER), ->up(), ->up(NUMBER)

โœจ NOTES โœจ

โœจ SEE ALSO โœจ

โœจ MAINTAINER โœจ

โœจ LICENSE โœจ

๐Ÿฆ‹ Tie::Array โ€” base class for tied arrays

bestie, this one is the blueprint for making a regular array act tied, no cap ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
    • TIEARRAY classname, LIST, STORE this, index, value, FETCH this, index, FETCHSIZE this, STORESIZE this, count, EXTEND this, count, EXISTS this, key, DELETE this, key, CLEAR this, DESTROY this, PUSH this, LIST, POP this, SHIFT this, UNSHIFT this, LIST, SPLICE this, offset, length, LIST
  • CAVEATS
  • AUTHOR

๐ŸŒธ Tie::File โ€” Access the lines of a disk file via a Perl array

the way this lets you treat a file like an array?? iconic fr fr ๐Ÿ“โœจ

  • SYNOPSIS
  • DESCRIPTION
    • "unicode"
    • "recsep"
    • "autochomp"
    • "mode"
    • "memory"
    • "dw_size"
    • Option Format

๐Ÿซถ Public Methods

  • "flock"
  • "autochomp"
  • "defer", "flush", "discard", and "autodefer"
  • "offset"

๐Ÿ’– Tying to an already-opened filehandle

๐Ÿ’œ Deferred Writing

  • Autodeferring

๐ŸŒˆ CONCURRENT ACCESS TO FILES

โš ๏ธ CAVEATS

๐ŸŽ€ SUBCLASSING

๐Ÿ’€ WHAT ABOUT "DB_File"?

๐Ÿ‘‘ AUTHOR

๐Ÿ“œ LICENSE

๐Ÿ›ก๏ธ WARRANTY

๐Ÿ™ THANKS

๐Ÿ“ TODO


๐Ÿงš Tie::Handle โ€” base class definitions for tied handles

tied filehandles have entered the chat ๐ŸŽ€

  • SYNOPSIS
  • DESCRIPTION
    • TIEHANDLE classname, LIST, WRITE this, scalar, length, offset, PRINT this, LIST, PRINTF this, format, LIST, READ this, scalar, length, offset, READLINE this, GETC this, CLOSE this, OPEN this, filename, BINMODE this, EOF this, TELL this, SEEK this, offset, whence, DESTROY this
  • MORE INFORMATION
  • COMPATIBILITY

๐ŸŒŸ Tie::Hash, Tie::StdHash, Tie::ExtraHash โ€” base class definitions for tied hashes

three icons in one entry, we love a collab ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
    • TIEHASH classname, LIST, STORE this, key, value, FETCH this, key, FIRSTKEY this, NEXTKEY this, lastkey, EXISTS this, key, DELETE this, key, CLEAR this, SCALAR this

๐Ÿฆ‹ Inheriting from Tie::StdHash

๐ŸŒธ Inheriting from Tie::ExtraHash

โœจ "SCALAR", "UNTIE" and "DESTROY"

๐Ÿ’– MORE INFORMATION


๐ŸŽ€ Tie::Hash::NamedCapture โ€” Named regexp capture buffers

regex named captures but make it tie-able, periodt ๐Ÿซถ

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO

๐ŸŒˆ Tie::Memoize โ€” add data to hash when needed

lazy loading but for hashes, so main character behavior fr fr โœจ

  • SYNOPSIS
  • DESCRIPTION
  • Inheriting from Tie::Memoize
  • EXAMPLE
  • BUGS
  • AUTHOR

๐Ÿ’œ Tie::RefHash โ€” Use references as hash keys

refs as keys?? the glow up we didn't know we needed ๐Ÿ”ฅ

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • EXAMPLE
  • THREAD SUPPORT
  • STORABLE SUPPORT
  • SEE ALSO
  • SUPPORT
  • AUTHORS
  • CONTRIBUTORS
  • COPYRIGHT AND LICENCE

๐Ÿงš Tie::Scalar, Tie::StdScalar โ€” base class definitions for tied scalars

scalars can be tied too bestie, don't sleep on them ๐Ÿ’–

  • SYNOPSIS
  • DESCRIPTION
    • TIESCALAR classname, LIST, FETCH this, STORE this, value, DESTROY this
    • Tie::Scalar vs Tie::StdScalar
  • MORE INFORMATION

๐ŸŒธ Tie::StdHandle โ€” base class definitions for tied handles

the standard handle blueprint, no cap ๐ŸŽ€

  • SYNOPSIS
  • DESCRIPTION

โญ Tie::SubstrHash โ€” Fixed-table-size, fixed-key-length hashing

very specific, very niche, very iconic ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • CAVEATS

๐Ÿฆ‹ Time::HiRes โ€” High resolution alarm, sleep, gettimeofday, interval timers

high resolution time stuff, the way it goes sub-second on us ๐Ÿ˜ญโฑ๏ธ

  • SYNOPSIS
  • DESCRIPTION
    • gettimeofday (), usleep ( $useconds ), nanosleep ( $nanoseconds ), ualarm ( $useconds [, $interval_useconds ] ), tv_interval, time (), sleep ( $floating_seconds ), alarm ( $floating_seconds [, $interval_floating_seconds ] ), setitimer ( $which, $floating_seconds [, $interval_floating_seconds ] ), getitimer ( $which ), clock_gettime ( $which ), clock_getres ( $which ), clock_nanosleep ( $which, $nanoseconds, $flags = 0), clock(), stat, stat FH, stat EXPR, lstat, lstat FH, lstat EXPR, utime LIST
  • EXAMPLES
  • C API
  • DIAGNOSTICS
    • useconds or interval more than ...
    • negative time not invented yet
    • internal error: useconds < 0 (unsigned ... signed ...)
    • useconds or uinterval equal to or more than 1000000
    • unimplemented in this platform
  • CAVEATS
  • SEE ALSO
  • AUTHORS
  • COPYRIGHT AND LICENSE

๐ŸŒˆ Time::Local โ€” Efficiently compute time from local and GMT time

converting between local and GMT time like the queen you are ๐Ÿ‘‘๐Ÿ•

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • FUNCTIONS
    • timelocal_posix() and timegm_posix()
    • timelocal_modern() and timegm_modern()
    • timelocal() and timegm()
    • timelocal_nocheck() and timegm_nocheck()
    • Year Value Interpretation
    • Limits of time_t
    • Ambiguous Local Times (DST)
    • Non-Existent Local Times (DST)
    • Negative Epoch Values
  • IMPLEMENTATION
  • AUTHORS EMERITUS
  • BUGS
  • SOURCE
  • AUTHOR
  • CONTRIBUTORS
  • COPYRIGHT AND LICENSE

๐Ÿ’œ Time::Piece โ€” Object Oriented time objects

OO time objects, the way that slays honestly โœจ

  • SYNOPSIS
  • DESCRIPTION
  • USAGE
    • Local Locales
    • Date Calculations
    • Truncation
    • Date Comparisons
    • Date Parsing
    • YYYY-MM-DDThh:mm:ss
    • Week Number
    • Global Overriding
  • CAVEATS
    • Setting $ENV{TZ} in Threads on Win32
    • Use of epoch seconds
  • AUTHOR
  • COPYRIGHT AND LICENSE
  • SEE ALSO
  • BUGS

๐ŸŽ€ Time::Seconds โ€” a simple API to convert seconds to other date values

seconds-to-date-values converter, cute and simple ๐Ÿ“

  • SYNOPSIS
  • DESCRIPTION
  • METHODS
  • AUTHOR
  • COPYRIGHT AND LICENSE
  • Bugs

๐ŸŒธ Time::gmtime โ€” by-name interface to Perl's built-in gmtime() function

by-name access to gmtime(), so you don't gotta remember the index order ๐Ÿ™ˆ

  • SYNOPSIS
  • DESCRIPTION
  • NOTE
  • AUTHOR

๐ŸŒŸ Time::localtime โ€” by-name interface to Perl's built-in localtime() function

same vibe as gmtime but local, we love a matching set ๐Ÿ’–

  • SYNOPSIS
  • DESCRIPTION
  • NOTE
  • AUTHOR

๐Ÿฆ‹ Time::tm โ€” internal object used by Time::gmtime and Time::localtime

the internal object doing the behind-the-scenes work, main character energy fr fr ๐Ÿ‘‘

  • SYNOPSIS
  • DESCRIPTION
  • AUTHOR

๐ŸŒˆ UNIVERSAL โ€” base class for ALL classes (blessed references)

THE base class for every single class out there, absolutely iconic ๐Ÿ’…โœจ

  • SYNOPSIS
  • DESCRIPTION
    • "$obj->isa( TYPE )", "CLASS->isa( TYPE )", "eval { VAL->isa( TYPE ) }", "TYPE", $obj, "CLASS", "VAL", "$obj->DOES( ROLE )", "CLASS->DOES( ROLE )", "$obj->can( METHOD )", "CLASS->can( METHOD )", "eval { VAL->can( METHOD ) }", "VERSION ( [ REQUIRE ] )"
  • WARNINGS
  • EXPORTS

๐Ÿงš Unicode::Collate โ€” Unicode Collation Algorithm

the whole UCA situation, sorting and searching strings the Unicode way, no cap ๐Ÿ”ฅ

  • SYNOPSIS
  • DESCRIPTION
    • Constructor and Tailoring
      • UCA_Version, alternate, backwards, entry, hangul_terminator, highestFFFF, identical, ignoreChar, ignoreName, ignore_level2, katakana_before_hiragana, level, long_contraction, minimalFFFE, normalization, overrideCJK, overrideHangul, overrideOut, preprocess, rearrange, rewrite, suppress, table, undefChar, undefName, upper_before_lower, variable
    • Methods for Collation
      • "@sorted = $Collator->sort(@not_sorted)", "$result = $Collator->cmp($a, $b)", "$result = $Collator->eq($a, $b)", "$result = $Collator->ne($a, $b)", "$result = $Collator->lt($a, $b)", "$result = $Collator->le($a, $b)", "$result = $Collator->gt($a, $b)", "$result = $Collator->ge($a, $b)", "$sortKey = $Collator->getSortKey($string)", "$sortKeyForm = $Collator->viewSortKey($string)"
    • Methods for Searching
      • "$position = $Collator->index($string, $substring[, $position])", "($position, $length) = $Collator->index($string, $substring[, $position])", "$match_ref = $Collator->match($string, $substring)", "($match) = $Collator->match($string, $substring)", "@match = $Collator->gmatch($string, $substring)", "$count = $Collator->subst($string, $substring, $replacement)", "$count = $Collator->gsubst($string, $substring, $replacement)"
    • Other Methods
      • "%old_tailoring = $Collator->change(%new_tailoring)", "$modified_collator = $Collator->change(%new_tailoring)", "$version = $Collator->version()", UCA_Version(), Base_Unicode_Version()
  • EXPORT
  • INSTALL
  • CAVEATS
    • Normalization, Conformance Test
  • AUTHOR, COPYRIGHT AND LICENSE
  • SEE ALSO
    • Unicode Collation Algorithm - UTS #10, The Default Unicode Collation Element Table (DUCET), The conformance test for the UCA, Hangul Syllable Type, Unicode Normalization Forms - UAX #15, Unicode Locale Data Markup Language (LDML) - UTS #35

๐Ÿ’– Unicode::Collate::CJK::Big5 โ€” weighting CJK Unified Ideographs for Unicode::Collate

Big5 weighting support, holding it down for CJK ideographs ๐Ÿซถ

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
    • CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35, Unicode::Collate, Unicode::Collate::Locale

๐ŸŽ€ Unicode::Collate::CJK::GB2312 โ€” weighting CJK Unified Ideographs for Unicode::Collate

GB2312 weighting, doing its thing for the CJK squad โœจ

  • SYNOPSIS
  • DESCRIPTION
  • CAVEAT
  • SEE ALSO
    • CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35, Unicode::Collate, Unicode::Collate::Locale

๐ŸŒธ Unicode::Collate::CJK::JISX0208 โ€” weighting JIS KANJI for Unicode::Collate

JIS KANJI weighting, repping the Japanese side of things ๐Ÿ’œ

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
    • Unicode::Collate, Unicode::Collate::Locale

๐ŸŒŸ Unicode::Collate::CJK::Korean โ€” weighting CJK Unified Ideographs for Unicode::Collate

Korean weighting support, periodt ๐Ÿ‡ฐ๐Ÿ‡ทโœจ

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
    • CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35, Unicode::Collate, Unicode::Collate::Locale

๐Ÿฆ‹ Unicode::Collate::CJK::Pinyin โ€” weighting CJK Unified Ideographs for Unicode::Collate

Pinyin weighting, so the Chinese collation hits just right ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • CAVEAT
  • SEE ALSO
    • CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35, Unicode::Collate, Unicode::Collate::Locale

๐Ÿ“ Unicode::Collate::CJK::Stroke โ€” weighting CJK Unified Ideographs for Unicode::Collate

stroke-based weighting, very organized of it honestly ๐ŸŒˆ

  • SYNOPSIS
  • DESCRIPTION
  • CAVEAT
  • SEE ALSO
    • CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35, Unicode::Collate, Unicode::Collate::Locale

๐Ÿงš Unicode::Collate::CJK::Zhuyin โ€” weighting CJK Unified Ideographs for Unicode::Collate

Zhuyin weighting, the bop-fang squad representation we needed ๐ŸŽ€

  • SYNOPSIS
  • DESCRIPTION
  • CAVEAT
  • SEE ALSO
    • CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35, Unicode::Collate, Unicode::Collate::Locale

๐Ÿ‘‘ Unicode::Collate::Locale โ€” Linguistic tailoring for DUCET via Unicode::Collate

linguistic tailoring on top of DUCET, the localization glow-up ๐Ÿ’–

  • SYNOPSIS
  • DESCRIPTION
    • Constructor
    • Methods
      • "$Collator->getlocale", "$Collator->locale_version"
    • A list of tailorable locales
    • A list of variant codes and their aliases
  • INSTALL
  • CAVEAT
    • Tailoring is not maximum, Collation reordering is not supported
    • Reference
  • AUTHOR
  • SEE ALSO
    • Unicode Collation Algorithm - UTS #10, The Default Unicode Collation Element Table (DUCET), Unicode Locale Data Markup Language (LDML) - UTS #35, CLDR - Unicode Common Locale Data Repository, Unicode::Collate, Unicode::Normalize

โญ Unicode::Normalize โ€” Unicode Normalization Forms

all the normalization forms in one place, we love a one-stop shop ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
    • Normalization Forms
      • "$NFD_string = NFD($string)", "$NFC_string = NFC($string)", "$NFKD_string = NFKD($string)", "$NFKC_string = NFKC($string)", "$FCD_string = FCD($string)", "$FCC_string = FCC($string)", "$normalized_string = normalize($form_name, $string)"

๐Ÿ’– Decomposition and Composition ๐Ÿ’–

okay bestie, we're still under Unicode::Collate and these are the decomposition & composition calls you can make. Exact signatures, no cap:

  • "$decomposed_string = decompose($string [, $useCompatMapping])"
  • "$reordered_string = reorder($string)"
  • $composed_string = compose($string)
  • ($processed, $unprocessed) = splitOnLastStarter($normalized)
  • "$processed = normalize_partial($form, $unprocessed)"
  • "$processed = NFD_partial($unprocessed)"
  • $processed = NFC_partial($unprocessed)
  • "$processed = NFKD_partial($unprocessed)"
  • "$processed = NFKC_partial($unprocessed)"

โœจ Quick Check โœจ

these are the quick check functions for the normalization forms, bestie:

  • "$result = checkNFD($string)"
  • "$result = checkNFC($string)"
  • $result = checkNFKD($string)
  • "$result = checkNFKC($string)"
  • $result = checkFCD($string)
  • $result = checkFCC($string)
  • "$result = check($form_name, $string)"

๐ŸŒธ Character Data ๐ŸŒธ

all the character data lookups:

  • "$canonical_decomposition = getCanon($code_point)"
  • "$compatibility_decomposition = getCompat($code_point)"
  • "$code_point_composite = getComposite($code_point_here, $code_point_next)"
  • "$combining_class = getCombinClass($code_point)"
  • "$may_be_composed_with_prev_char = isComp2nd($code_point)"
  • "$is_exclusion = isExclusion($code_point)"
  • $is_singleton = isSingleton($code_point)
  • $is_non_starter_decomposition = isNonStDecomp($code_point)
  • $is_Full_Composition_Exclusion = isComp_Ex($code_point)
  • "$NFD_is_NO = isNFD_NO($code_point)"
  • "$NFC_is_NO = isNFC_NO($code_point)"
  • $NFC_is_MAYBE = isNFC_MAYBE($code_point)
  • "$NFKD_is_NO = isNFKD_NO($code_point)"
  • "$NFKC_is_NO = isNFKC_NO($code_point)"
  • $NFKC_is_MAYBE = isNFKC_MAYBE($code_point)

๐Ÿ’… EXPORT ๐Ÿ’…

nothing listed under here, just the heading, periodt.

๐Ÿ˜ญ CAVEATS ๐Ÿ˜ญ

  • Perl's version vs. Unicode version
  • Correction of decomposition mapping
  • Revised definition of canonical composition

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

(no content)

๐Ÿ“œ LICENSE ๐Ÿ“œ

(no content)

๐Ÿ”— SEE ALSO ๐Ÿ”—


๐Ÿ’– Unicode::UCD - Unicode character database ๐Ÿ’–

๐Ÿ“– SYNOPSIS ๐Ÿ“–

(no content)

๐Ÿ“š DESCRIPTION ๐Ÿ“š

  • code point argument

๐Ÿ” charinfo() ๐Ÿ”

  • code
  • name
  • category
  • combining
  • bidi
  • decomposition
  • decimal
  • digit
  • numeric
  • mirrored
  • unicode10
  • comment
  • upper
  • lower
  • title
  • block
  • script

๐Ÿ” charprop() ๐Ÿ”

  • Block
  • Decomposition_Mapping
  • Name_Alias
  • Numeric_Value
  • Script_Extensions

๐Ÿ” charprops_all() ๐Ÿ”

(no content)

๐Ÿ” charblock() ๐Ÿ”

(no content)

๐Ÿ” charscript() ๐Ÿ”

(no content)

๐Ÿ” charblocks() ๐Ÿ”

(no content)

๐Ÿ” charscripts() ๐Ÿ”

(no content)

๐Ÿ” charinrange() ๐Ÿ”

(no content)

๐Ÿ” general_categories() ๐Ÿ”

(no content)

๐Ÿ” bidi_types() ๐Ÿ”

(no content)

๐Ÿ” compexcl() ๐Ÿ”

(no content)

๐Ÿ” casefold() ๐Ÿ”

  • code
  • full
  • simple
  • mapping
  • status
  • * If you use this "I" mapping
  • * If you exclude this "I" mapping
  • turkic

๐Ÿ” all_casefolds() ๐Ÿ”

(no content)

๐Ÿ” casespec() ๐Ÿ”

  • code
  • lower
  • title
  • upper
  • condition

๐Ÿ” namedseq() ๐Ÿ”

(no content)

๐Ÿ” num() ๐Ÿ”

(no content)

๐Ÿ” prop_aliases() ๐Ÿ”

(no content)

๐Ÿ” prop_values() ๐Ÿ”

(no content)

๐Ÿ” prop_value_aliases() ๐Ÿ”

(no content)

๐Ÿ” prop_invlist() ๐Ÿ”

(no content)

๐Ÿ” prop_invmap() ๐Ÿ”

  • "s"
  • "sl"
  • "correction"
  • "control"
  • "alternate"
  • "figment"
  • "abbreviation"
  • "a"
  • "al"
  • "ae"
  • "ale"
  • "ar"
  • "n"
  • "ad"

๐Ÿ” search_invlist() ๐Ÿ”

(no content)

๐Ÿ” Unicode::UCD::UnicodeVersion ๐Ÿ”

(no content)

๐Ÿงฉ Blocks versus Scripts ๐Ÿงฉ

(no content)

๐Ÿงฉ Matching Scripts and Blocks ๐Ÿงฉ

(no content)

๐Ÿงฉ Old-style versus new-style block names ๐Ÿงฉ

(no content)

๐Ÿงฉ Use with older Unicode versions ๐Ÿงฉ

(no content)

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

(no content)


๐Ÿ’– User::grent - by-name interface to Perl's built-in getgr*() functions ๐Ÿ’–

๐Ÿ“– SYNOPSIS ๐Ÿ“–

(no content)

๐Ÿ“š DESCRIPTION ๐Ÿ“š

(no content)

๐Ÿ“ NOTE ๐Ÿ“

(no content)

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

(no content)


๐Ÿ’– User::pwent - by-name interface to Perl's built-in getpw*() functions ๐Ÿ’–

๐Ÿ“– SYNOPSIS ๐Ÿ“–

(no content)

๐Ÿ“š DESCRIPTION ๐Ÿ“š

๐Ÿ–ฅ๏ธ System Specifics ๐Ÿ–ฅ๏ธ

(no content)

๐Ÿ“ NOTE ๐Ÿ“

(no content)

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

(no content)

๐Ÿ“œ HISTORY ๐Ÿ“œ

  • March 18th, 2000

๐Ÿ’– XSLoader - Dynamically load C libraries into Perl code ๐Ÿ’–

๐Ÿ“ฆ VERSION ๐Ÿ“ฆ

(no content)

๐Ÿ“– SYNOPSIS ๐Ÿ“–

(no content)

๐Ÿ“š DESCRIPTION ๐Ÿ“š

๐Ÿ”„ Migration from "DynaLoader" ๐Ÿ”„

(no content)

๐Ÿงฑ Backward compatible boilerplate ๐Ÿงฑ

(no content)

โณ Order of initialization: early load() โณ

๐Ÿ˜ฑ The most hairy case ๐Ÿ˜ฑ

(no content)

๐Ÿฉบ DIAGNOSTICS ๐Ÿฉบ

  • "Can't find '%s' symbol in %s"
  • "Can't load '%s' for module %s: %s"
  • "Undefined symbols present after loading %s: %s"

๐Ÿšง LIMITATIONS ๐Ÿšง

(no content)

๐Ÿž KNOWN BUGS ๐Ÿž

(no content)

๐Ÿ› BUGS ๐Ÿ›

(no content)

๐Ÿ”— SEE ALSO ๐Ÿ”—

(no content)

๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

(no content)

(no content)


๐Ÿ’– AUXILIARY DOCUMENTATION ๐Ÿ’–

Here should be listed all the extra programs' documentation, but they don't all have manual pages yet:

  • h2ph
  • h2xs
  • perlbug
  • pl2pm
  • pod2html
  • pod2man
  • splain
  • xsubpp

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Larry Wall <larry@wall.org>, with the help of oodles of other folks.


That's the whole tea, bestie. This was from perl v5.42.3, dated 2026-08-03, and it's PERLTOC(1). Periodt. ๐Ÿ’…

๐Ÿ“ฆ where this page comes from