PERLTOC(1perl)

๐Ÿ“ฆ
version 5.44.0 ยท 2 versions
, in arch rolling

hey bestie ๐Ÿ’– welcome to perltoc(1perl) โ€” the perl documentation table of contents, fresh out of the Perl Programmers Reference Guide. this is ur map to the entire perl doc set ๐Ÿ—บ๏ธโœจ and the whole point is that u can zoom through it or grep it to land on the exact section u need. no cap.

๐ŸŽ€ NAME ๐ŸŽ€

perltoc โ€” perl documentation table of contents

๐ŸŒธ DESCRIPTION ๐ŸŒธ

okay so this page is a lil table of contents for the rest of the Perl documentation set ๐Ÿ’… it's designed to be scanned quickly, or grepped through, so u can locate the proper section ur looking for. it's giving index energy and we love that for it.

๐Ÿ“š BASIC DOCUMENTATION ๐Ÿ“š


๐ŸŒŸ perl - The Perl 5 language interpreter


๐ŸŒŸ perlintro - a brief introduction and overview of Perl

the starter pack for perl, fr fr.

  • 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

bestie this one is the data structure bible ๐Ÿ“

  • 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

lol. literally in the name โœจ

  • 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
  • AUTHOR AND COPYRIGHT
    • Acknowledgments

๐ŸŒŸ perlretut - Perl regular expressions tutorial

the full regex glow-up 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
  • AUTHOR AND COPYRIGHT
    • 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

๐ŸŒŸ 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
  • AUTHOR and COPYRIGHT

๐ŸŒŸ 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

๐ŸŒŸ 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

๐ŸŒŸ perlcheat - Perl 5 Cheat Sheet

  • DESCRIPTION
    • The sheet
  • ACKNOWLEDGEMENTS
  • AUTHOR
  • SEE ALSO

๐ŸŒŸ 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

๐ŸŒŸ perltrap - Perl traps for the unwary

watch ur step bestie, this one is literally named after the traps ๐Ÿ™ˆ

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

๐ŸŒŸ 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
  • AUTHOR AND COPYRIGHT

๐ŸŽ€ perlfaq1 โ€” General Questions About Perl ๐ŸŽ€

okay so this is where the whole FAQ saga kicks off, and it opens with the most existential question of all: what even is this thing ๐Ÿ’ญ it's giving origin-story energy, fr fr.

VERSION โœจ

yes bestie, there's a VERSION section. every FAQ in this little family has one. she's lowkey, she's brief, she's there.

DESCRIPTION ๐ŸŒธ

here's the full roster of questions she answers โ€” every single one, no skips, no cuts:

  • 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 then she closes out with AUTHOR AND COPYRIGHT, as tradition demands ๐Ÿซถ


๐Ÿฆ‹ perlfaq2 โ€” Obtaining and Learning about Perl ๐Ÿฆ‹

part two of the FAQ cinematic universe: how do I get this thing and how do I learn it. genuinely the "where do I even start" chapter and it ate.

VERSION โœจ

yep. VERSION section present, as always.

DESCRIPTION ๐ŸŒˆ

the question lineup, in order, untouched:

  • 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 get information on Perl?
  • What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
  • 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?

and the closer: AUTHOR AND COPYRIGHT. ๐Ÿ’…


๐Ÿ”ฅ perlfaq3 โ€” Programming Tools ๐Ÿ”ฅ

okay this one is the big one for tools, and the very first question is basically "how do I do literally anything" and then she just... hands you the entire map. iconic behavior, no cap.

VERSION โœจ

VERSION โ€” she's here, she's short, she's doing her job.

DESCRIPTION ๐Ÿงš

  • How do I do (anything)? โ€” the "bestie, here's the whole toolbox" question, and the answer is a giant stack of further reading. all of it, exactly as listed:
    • 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 list of editors here is long and she names every single one:
    • 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
  • 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?
    • 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?
    • 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?

same as always, bestie: AUTHOR AND COPYRIGHT. ๐Ÿ’ซ


๐Ÿ‘‘ perlfaq4 โ€” Data Manipulation ๐Ÿ‘‘

the data chapter. she is HUGE and she is organized into little themed clusters, and honestly? the way she sectioned this is giving librarian energy. obsessed.

VERSION โœจ

VERSION โ€” present and accounted for.

DESCRIPTION ๐ŸŒธ

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? โ€” and inside this one there's a whole mini-list:
    • 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?

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? โ€” and she breaks the reasons down into four lil' sub-points:
    • 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 there it is, the usual sign-off: AUTHOR AND COPYRIGHT. rest is coming, bestie, don't go anywhere ๐ŸŒˆ

๐ŸŽ€ perlfaq5 - Files and Formats ๐ŸŽ€

VERSION

bestie there's a VERSION section, it's right there โœจ

DESCRIPTION

okay so this is the entire glowing question menu for perlfaq5, and every single one of these is a real thing people ask. reader, we've all been there ๐Ÿ’…

  • How do I flush/unbuffer an output filehandle? Why must I do this? โ€” the "why is my print just SITTING there" arc ๐Ÿ˜ญ
  • How do I change, delete, or insert a line in a file, or append to the beginning of a file? โ€” bestie, files are not cooperative editors, sorry
  • How do I count the number of lines in a file?
  • How do I delete the last N lines from a file?
  • How can I use Perl's "-i" option from within a program?
  • How can I copy a file? โ€” shocking that this is a whole question, but here we are ๐Ÿซถ
  • How do I make a temporary file name?
  • How can I manipulate fixed-record-length files?
  • 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? โ€” the triple threat, we love a three-in-one ๐Ÿฆ‹
  • How can I use a filehandle indirectly?
  • How can I open a filehandle to a string?
  • How can I set up a footer format to be used with write()?
  • How can I write() into a string?
  • How can I output my numbers with commas added? โ€” the classic 1,000,000 glow-up โœจ
  • How can I translate tildes (~) in a filename?
  • When I open a file read-write, why does it wipe it out? โ€” because it simply had no respect for your data ๐Ÿ’€
  • Why do I sometimes get an "Argument list too long" when I use <*>?
  • How can I open a file named with a leading ">" or trailing blanks?
  • How can I reliably rename a file?
  • How can I lock a file?
  • Why can't I just open(FH, ">file.lock")?
  • I still don't get locking. I just want to increment the number in the file. How can I do this? โ€” the most relatable sentence on this whole page ngl
  • 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?
  • How do I randomly update a binary file?
  • How do I get a file's timestamp in perl?
  • How do I set a file's timestamp in perl?
  • How do I print to more than one file at once?
  • How can I read in an entire file all at once?
  • How can I read in a file by paragraphs?
  • How can I read a single character from a file? From the keyboard?
  • How can I tell whether there's a character waiting on a filehandle?
  • How do I do a "tail -f" in perl?
  • How do I dup() a filehandle in Perl?
  • How do I close a file descriptor by number?
  • Why can't I use "C:\temp\foo" in DOS paths? Why doesn't C:\temp\foo.exe work? โ€” slashes having main character energy in the wrong font ๐Ÿ’€
  • Why doesn't glob(".") get all the files?
  • Why does Perl let me delete read-only files? Why does "-i" clobber protected files? Isn't this a bug in Perl? โ€” asking the real questions ๐Ÿ”ฅ
  • How do I select a random line from a file?
  • Why do I get weird spaces when I print an array of lines?
  • How do I traverse a directory tree?
  • How do I delete a directory tree?
  • How do I copy an entire directory? โ€” yes, the copy trilogy is real and it is three separate questions ๐Ÿซ 

present, accounted for, protected ๐Ÿ’œ


๐ŸŒˆ perlfaq6 - Regular Expressions ๐ŸŒˆ

VERSION

yep, it exists โœจ

DESCRIPTION

the regex chapter. your eyes are not ready but we're doing it anyway ๐Ÿงš

  • How can I hope to use regular expressions without creating illegible and unmaintainable code? โ€” the eternal struggle, no cap
    • Comments Outside the Regex
    • Comments Inside the Regex
    • Different Delimiters
  • I'm having trouble matching over more than one line. What's wrong?
  • How can I pull out lines between two patterns that are themselves on different lines?
  • How do I match XML, HTML, or other nasty, ugly things with a regex? โ€” the page is calling them nasty and ugly, I'm just the messenger ๐Ÿ’€
  • I put a regular expression into $/ but it didn't work. What's wrong?
  • How do I substitute case-insensitively on the LHS while preserving case on the RHS?
  • How can I make "\w" match national character sets?
  • How can I match a locale-smart version of "/[a-zA-Z]/"?
  • How can I quote a variable to use in a regex?
  • What is "/o" really for?
  • How do I use a regular expression to strip C-style comments from a file?
  • Can I use Perl regular expressions to match balanced text?
  • What does it mean that regexes are greedy? How can I get around it? โ€” yes bestie, they eat everything, that's the whole bit ๐Ÿ˜ญ
  • How do I process each word on each line?
  • How can I print out a word-frequency or line-frequency summary?
  • How can I do approximate matching?
  • How do I efficiently match many regular expressions at once?
  • Why don't word-boundary searches with "\b" work for me?
  • Why does using $&, $`, or $' slow my program down? โ€” the special variables that carry consequences ๐Ÿ’€
  • What good is "\G" in a regular expression?
  • Are Perl regexes DFAs or NFAs? Are they POSIX compliant?
  • What's wrong with using grep in a void context?
  • How can I match strings with multibyte characters?
  • How do I match a regular expression that's in a variable?

all yours legally speaking ๐Ÿ’œ


๐Ÿฆ‹ perlfaq7 - General Perl Language Issues ๐Ÿฆ‹

VERSION

it's here, it's accounted for โœจ

DESCRIPTION

the "okay but what even IS Perl" chapter, genuinely iconic ๐Ÿ‘‘

  • Can I get a BNF/yacc/RE for the Perl language?
  • What are all these $@%&* punctuation signs, and how do I know when to use them? โ€” the sigil trauma is universal babe
  • Do I always/never have to quote my strings or use semicolons and commas?
  • How do I skip some return values?
  • How do I temporarily block warnings?
  • What's an extension?
  • Why do Perl operators have different precedence than C operators?
  • How do I declare/create a structure?
  • How do I create a module?
  • How do I adopt or take over a module already on CPAN?
  • How do I create a class?
  • How can I tell if a variable is tainted?
  • What's a closure? โ€” the question that haunts every dev's group chat
  • What is variable suicide and how can I prevent it? โ€” okay the NAME alone, we're obsessed ๐Ÿ”ฅ
  • 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?
  • What's the difference between dynamic and lexical (static) scoping? Between local() and my()?
  • How can I access a dynamic variable while a similarly named lexical is in scope?
  • What's the difference between deep and shallow binding?
  • Why doesn't "my($foo) = <$fh>;" work right?
  • How do I redefine a builtin function, operator, or method?
  • What's the difference between calling a function as &foo and foo()?
  • How do I create a switch or case statement?
  • How can I catch accesses to undefined variables, functions, or methods?
  • Why can't a method included in this same file be found?
  • How can I find out my current or calling package?
  • How can I comment out a large block of Perl code?
  • How do I clear a package?
  • How can I use a variable as a variable name?
  • What does "bad interpreter" mean?
  • Do I need to recompile XS modules when there is a change in the C library?

stamped and official, periodt ๐Ÿ’…


๐Ÿงš perlfaq8 - System Interaction ๐Ÿงš

VERSION

yes ma'am, it's there โœจ

DESCRIPTION

the chapter where Perl goes outside and touches the operating system. bold of it honestly ๐Ÿ’œ

  • How do I find out which operating system I'm running under?
  • Why does exec() not return? โ€” because it doesn't, bestie, that's the whole vibe
  • How do I do fancy stuff with the keyboard/screen/mouse?
    • Keyboard
    • Screen
    • Mouse
  • How do I print something out in color? โ€” the question everyone actually came here for ๐ŸŒˆ
  • How do I read just one key without waiting for a return key?
  • How do I check whether input is ready on the keyboard?
  • How do I clear the screen?
  • How do I get the screen size?
  • How do I ask the user for a password?
  • 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?
  • How do I start a process in the background?
    • STDIN, STDOUT, and STDERR are shared
    • Signals
    • Zombies
  • How do I trap control characters/signals?
  • How do I modify the shadow password file on a Unix system?
  • How do I set the time and date?
  • How can I sleep() or alarm() for under a second?
  • How can I measure time under a second?
  • How can I do an atexit() or setjmp()/longjmp()? (Exception handling)
  • Why doesn't my sockets program work under System V (Solaris)? What does the error message "Protocol not supported" mean?
  • How can I call my system's unique C functions from Perl?
  • Where do I get the include files to do ioctl() or syscall()?
  • Why do setuid perl scripts complain about kernel problems?
  • How can I open a pipe both to and from a command?
  • Why can't I get the output of a command with system()?
  • How can I capture STDERR from an external command?
  • Why doesn't open() return an error when a pipe open fails?
  • What's wrong with using backticks in a void context?
  • How can I call backticks without shell processing?
  • Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)?
  • How can I convert my shell script to perl?
  • Can I use perl to run a telnet or ftp session?
  • How can I write expect in Perl?
  • Is there a way to hide perl's command line from programs such as "ps"?
  • 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?
  • How do I fork a daemon process?
  • How do I find out if I'm running interactively or not?
  • How do I timeout a slow event?
  • How do I set CPU limits?
  • How do I avoid zombies on a Unix system? โ€” yes, the undead again, no they are not the fun kind ๐Ÿ’€
  • How do I use an SQL database?
  • How do I make a system() exit on control-C?
  • How do I open a file without blocking?
  • How do I tell the difference between errors from the shell and perl?
  • How do I install a module from CPAN?
  • What's the difference between require and use?
  • How do I keep my own module/library directory?
  • How do I add the directory my program lives in to the module/library search path?
  • 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?
  • What is socket.ph and where do I get it?

locked in and legally adorable ๐Ÿซถ


๐ŸŒธ perlfaq9 - Web, Email and Networking ๐ŸŒธ

VERSION

it has one, we checked ๐Ÿ’…

DESCRIPTION

the "okay but can Perl do the internet" chapter, and the answer is yes, obviously, she slays ๐Ÿ‘‘

  • Should I use a web framework?
  • Which web framework should I use?
    • Catalyst
    • Dancer2
    • Mojolicious
    • Web::Simple
  • What is Plack and PSGI?
  • How do I remove HTML from a string?
  • How do I extract URLs?
  • How do I fetch an HTML file?
  • How do I automate an HTML form submission?
  • How do I decode or create those %-encodings on the web?
  • How do I redirect to another page?
  • How do I put a password on my web pages?
  • How do I make sure users can't enter values into a form that causes my CGI script to do bad things? โ€” the security question, respect it fr fr ๐Ÿ”ฅ
  • How do I parse a mail header?
  • How do I check a valid mail address?
  • How do I decode a MIME/BASE64 string?
  • How do I find the user's mail address?
  • 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

  • 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

  • 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

  • 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

  • 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
  • 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

  • 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

...and bestie, the list keeps going. This is the rest of the alphabetical hit-list from perlfunc, every single signature, no skips, 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::SysRandom
    • 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///

PHEW. ๐Ÿ˜ฎโ€๐Ÿ’จ That whole thing? Iconic. Moving on!


๐Ÿฆ‹ Non-function Keywords by Cross-reference

Not everything's a function, bestie โ€” some of these are keywords that show up in other parts of the docs and get cross-referenced from here. Same list, same order:

  • __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

โœจ perlpod - the Plain Old Documentation format

This one's all about POD โ€” the Plain Old Documentation format. It's literally how Perl talks to itself (and to you) inside comments. ๐ŸŽ€

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

This is the spec spec โ€” the deep, precise version of how POD is supposed to work. ๐Ÿงš

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

The vibe check for writing Perl docs, fr fr. ๐Ÿ“

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

  • 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

  • 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

okay bestie, this one is the vibe guide for how you lay out a POD doc so it doesn't look like a raccoon wrote it ๐Ÿ’… It tells you which sections go where, in what order:

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

That's the whole checklist. Iconic, honestly.

AUTHOR

SEE ALSO


๐Ÿฉบ perldiag โ€” various Perl diagnostics

DESCRIPTION

This is the โœจdiagnosisโœจ page โ€” every warning and error Perl yells at you, translated into human. If the compiler is being dramatic, this is where you go find out what it actually means. ๐Ÿซถ

SEE ALSO


๐Ÿ•ฐ๏ธ perldeprecation โ€” list Perl deprecations

DESCRIPTION

This is the "we're breaking up with this feature" page. Everything Perl is phasing out lives here, sorted by which release it's on its way out in. ๐Ÿ’€

Unscheduled Deprecations

Perl 5.46

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

The lore on lexical warnings โ€” how you turn warnings on and off for a scope instead of the whole program. So much cleaner, no notes. โœจ


๐Ÿ› perldebug โ€” Perl debugging

DESCRIPTION

The Perl Debugger

Calling the Debugger

Ways to summon the debugger, literally:

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

Debugger Commands

bestie this list is long and I'm not skipping a single one, here's every command the debugger takes: 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

All the knobs you can turn: "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

Perl's built-in variables, all your faves in one place ๐Ÿ‘‘

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, @- , and the equivalences, exactly as written:

"$`" is the same as "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])"

Also: %{^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 , and the flags: 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

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

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

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

the "everything is a reference and it's fine" page. here's the map:

  • 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-looking report-writing thing. deeply iconic, deeply its own vibe:

  • 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

the OOP bible, bestie. how to actually do objects in Perl without crying:

  • 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

making a plain old $scalar secretly be a whole class. magic, lowkey:

  • 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

sneaky little filters that sit between you and your DBM files:

  • 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 newer, cleaner class keyword thing. periodt:

  • 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, Metaprogramming, Extension Customisation
  • KNOWN BUGS
  • AUTHORS

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

the "how do processes even talk to each other" saga:

  • 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 "fork() but it's not really fork()" situation, especially on Windows:

  • 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, but make it confusing (gently). floats vs ints vs strings, the whole deal:

  • 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 big friendly threads walkthrough. 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 literally everything" guide. very "write once, cry everywhere", but it's actually trying to help:

  • 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
    • 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, Android, FreeMINT
  • EOL Platforms
    • (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)
  • SEE ALSO
  • AUTHORS / CONTRIBUTORS

๐ŸŒธ perllocale โ€” Perl locale handling (internationalization and localization)

i18n/l10n energy. making Perl speak everybody's language:

  • DESCRIPTION
  • WHAT IS A LOCALE
    • 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, Category "LC_ALL", Other categories
  • PREPARING TO USE LOCALES
  • USING LOCALES
    • The "use locale" pragma
      • Not within the scope of "use locale", Lingering effects of "use locale", Under ""use locale";"

okay bestie we're still deep in the perllocale zone and the list just keeps going โ€” here's the rest of what's in there:

  • 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 ๐Ÿ”’

(she's a whole section, no subsections, go read it ๐Ÿ’…)


๐ŸŒฑ ENVIRONMENT ๐ŸŒฑ

  • 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
    • \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
    • [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], [4], [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], [7], [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
    • Confusables, Malformed text, Illegal code points
  • Regular Expressions
  • 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 โœจ

  • โ„ž 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 ๐Ÿ‘€

  • ยง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 โ“

  • 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?
  • What if I don't know which encoding was used?
  • Can I use Unicode in my Perl sources?
  • Data::Dumper doesn't restore the UTF8 flag; is it broken?
  • Why do regex character classes sometimes match only in the ASCII range?
  • Why do some characters not uppercase or lowercase correctly?
  • How can I determine if a string is a text string or a binary string?
  • How do I convert from encoding FOO to encoding BAR?
  • What are decode_utf8 and encode_utf8?
  • What is a "wide character"?

๐Ÿ” INTERNALS ๐Ÿ”

  • What is "the UTF8 flag"?
  • What about the use bytes pragma?
  • What about the use encoding pragma?
  • What is the difference between :encoding and :utf8?
  • What's the difference between UTF-8 and utf8?
  • I lost track; what encoding is the internal format really?

๐Ÿ–‹๏ธ AUTHOR ๐Ÿ–‹๏ธ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


๐Ÿ’œ perluniprops - Index of Unicode Version 17.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
  • ? means this property is considered provisional by Unicode, and may be changed or removed in some future version of the Unicode Standard

โ€ฆand the list keeps going, bestie, do not close the tab:

  • \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

Like, Perl said no thank you, we're not doing that one. The full roster ๐Ÿ’€:

  • 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

The whole little library of extra goodies, no cap ๐Ÿ“šโœจ:

  • 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
  • EBCDIC
    • 0037, 1047, POSIX-BC
  • Unicode code points versus EBCDIC code points
  • Unicode and UTF
  • Using Encode

SINGLE OCTET TABLES

  • 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
    • 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 this is the Standard Modules section, and it's literally a whole alphabet of built-in Perl goodness. We're not skipping a single one because that's not how we do things. Here's the entire lineup, no cap: ๐Ÿ’…โœจ

  • 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
  • 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_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::IP
  • 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
  • Socket
  • 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
  • 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::Handle, 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::Refcount, 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::V1, Test2::V1::Base, Test2::V1::Handle, 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

and that's the whole Test2/Test/Text/Thread/Tie/Time/Unicode/User/VMS/Win32/XS/autodie/version squad, no cap ๐Ÿ’ฏโœจ


๐ŸŒˆ 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 ๐Ÿ’–

okay so bestie, this one is literally the glow-up guide for your modules, periodt ๐Ÿ’…

โœจ 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 ๐Ÿ“–

๐Ÿ”ข 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

D

The D section is serving today, bestie:

  • 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

E is for everything โœจ:

  • 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

F, and we're not talking about the grade ๐Ÿ’…:

  • 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

G is giving glossary:

  • garbage collection
  • GID
  • glob
  • global
  • global destruction
  • glue language
  • granularity
  • grapheme
  • greedy
  • grep
  • group
  • GV

H

H-h-honey, here's the list:

  • hacker
  • handler
  • hard reference
  • hash
  • hash table
  • header file
  • here document
  • hexadecimal
  • home directory
  • host
  • hubris
  • HV

I

I is for iconic, obviously:

  • 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

J is doing the bare minimum and honestly? respect:

  • JAPH

K

K is short, sweet, and totally locked in:

  • key
  • keyword

L

L is LONG, queen. Buckle up:

  • 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

M for manifesting tbh:

  • 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

N is neat, N is necessary:

  • named pipe
  • namespace
  • NaN
  • network address
  • newline
  • NFS
  • normalization
  • null character
  • null list
  • null string
  • numeric context
  • numification
  • NV
  • nybble

O

O is out here thriving:

  • object
  • octal
  • offset
  • one-liner
  • open source software
  • operand
  • operating system
  • operator
  • operator overloading
  • options
  • ordinal
  • overloading
  • overriding
  • owner

P

P is a whole NOVEL, bestie, stay with me:

  • 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

Q, quiet quittin' the alphabet for a sec:

  • qualified
  • quantifier

R

R is giving robust:

  • 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

S โ€” the ABSOLUTE biggest one, deep breath, let's go:

  • 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

T is taking us home:

  • 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

U is underrated tbh:

  • UDP
  • UID
  • umask
  • unary operator
  • Unicode
  • Unix
  • uppercase
  • UTF-8 string

V

V is vibing:

  • value
  • variable
  • variable interpolation
  • variadic
  • vector
  • virtual
  • void context
  • v-string

W

W is wrapping this up so well:

  • warning
  • watch expression
  • weak reference
  • whitespace
  • word
  • working directory
  • wrapper
  • WYSIWYG

X

X, tiny but MIGHTY:

  • XS
  • XSUB

Y

Y is literally one (1) entry, and it ate:

  • yacc

Z

Z, the grand finale, iconic send-off:

  • zero width
  • zombie
(no body text in this section โ€” just the heading, so you know the lawyering lives separately ๐Ÿ’–)

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


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 - the XS Language Reference Manual

SYNOPSIS

DESCRIPTION

Version numbers

THE FORMAL SYNTAX OF AN XS FILE

OVERVIEW OF XS AND XSUBS

  • Initial and Further Reading
  • An Introduction to XS and XSUBs
  • The Structure of an XS File
  • Overview of how data is passed to and from an XSUB
  • The Anatomy of an XSUB
  • Returning Values from an XSUB
  • Bootstrapping

REFERENCE MANUAL

  • The MODULE Declaration
  • File-scoped XS Keywords and Directives
  • The Structure of an XSUB
  • An XSUB Declaration
  • An XSUB Parameter
  • The XSUB Input Part
  • The XSUB Init Part
  • The XSUB Code Part
  • The XSUB Output Part
  • The XSUB Cleanup Part
  • XSUB Generic Keywords
  • Sharing XSUB bodies
  • Using Typemaps
  • Using XS With C++
  • Safely Storing Static Data in XS
    • MY_CXT_KEY, 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
  • Symbols defined by Perl that are visible to XS code
  • Event loops and control flow

XS VERSION

AUTHOR DIAGNOSTICS

AUTHOR


perlxstypemap - Perl XS C/Perl type mapping

DESCRIPTION

  • Anatomy of a typemap
  • The Role of the typemap File in Your Distribution
  • Sharing typemaps Between CPAN Distributions
  • Writing typemap Entries
  • Full Listing of Core Typemaps
    • T_SV, T_SVREF, T_SVREF_REFCOUNT_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

DESCRIPTION

libc functions to avoid

Conventions

  • "~"
  • "t"
  • "p"
  • "n"
  • "s"

okay bestie we're still in the middle of this list and we are NOT skipping a single line, not one ๐Ÿ’…

  • 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

okay this is the one, the internals deep-dive, the "how does Perl actually work under the hood" moment ๐ŸŒธ

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

Tracing the interpreter execution

  • perl must have been compiled with -DDEBUGGING
  • The $^D variable must have the appropriate bit set

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, OA_UNOP_AUX, 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 crossover episode, we love a crossover ๐Ÿซถ

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

method resolution, but make it a plugin โœจ

DESCRIPTION

  • resolve, name, length, kflags, hash

Callbacks

Caching

Examples

AUTHORS


perlreapi - Perl regular expression plugin interface

regex plugins, aka the engine room of the vibes ๐Ÿ’€

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()
ngl substrs really does show up twice in this index and we're not skipping either one, that's the rule ๐Ÿ’–

HISTORY

AUTHORS

LICENSE


perlreguts - Description of the Perl regular expression engine.

the regex engine, explained, in full, no cliffhangers ๐ŸŒˆ

DESCRIPTION

OVERVIEW

  • A quick note on terms
  • What is a regular expression engine?
  • Structure of a Regexp Program
    • "regnode_1", "regnode_2", "regnode_string", "regnode_charclass", "regnode_charclass_posixl", "REGNODE_AFTER", "regnext"

Process Overview

  • A. Compilation
  • 1. Parsing
  • 2. Peep-hole optimisation and analysis
  • B. Execution
  • 3. Start position and no-match optimisations
  • 4. Program execution

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 - Internals of how "feature 'class'" and class syntax works ๐Ÿงฌ

okay bestie this one is the deep-lore internals page for classes, and here's the whole map of it ๐ŸŒธ

๐Ÿ“– 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 ๐Ÿ“–

okay so this is literally the entire directory of the public API, one big master list, and it is a lot โ€” so here's every single corner it covers:

"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, "Declaration and Initialization of Globals" 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", "defer_error", "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", "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 ๐Ÿ” 

"toCTRL", "fromCTRL", "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 ๐Ÿ”

"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_", "__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_ASSERT_DECL", "STATIC_ASSERT_EXPR", "STATIC_ASSERT_STMT", "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 the list just keeps going, bestie ๐Ÿ˜ญ same section as before, we're still in it, no escape:

  • 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_pv
  • cophh_exists_pvn
  • cophh_exists_pvs
  • cophh_exists_sv
  • 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 โœจ

Okay so you wanna teach Perl a brand new trick that it did not come with out of the box? That's custom ops. Very main character. The whole squad:

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

๐Ÿฆ‹ CV Handling ๐Ÿฆ‹

CV = code value, aka the thing behind every sub you've ever written. Here's your toolkit for poking at them directly:

  • 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 your code is behaving absolutely unhinged and you need to see inside the interpreter, these are your besties. Dumps, traces, poison, all of it:

  • av_dump
  • deb
  • deb_nocontext
  • vdeb
  • debstack
  • DEBUG_U
  • DEBUG_Uv
  • DEBUG_U_TEST
  • DEBUG_Uv_TEST
  • 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
  • PERL_POISON
  • PL_DBsub
  • PL_op
  • PL_runops
  • PL_sv_serial
  • pmop_dump
  • PoisonFree
  • Poison
  • PoisonNew
  • PoisonWith
  • sv_dump
  • sv_dump_depth
  • vdeb*
Ngl the Poison* family is giving exactly what it sounds like โ€” it sprinkles garbage into memory so that if you're still reading it, you find out loudly. It is not here to be nice to you. ๐Ÿ™ˆ

Declaration and Initialization of Globals

(no sub-entries listed here, bestie, it's just vibing as a heading ๐ŸŽ€)


๐ŸŒธ Display functions ๐ŸŒธ

All the ways to actually print stuff at the C level, including the ones that take a context and the ones that don't:

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

๐Ÿ‘‘ Embedding, Threads, and Interpreter Cloning ๐Ÿ‘‘

This is the big boss section, no cap. Constructing interpreters, cloning them, tearing them down, pads, exit flags โ€” the whole lifecycle:

  • 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
  • vload_module
  • my_exit
  • my_failure_exit
  • newPADNAMELIST
  • newPADNAMEouter
  • newPADNAMEpvn
  • nothreadhook
  • pad_add_anon
  • pad_add_name_pv
  • pad_add_name_pvn
  • pad_add_name_pvs
  • 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 โ€” and its levels are literally listed as: 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
  • sv_dup
  • sv_dup_inc
  • vload_module*

Errno

One single icon and honestly it's serving:

  • sv_string_from_errnum

๐Ÿ˜ญ Exception Handling (simple) Macros ๐Ÿ˜ญ

Try/catch energy but make it C. Lowkey cursed, highkey useful:

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

๐Ÿ“ Filesystem configuration values ๐Ÿ“

Everything Perl found out about your filesystem when it was built. It's giving encyclopaedia, bestie, but here it all is, every last one:

  • 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!!! The drama of NAN, INF, negative zero and subnormals. This is where Perl tells you exactly how weird your platform's numbers are:

  • 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 general-vibes config pile โ€” architecture, byte order, libc detective work, all the little things that decide how Perl actually behaves on your machine:

  • 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
  • List of "#include" needed symbols

๐Ÿ’… Global Variables ๐Ÿ’…

The big-name globals. These babies get checked, plugged into, and consulted all over the place:

  • PL_check
  • PL_infix_plugin
  • PL_keyword_plugin
  • PL_phase

๐ŸŽ€ GV Handling and Stashes ๐ŸŽ€

Globs and stashes, aka the symbol-table side of the interpreter. Buckle up because this one is long long:

  • amagic_call
  • AMGf_noleft
  • AMGf_noright
  • AMGf_unary
  • AMGf_assign
  • AMGf_force_scalar
  • AMGf_force_overload
  • amagic_deref_call
  • gv_add_by_type
  • Gv_AMupdate โ€” and the return vibes are spelled out as: 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 ๐Ÿซถ

Little reference-county string things and the one that lets you sneak a wrapper around an op checker, iconic:

  • rcpv_copy
  • rcpv_free
  • rcpv_new
  • wrap_op_checker

๐ŸŒˆ HV Handling ๐ŸŒˆ

Hashes, the data structure, at the C level. Buckets, iterators, names, refcounts, the lot. Not me listing every single one of these but also yes, literally 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_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 there is so much more coming, bestie, don't you dare close the tab ๐Ÿ’–

๐ŸŒŠ Input/Output

Okay so this is the I/O corner of the index, bestie โ€” everything perlapi rolls up under input/output. It's giving guest list, not homework. Skim, screenshot, whatever. ๐Ÿ’–

  • do_close, IoDIRP, IOf_FLUSH, IOf_UNTAINT, IoFLAGS, IoIFP, IoOFP, IoTYPE, my_chsize, my_dirfd, my_pclose, my_popen, newIO, PERL_FLUSHALL_FOR_CHILD
  • 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
  • the star-suffixed ones, carry the little * with pride: 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*
  • and the K-squad: PERLIO_K_BUFFERED, PERLIO_K_CANCRLF, PERLIO_K_FASTGETS, PERLIO_K_MULTIARG, PERLIO_K_RAW, PERLIO_NOT_STDIO
  • more stars, because they committed: 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*, PL_maxsysfd, repeatcpy, SvVSTRING

๐Ÿ”ข Integer

The number-crunching crew. Type sizes, maxes, mins, and the macros that tell you how big everything is. No cap, this is where the limits live. โœจ

  • CASTI32, HAS_INT64_T, HAS_LONG_LONG, HAS_QUAD, INTMAX_C, INTMAXSIZE, INTSIZE, IV, I8, I16, I32, I64, IV_BITS, UV_BITS, IV_DIG, UV_DIG, IV_MAX, IV_MIN, IVSIZE, IVTYPE
  • I8*, I8SIZE, I8TYPE, I16*, I16SIZE, I16TYPE, I32*, I32df, I32SIZE, I32TYPE, I64*, I64SIZE, I64TYPE, LONGLONGSIZE, LONGSIZE, memzero
  • PERL_INT_FAST8_T, PERL_INT_FAST16_T, PERL_UINT_FAST8_T, PERL_UINT_FAST16_T
  • 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
  • PERL_UINT_FAST8_T*, PERL_UINT_FAST16_T*, SHORTSIZE, UINTMAX_C, UV, U8, U16, U32, U64, UV_BITS*, UV_DIG*, UV_MAX, UV_MIN, UVSIZE, UVTYPE
  • U8*, U8SIZE, U8TYPE, U16*, U16SIZE, U16TYPE, U32*, U32of, U32SIZE, U32TYPE, U32uf, U32Xf, U32xf, U64*, U64SIZE, U64TYPE, WIDEST_UTYPE

๐Ÿ–จ๏ธ I/O Formats

Format macros!! The little f-suffixed besties you hand to printing. Here's the full set, no skipping. ๐ŸŽ€

  • HvNAMEf, HvNAMEf_QUOTEDPREFIX, HvNAMEfARG, IVdf, NVef, NVff, NVgf, PERL_PRIeldbl, PERL_PRIfldbl, PERL_PRIgldbl, PERL_SCNfldbl, PRINTF_FORMAT_NULL_OK
  • SVf, SVf_QUOTEDPREFIX, SVfARG, UTF8f, UTF8f_QUOTEDPREFIX, UTF8fARG, UVf, UVof, UVuf, UVXf, UVxf

๐Ÿ” Lexer interface

For the girlies who poke at the lexer directly. Parsing functions, lexer state, and the PL_parser fields that go with them. Main character energy only. ๐Ÿ‘‘

  • 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, lex_stuff_pv, lex_stuff_pvn, lex_stuff_pvs, lex_stuff_sv, lex_unstuff
  • parse_arithexpr, parse_barestmt, parse_block, parse_fullexpr, parse_fullstmt, parse_label, parse_listexpr, parse_stmtseq, parse_subsignature, parse_termexpr
  • PL_parser, PL_parser->bufend, PL_parser->bufptr, PL_parser->linestart, PL_parser->linestr
  • resume_compcv_and_save, resume_compcv_final, suspend_compcv, valid_identifier_pvn, valid_identifier_pve, valid_identifier_sv, wrap_infix_plugin, wrap_keyword_plugin

๐ŸŒ Locales

Locale stuff, and hmm yes, this list is a whole chaotic vibe โ€” there are literal bare letters in here (a, b, c, d, e) and some cross-references to other docs. I'm keeping every single one exactly as-is, periodt. ๐Ÿ’…

  • 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, a, b, c, d, e, 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. Actual magic. โœจ Say it with me: mg_. Plus every PERL_MAGIC_* you could ever need. This section is icONIC.

  • mg_clear, mg_copy, mg_find, mg_findext, mg_free, mg_free_type, mg_freeext, mg_get, mg_magical, mg_set
  • MGf_COPY, MGf_DUP, MGf_LOCAL, MGVTBL
  • 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, SvTIED_obj

๐Ÿง  Memory Management

Allocation besties!! New/Renew/Safefree and the safe* family, all sitting here together like they're in a group chat. ๐Ÿซถ

  • dump_mstats, HAS_MALLOC_GOOD_SIZE, HAS_MALLOC_SIZE, HASATTRIBUTE_MALLOC, I_MALLOCMALLOC, MYMALLOC, Newx, safemalloc, Newxc, Newxz, safecalloc, PERL_MALLOC_WRAP, Renew, saferealloc, Renewc, safecalloc*, Safefree, safemalloc*, saferealloc*, safesyscalloc, safesysfree, safesysmalloc, safesysrealloc

๐Ÿงฌ MRO

Method resolution order things. Short list, big vibes. ๐ŸŒˆ

  • 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

Four macros. That's it. That's the whole squad, and honestly? They ate. ๐Ÿ”ฅ

  • dMULTICALL, MULTICALL, POP_MULTICALL, PUSH_MULTICALL

๐Ÿงฎ Numeric Functions

Numbers, math, and number-string parsing. Trig girls, PERL_ABS, the whole Perl_* math lineup, plus the scan_* and str* crew. Plus some starred repeats because they're just that popular. ๐Ÿ’œ

  • Atof*, grok_atoUV, grok_infnan, grok_number, grok_number_flags, grok_numeric_radix, GROK_NUMERIC_RADIX, isinfnan, 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, Perl_sin*, Perl_sinh*, Perl_sqrt*, Perl_tan*, Perl_tanh*, PL_hexdigit, READ_XDIGIT, scan_bin, scan_hex, scan_oct, Strtod*, Strtol, Strtoul

๐ŸŒณ Optrees

The optree category, and lowkey it's the longest one here โ€” ops, op constructors, op classes, op flags, peephole hooks, the works. It's giving "everything at once" and I respect it. ๐ŸŒธ

  • alloccopstash, BINOP, block_end, block_start, ck_entersub_args_list, ck_entersub_args_proto, ck_entersub_args_proto_or_list, cop_disable_warning, cop_enable_warning, cop_has_warning, 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
  • newANONATTRSUB, newANONHASH, newANONLIST, newANONSUB, newARGDEFELEMOP, newASSIGNOP, newATTRSUB, newAVREF, newBINOP, newCONDOP, newCONSTSUB, newCONSTSUB_flags, newCVREF, newDEFEROP, newDEFSVOP, newFOROP, newGIVENOP, newGVOP, newGVREF, newHVREF, 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
  • 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_clear, 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, 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

Two icons. Two. packlist and unpackstring, doing their thing. ๐Ÿ“

  • packlist, unpackstring

๐ŸŒธ Pad Data Structures ๐ŸŽ€

This is where Perl keeps your sub's lexical variables โ€” its little stash of locals, aka the pad ๐Ÿ’–. All the handles, list-y bits, names, refcounts, and the globals that track which pad is current:

  • CvPADLIST
  • 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 ๐ŸŒˆ

Everything you'd need to vibe with /etc/passwd and /etc/group โ€” the _r reentrant variants, the HAS_ capability probes, and the pw struct fields, 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 ๐Ÿฆ‹

Tiny section, iconic content โ€” where Perl thinks your shell, sed, and sh actually live:

  • CSH
  • LOC_SED
  • SH_PATH

๐Ÿ’œ Prototype information ๐Ÿ’œ

The _R_PROTO and HAS_*_PROTO family โ€” these tell you the shape of a system function's prototype, so Perl's guts can call it without guessing ๐Ÿ’…. So many of them, bestie, buckle up:

  • 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 ๐Ÿ’…

The RC stack macros โ€” popping, pushing, xpushing, replacing, all refcount-aware. You literally cannot do this wrong once you know the names ๐Ÿซถ:

  • 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 โœจ

Regex engine internals, bestie โ€” the compile/exec pipeline, the RXf_ flags, the RXapif_ API ops, the RX_BUFF_IDX_ constants, and the actual struct regexp itself. Itโ€™s giving "I read the engine source for fun" ๐Ÿ’–:

  • 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 ๐ŸŽ€

The IO slots that hold your format header, body, and footer โ€” top, bottom, and the line counters in between ๐Ÿฆ‹:

  • IoBOTTOM_GV
  • IoBOTTOM_NAME
  • IoFMT_GV
  • IoFMT_NAME
  • IoLINES
  • IoLINES_LEFT
  • IoPAGE
  • IoPAGE_LEN
  • IoTOP_GV
  • IoTOP_NAME

๐Ÿ”ฅ Signals ๐Ÿ”ฅ

Signal-handling internals! The siginfo capability probes, the unsafe-signals flag, rsignal stuff, the Sigjmp_buf/Sigsetjmp/Siglongjmp trio (note the capital S โ€” not the libc ones), and every whichsig flavor:

  • 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 ๐Ÿ‘‘

Where your perl was built and how it was configured โ€” install paths, arch names, all the USE_* build flags. If any of these surprise you, welcome to the "why is my perl different on this box" club ๐Ÿ™ˆ:

  • 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 ๐Ÿ“

What your build knows about sockets โ€” sockaddr variants, sockatmark, socketpair, socks5, and the socks headers. Network girlies rise ๐Ÿ’…:

  • 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-filter machinery plus a couple of subparsing helpers โ€” filter_add, filter_del, and friends:

  • apply_builtin_cv_attributes
  • filter_add
  • filter_del
  • filter_read
  • scan_vstring
  • start_subparse

๐Ÿงš Stack Manipulation Macros ๐Ÿงš

The big one, bestie โ€” PUSH/POP/XPUSH families, MARK/SP/PUTBACK/SPAGAIN glue, mPUSH*/mXPUSH* mortal variants, the PL_* global stack pointers, XSRETURN/XST_m* return helpers, EXTEND, dSP/dMARK, savestack/scopestack/tmps, and the XS_VERSION bootcheck stuff. Slay ๐Ÿ”ฅ:

  • AMG_CALLunary
  • AMG_CALLunary_flags
  • 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 ๐Ÿฆ‹

All the copy/move/compare/scan primitives โ€” Copy, Move, Zero, the str* / mem* comparators, ibcmp* case-insensitive ones, save*pv* dupers (both the non-shared forms and the shared forms), plus snprintf helpers and STR_WITH_LEN. It's giving "yes I write C in Perl" ๐Ÿ’–:

  • 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
  • non-shared forms
  • shared forms
  • STR_WITH_LEN
  • strEQ
  • strGE
  • strGT
  • strLE
  • STRLEN
  • strLT
  • strNE
  • strnEQ
  • strnNE
  • Zero
  • ZeroD

๐Ÿ’œ SV Flags ๐Ÿ’œ

The SVt_ type enums and the svtype itself โ€” every kind of scalar a scalar can be, periodt:

  • 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 ๐ŸŒˆ

The whole "everything is an SV" era in one mega-list โ€” _FROM_REF extractors, the MUTABLE_* casts, every newSV* constructor, all the sv_cat*/sv_cmp*/sv_copypv*/sv_dec*/sv_derived_from* ops, the sv_catpvn* star-forms, booleans, and the PL_sv_* constants. Long list but honestly? iconic ๐Ÿ‘‘:

  • 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
  • vnewSVpvf
  • newSVpvn
  • newSVpvn_flags
  • newSVpvn_share
  • newSVpvn_utf8
  • newSVpvs
  • newSVpvs_flags
  • newSVpvs_share
  • newSVpvz
  • newSVrv
  • newSVsv
  • newSVsv_flags
  • newSVsv_nomg
  • newSVsv_flags_NN
  • 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

okay bestie, still in the index, still alphabetized, still unbothered ๐Ÿ’… the SV train does not stop, so here's every single name in order, exactly as written, no skips, no merge, no mercy:

  • sv_does
  • sv_does_pv
  • sv_does_pvn
  • sv_does_sv
  • sv_eq
  • sv_eq_flags
  • sv_streq
  • sv_streq_flags
  • overloading
  • treatment of a NULL SV parameter
  • 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_numcmp
  • sv_numcmp_flags
  • sv_numeq
  • sv_numeq_flags
  • sv_numne
  • sv_numne_flags
  • sv_numge
  • sv_numge_flags
  • sv_numgt
  • sv_numgt_flags
  • sv_numle
  • sv_numle_flags
  • sv_numlt
  • sv_numlt_flags

next clump, and yes the num* crew shows up again in a whole different order โ€” that's not me being chaotic, that's literally the page ๐Ÿ™ˆ:

  • sv_numeq
  • sv_numeq_flags
  • sv_numne
  • sv_numne_flags
  • sv_numle
  • sv_numle_flags
  • sv_numlt
  • sv_numlt_flags
  • sv_numge
  • sv_numge_flags
  • sv_numgt
  • sv_numgt_flags
  • SV_GMAGIC
  • SV_SKIP_OVERLOAD
  • SV_FORCE_OVERLOAD
  • 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

the setpv corner of the internet ๐ŸŒธ:

  • sv_setpv_bufsize
  • sv_setpv_mg*
  • sv_setpvf
  • sv_setpvf_mg
  • sv_setpvf_mg_nocontext
  • sv_setpvf_nocontext
  • sv_vsetpvf
  • sv_vsetpvf_mg
  • sv_vsetpvfn

and then everything with a lil star on it, which means "and friends," iconic behavior โœจ:

  • 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

format-string city, population: these ๐Ÿซถ:

  • 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
  • SvGMAGICAL
  • 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
  • SvMAGICAL
  • 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

the force girlies ๐Ÿ’ช:

  • 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

then the big star-heavy block, alphabetically serving as usual ๐Ÿ‘‘:

  • 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

refcount squad, second verse same as the first ๐ŸŽ€:

  • 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

and the last stretch of the Sv* wall, we made it, hydrate bestie ๐Ÿ’ง:

  • SvRMAGICAL
  • SvROK
  • SvROK_off
  • SvROK_on
  • SvRV
  • SvRV_set
  • SvSETMAGIC
  • SvSetMagicSV
  • SvSetMagicSV_nosteal
  • SvSetSV
  • SvSetSV_nosteal
  • SvSHARE
  • SvSHARED_HASH
  • SvSMAGICAL
  • 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
  • SvUVXx
  • SvUVx*
  • SvVOK
  • SvVSTRING_mg
  • uiv_2buf
  • vnewSVpvf*

Tainting

four macros, whole personality, taint mode's entire press tour ๐ŸŒธ:

  • SvTAINT
  • SvTAINTED
  • SvTAINTED_off
  • SvTAINTED_on

Time

โฐ clocks, zones, and a whole lotta HAS_ macros, plus isdst living its three-mood era:

  • 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
  • isdst is 0
  • isdst is >0
  • isdst is <0

Typedef names

the ID cards of the C side, every single type Perl bothered to name ๐Ÿชช:

  • 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 is THEE big one, bestie. UTF-8 headquarters. infinite scroll core. buckle up and do not stop scrolling:

  • 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

next clump, same section, keep going ๐Ÿ’–:

  • is_utf8_invariant_string
  • is_utf8_invariant_string_loc
  • is_ascii_string
  • is_invariant_string

and the next one, we're still in here, we live here now ๐Ÿฆ‹:

  • 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

and more, still the same subsection, no we are not done ๐Ÿ˜ญ:

  • 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

this next clump is a whole curriculum, displays and hops and conversions and all of it ๐Ÿ”ฅ:

  • 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

and the very last bit of Unicode Support, which is also packed with the index's lil prose sub-entries โ€” dropping all of them here exactly, periodt ๐Ÿ“:

  • 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"
  • "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

bestie these are the little grab-bag helpers, the "idk just give me a function for it" shelf ๐Ÿซถ

  • "C_ARRAY_END"
  • "C_ARRAY_LENGTH"
  • "getcwd_sv"
  • "grok_bin"
  • "grok_hex"
  • "grok_oct"
  • For "grok_bin"
  • For "grok_hex"
  • For "grok_oct"
  • "IN_PERL_COMPILETIME"
  • "IN_PERL_RUNTIME"
  • "is_safe_syscall"
  • "IS_SAFE_SYSCALL"
  • "my_setenv"
  • "newPADxVOP"
  • "phase_name"
  • "StructCopy"
  • "sv_destroyable"
  • "sv_nosharing"

๐Ÿ”ข Versioning

it's giving version objects, it's giving v-string drama, we love to see it ๐Ÿ’–

  • "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, but make it โœจdocumentedโœจ (and also the macros that decide whether to scream)

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

๐Ÿงฌ XS

okay so if you're writing XS code you LIVE here, this is your whole personality now ๐Ÿ’…

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

๐Ÿซฅ Undocumented elements

yes bestie, that's literally the name. it's the mystery box section, no notes ๐Ÿ™ˆ


๐Ÿ–‹๏ธ AUTHORS


๐Ÿ”— SEE ALSO


๐Ÿ’œ perlintern - autogenerated documentation of purely internal Perl functions

the backstage pass ๐ŸŽ€ these are the internal guts, autogenerated straight from the source, no vibes added, all business

DESCRIPTION

๐Ÿ—‚๏ธ AV Handling

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

๐Ÿ“ž Callback Functions

  • "dowantarray", "leave_scope", "magic_freedestruct", "mortal_svfunc_x", "MORTALSVFUNC_X"
  • "pop_scope", "push_scope"
  • "save_adelete", "save_freercpv", "save_generic_pvref", "save_generic_svref", "save_hdelete", "save_hints", "save_op", "save_padsv", "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

  • "CC_mask_"
  • "Perl_isCC_by_bit"

โš™๏ธ Compiler and Preprocessor information

๐Ÿ“œ Compiler directives

  • "PREVENT_LVALUE"

๐Ÿช Compile-time scope hooks

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

๐Ÿงต Concurrency

this one is a whole saga, not a section, a lore drop

  • "CVf_SLABBED", "CvROOT", "CvSTART"
  • "CX_CUR", "CX_LEAVE_SCOPE", "CX_POP", "cx_type"
  • "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"
  • "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_L_FLAG", "debug_pDEPTH"
  • "free_c_backtrace", "get_c_backtrace"
  • "PL_DBsingle", "PL_DBtrace"
  • "runops_debug", "runops_standard"

๐Ÿ“ฃ Declaration and Initialization of Globals

  • "dEXT*", "dEXTCONST*"
  • "DOINIT"
  • "EXT", "EXTCONST", "dEXT", "dEXTCONST"
  • "INIT"

๐Ÿ‘€ 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"
  • "USE_STDIO"

๐Ÿ”ข 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

  • "grok_uint_by_base"
  • "isEVEN", "isODD"
  • "isinfnansv"
  • "isODD*"
  • "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

  • "new_block_statement"
  • "newATTRSUB_x", "newFORM", "newMYSUB", "newXS_len_flags"
  • "op_lvalue_flags", OP_LVALUE_NO_CROAK
  • "op_refcnt_lock", "op_refcnt_unlock"
  • "package"
  • "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"
  • "SAVEPADSVANDMORTALIZE"

๐Ÿ” 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

  • "parse_ident_msg"

๐Ÿฅž 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_numcmp_common"
  • "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_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
    • "invlist_highest_range_start", "invlist_lowest", "is_utf8_non_invariant_string", "isSCRIPT_RUN", "UNI_DISPLAY_TR", "utf8_to_uvuni", "utf8n_to_uvuni", "uvoffuni_to_utf8_flags", "valid_utf8_to_uv", "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", "report_uninit"
  • XS
    • "api_version_assert", "my_cxt_init", "my_cxt_t"
  • Undocumented elements
  • AUTHORS
  • SEE ALSO

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

okay so like, this one is the whole behind the curtain moment for Perl's IO. Layers, bestie. Stacks of them. Iconic.

  • 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.

the abstraction layer babe ๐Ÿ’… it's giving "we made IO portable and you should say thank you".

  • SYNOPSIS
  • DESCRIPTION
    • 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

bestie the way this page is literally the roadmap for becoming a Perl core contributor. main character energy fr fr. ๐Ÿ‘‘

  • DESCRIPTION
  • SUPER QUICK PATCH GUIDE
    • 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, Add your name to the Perl contributors list, If you want to be publicly credited, If you want to remain anonymous, Submit your changes to GitHub, Thank you, 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

like a map of the whole repo, and honestly? obsessed. now you'll never be lost in the t/ directory again ๐Ÿงš

  • 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

the interpreter itself. the whole engine. this is where the vibes get mechanical ๐Ÿ’€

  • 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

a little tutorial-shaped bestie. it walks you through one tiny patch, step by step, so you're not just vibing blindly ๐ŸŽ€

  • 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

ngl this one is a whole toolbox. debugging, static analysis, memory debuggers, profiling โ€” it's giving "senior dev's secret notebook" ๐Ÿ”ฅ

  • 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
    • Catching hidden flaws
    • 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 -fsanitize-ignorelist=$PWD/asan_ignore", -Aldflags="-fsanitize=address", -Alddlflags="-shared -fsanitize=address"
    • 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

the rulebook bestie. governance, versioning, deprecation, all of it. it's giving โœจbureaucracy but make it iconicโœจ

  • DESCRIPTION
  • GOVERNANCE
    • Perl 5 Porters
  • VERSIONING
  • 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

the actual constitution bestie. democratic Perl, no cap ๐Ÿ—ณ๏ธ

  • 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, Leon Timmermans, Paul Evans
    • Core Team Members
      • Andreas Kรถnig <andk@cpan.org>, 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>, Lukas Mai <lukasmai.403+p5p@gmail.com>, Matthew Horsfall <wolfsage@gmail.com>, Max Maischein <cpan@corion.net>, Neil Bowers <neilb@neilb.org>, Nicholas Clark <nick@ccl4.org>, Nicolas R <nicolas@atoomic.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>, Thibault Duponchelle <thibault.duponchelle@gmail.com>, Todd Rinaldo <toddr@cpanel.net>, Tony Cook <tony@develop-help.com>, Yves Orton <demerphq@gmail.com>, 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

bestie this one is the whole "you and the Perl repo, a love story" arc ๐Ÿ’– literally everything about using git with perl5 perl5.git.perl.org โ€” cloning, branches, patches, the works. Obsessed.

  • 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

the lore archive fr fr ๐ŸŽ€ every release, every size, every keeper of the pumpkin ๐Ÿ’œ

  • 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.44.0

the glow-up announcement โœจ everything that changed, dropped, or got fixed in this release. Big main character energy.

  • DESCRIPTION
  • Core Enhancements
    • Named Parameters in Signatures
    • Multi-variable "foreach" can now use aliased references
    • Enhanced operation of regular expression patterns under /xx
    • Unicode 17.0 is supported
    • New source of entropy for PRNG seeding
  • 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
    • Unicode rules are now fully enforced on identifier and regular expression group names.
  • Deprecations
  • Performance Enhancements
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • Changes to Existing Diagnostics
      • old message, new message
    • New Diagnostics
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Platform-Specific Notes
      • Windows, Fix builds with "USE_IMP_SYS" defined but "USE_ITHREADS" not defined, OpenBSD, When testing embedding, ensure we link against the correct static libperl. [GH #22125 <https://github.com/Perl/perl5/issues/22125>], AIX, Thread-safe locale handling has been turned off on all releases due to apparent bugs in the underlying operating system support, The ibm-clang/ibm-clang_r IBM Open XL C/C++ compiler is now supported for AIX 7.2 and 7.3. This is the recommended compiler to use when compiling Perl on these versions of AIX, z/OS, clang is now the only supported compiler, A single test failure remains for the core Perl test suite, Some cpan modules shipped with core have known problems:, Encode, ExtUtils-MakeMaker, HTTP-Tiny, IO-Compress, JSON-PP, libnet, MIME-Base64, PerlIO-via-QuotedPrint, Pod-Checker, podlators, Pod-Simple, You can get a perl that works in ASCII mode
  • Internal Changes
  • Selected Bug Fixes
    • INTERFACE keyword in XS
    • "&CORE::__CLASS__" no longer returns invalid results
    • parse_subsignature() can now handle empty subroutine signatures
  • Known Problems
  • Obituary
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐Ÿฆ‹ perl5440delta, perldelta โ€” what is new for perl v5.44.0

same energy, two names, one release ๐Ÿ’… (aliases are iconic like that)

  • DESCRIPTION
  • Core Enhancements
    • Named Parameters in Signatures
    • Multi-variable "foreach" can now use aliased references
    • Enhanced operation of regular expression patterns under /xx
    • Unicode 17.0 is supported
    • New source of entropy for PRNG seeding
  • 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
    • Unicode rules are now fully enforced on identifier and regular expression group names.
  • Deprecations
  • Performance Enhancements
  • Modules and Pragmata
    • Updated Modules and Pragmata
  • Documentation
    • Changes to Existing Documentation
  • Diagnostics
    • Changes to Existing Diagnostics
      • old message, new message
    • New Diagnostics
  • Configuration and Compilation
  • Testing
  • Platform Support
    • Platform-Specific Notes
      • Windows, Fix builds with "USE_IMP_SYS" defined but "USE_ITHREADS" not defined, OpenBSD, When testing embedding, ensure we link against the correct static libperl. [GH #22125 <https://github.com/Perl/perl5/issues/22125>], AIX, Thread-safe locale handling has been turned off on all releases due to apparent bugs in the underlying operating system support, The ibm-clang/ibm-clang_r IBM Open XL C/C++ compiler is now supported for AIX 7.2 and 7.3. This is the recommended compiler to use when compiling Perl on these versions of AIX, z/OS, clang is now the only supported compiler, A single test failure remains for the core Perl test suite, Some cpan modules shipped with core have known problems:, Encode, ExtUtils-MakeMaker, HTTP-Tiny, IO-Compress, JSON-PP, libnet, MIME-Base64, PerlIO-via-QuotedPrint, Pod-Checker, podlators, Pod-Simple, You can get a perl that works in ASCII mode
  • Internal Changes
  • Selected Bug Fixes
    • INTERFACE keyword in XS
    • "&CORE::__CLASS__" no longer returns invalid results
    • parse_subsignature() can now handle empty subroutine signatures
  • Known Problems
  • Obituary
  • Acknowledgements
  • Reporting Bugs
  • Give Thanks
  • SEE ALSO

๐ŸŒธ perl5422delta โ€” what is new for perl v5.42.2

a lil maintenance drop, but with a security fix so read it bestie ๐Ÿ˜ญ

  • 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

small but mighty, platform gworls got some attention ๐Ÿ’…

  • 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

THEE release notes, a whole feast โœจ new operators, new attributes, lexical methods, Unicode 16.0 โ€” she ate and left no crumbs.

  • DESCRIPTION
  • Core Enhancements
    • More CORE:: subs
    • New pragma "source::encoding"
    • 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
    • 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
  • 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

maintenance branch said "not today, zlib" ๐Ÿ›ก๏ธ

  • 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

๐Ÿงš perl5403delta โ€” what is new for perl v5.40.3

threads + working directory = chaos, so they patched it ๐Ÿ™ˆ

  • 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

tr// said "let me overflow real quick" and got handled ๐Ÿ’€

  • 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

a tidy lil point release, bugs got squished ๐Ÿซถ

  • 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

the big one omg โ€” new keyword __CLASS__, try/catch graduating, builtins everywhere, and two CVEs on the record. No cap, this one's a whole era. ๐Ÿ‘‘

  • 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
    • "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
  • 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
    • 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
    • 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
    • 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
    • "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
  • 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 ๐Ÿ’€

  • 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 ๐Ÿ™ˆ

  • 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 ๐Ÿ“

  • 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 ๐Ÿงš

  • 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 ๐ŸŒธ

  • 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 ๐Ÿ’œ

  • 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

okay bestie, this is the part where Perl said โ€œweโ€™re changing the rulesโ€ and listed every glow-down. no cap, hereโ€™s the full tea:

  • 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

no extra deets here, just the section title. itโ€™s giving โ€œweโ€™re fast, periodt.โ€

๐Ÿ“ฆ Modules and Pragmata

the module tea is piping hot. under this umbrella we got:

  • 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

nothing nested, just vibes. slay.

๐Ÿ–ฅ Platform Support

  • Discontinued Platforms
    • Windows CE
  • Platform-Specific Notes
    • Linux, NetBSD 8.0, Windows, Solaris, VMS, z/OS

๐Ÿ”ง Internal Changes

just the title, bestie. lowkey iconic.

๐Ÿ› Selected Bug Fixes

same, just the title. the bugs got fixed, we move.

๐Ÿ•Š Obituary

๐Ÿ’– Acknowledgements

๐Ÿž Reporting Bugs

๐Ÿ™ Give Thanks

๐Ÿ‘€ SEE ALSO


๐ŸŒธ perl5303delta - what is new for perl v5.30.3

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

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

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

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

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

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

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 ๐ŸŒˆ

the big one, bestie, buckle 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
  • Documentation
    • Changes to Existing Documentation
  • Testing
  • Selected Bug Fixes
  • Acknowledgements
  • Reporting Bugs
  • SEE ALSO

perl5240delta - what is new for perl v5.24.0 ๐Ÿ‘‘

the lore is lore-ing, so much happening here ๐Ÿ’œ

  • DESCRIPTION
  • Core Enhancements
    • Postfix dereferencing is no longer experimental
    • Unicode 8.0 is now supported
    • 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 ">>") now more explicitly defined
    • printf and sprintf now allow reordered precision arguments
    • More fields provided to "sigaction" callback with "SA_SIGINFO"
    • Hashbang redirection to Perl 6
  • Security
    • Set 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{}/" 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 ๐Ÿ“

  • 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 ๐Ÿงš

  • 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 ๐Ÿ”ฅ

  • 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 ๐Ÿ’€

  • 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 bestie, this one is a whole era, no cap ๐Ÿ’…

๐Ÿ’– 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

๐Ÿฆ‹ 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

๐Ÿฆ‹ 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

๐Ÿฆ‹ 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

๐Ÿฆ‹ DESCRIPTION

๐Ÿ”ฅ Core Enhancements

๐Ÿ’ซ Experimental Subroutine signatures

๐ŸŒธ subs 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

๐Ÿงš Incompatible Changes

โญ 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

๐Ÿ’ซ 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

๐ŸŒˆ 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

๐Ÿ‘‘ Configuration and Compilation

๐Ÿซถ Testing

๐Ÿ’… Platform Support

๐Ÿ“ 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

๐ŸŽ€ Selected Bug Fixes

๐Ÿงš Regular Expressions

โญ Perl 5 Debugger and -d

๐Ÿ’œ Lexical Subroutines

๐Ÿ‘‘ Everything Else

๐Ÿซถ Known Problems

๐Ÿ’… Obituary

๐Ÿ“ Acknowledgements

๐ŸŒˆ Reporting Bugs

โœจ SEE ALSO


๐Ÿ’– 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

and the list keeps scrolling, bestie โ€” same doc, same table of contents, we're just deeper in the stack now ๐Ÿซถ

  • Deprecations
    • Module removals
      • encoding, Archive::Extract, B::Lint, B::Lint::Debug, CPANPLUS plus every CPANPLUS::* module that shipped with it, 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

okay bestie, that whole saga was one delta doc ๐Ÿ˜ญ this TOC is genuinely a never-ending story and I'm obsessed. Next up, the next era of the changelog catalogue ๐Ÿ’…

๐Ÿฆ‹ 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

heads up ๐ŸŽ€ the next one is a whole era, okay? buckle in.

๐Ÿ‘‘ 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
  • Internal Changes
  • Selected Bug Fixes
    • 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
  • Acknowledgements
  • Reporting Bugs
  • SEE ALSO

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

  • DESCRIPTION
  • Core Enhancements
  • Security
    • 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
  • Deprecations
  • Modules and Pragmata
    • New Modules and Pragmata
    • Updated Modules and Pragmata
      • Socket, SDBM_File, List::Util
    • Removed Modules and Pragmata
  • Documentation
    • New Documentation
    • Changes to Existing Documentation
  • Diagnostics
  • Utility Changes
  • Configuration and Compilation
  • Platform Support
    • New Platforms
    • Discontinued Platforms
    • Platform-Specific Notes
      • VMS
  • Selected Bug Fixes
  • Known Problems
  • 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

  • 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

Bestie, this is the receipts section โ€” every speed glow-up the engine got, listed with zero shame:

  • "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

The "what actually shipped" aisle. She's organized. ๐Ÿ’…

โœจ New Modules and Pragmata

(just the heading here, no lil' babies listed)

๐Ÿ”„ 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

(empty bucket, iconic)


๐Ÿ“š 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

(yes bestie, they got a makeover too)

๐Ÿ› ๏ธ 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

๐Ÿ“– 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

  • 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

Okay so these are the platforms that got a lil glow-up this round, bestie:

  • AIX
  • Cygwin
  • Darwin (Mac OS X)
  • DragonFly BSD
  • FreeBSD
  • Irix
  • NetBSD
  • OpenVMS
  • Stratus VOS
  • Symbian
  • Windows

๐Ÿ’€ Known Problems

Yeah bestie, this section exists. It's right there in the table of contents, in all its messy glory. We don't skip it, we don't hide it, we just respectfully acknowledge it and move on. ๐Ÿ™ˆ

๐Ÿฉน Errata

The receipts section. It's here. It's on the list. Moving on. ๐Ÿ’…

๐Ÿ’– Acknowledgements

Where the maintainers say thank you to everybody who helped ๐Ÿ’– โ€” yes it's a whole section, and yes it's in the TOC.

๐Ÿ› Reporting Bugs

Found something cursed? This is the section that tells you where to spill the tea. ๐Ÿซถ

๐Ÿ‘€ SEE ALSO

The little "go read these too" corner of the page.


๐Ÿฆ‹ perl5101delta โ€” what is new for perl v5.10.1

The whole entire tea on what 5.10.1 brought to the table. โœจ

DESCRIPTION

What this delta page is even about. Standard preface energy.

๐Ÿšจ Incompatible Changes

Not everything is a soft launch, bestie. Some stuff straight up changed and your old code might side-eye you for it.

Switch statement changes

flip-flop operators, defined-or operator

Yep. Those two. They got touched. The way they behave in a switch context changed, and it's listed right here under this heading. ๐Ÿ˜ญ

Smart match changes

Smart match? Not so smart-match anymore, apparently. Changes noted. ๐Ÿ’€

Other incompatible changes

The rest of the "yeah this might break your stuff" pile. It lives here.

๐Ÿ‘‘ Core Enhancements

The main character energy of the release. ๐Ÿ’…

Unicode Character Database 5.1.0

That's Unicode Character Database 5.1.0 โ€” say it with your chest. ๐Ÿฆ‹

A proper interface for pluggable Method Resolution Orders

Yes bestie, an actual interface for pluggable MROs. Grown-up architecture. Iconic.

The overloading pragma

A brand new pragma called overloading. Note the difference, iykyk. ๐Ÿ‘€

Parallel tests

Tests, but doing it in parallel. Multi-tasking queen behavior. โœจ

DTrace support

DTrace support is IN the building. ๐Ÿ”ฅ

Support for configure_requires in CPAN module metadata

The metadata got a new field, configure_requires, and it's fully supported now. ๐ŸŽ€

๐Ÿ“ฆ Modules and Pragmata

The full roster of what shipped, what changed, what got a lil refresh.

โœจ New Modules and Pragmata

Fresh on the scene:

  • autodie
  • Compress::Raw::Bzip2
  • parent
  • Parse::CPAN::Meta

๐Ÿ”ง Pragmata Changes

These pragmata all got updated, one by one, no skips:

  • attributes
  • attrs
  • base
  • bigint
  • bignum
  • bigrat
  • charnames
  • constant
  • feature
  • fields
  • lib
  • open
  • overload
  • overloading
  • version

๐Ÿ“š Updated Modules

Okay babes, hold onto your seats, this list is LONG and I am NOT skipping a single one of them, that's the whole point: 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.

Phew. Every single one. Whew. ๐Ÿ˜ฎโ€๐Ÿ’จ๐Ÿ’–

๐Ÿ›  Utility Changes

h2ph, h2xs, perl5db.pl, perlthanks

That's the lineup: h2ph, h2xs, perl5db.pl, and perlthanks all got changes. Four little glow-ups. โœจ

๐Ÿ“– New Documentation

perlhaiku, perlmroapi, perlperf, perlrepository, perlthanks

Fresh docs dropped: perlhaiku, perlmroapi, perlperf, perlrepository, and perlthanks. New reading material, bestie, go consume. ๐ŸŽ€

๐Ÿ“ Changes to Existing Documentation

Docs you already know, but edited. It's in the TOC, it counts.

โšก Performance Enhancements

Faster. Snappier. More caffeinated. ๐Ÿ”ฅ

๐Ÿ— Installation and Configuration Improvements

ext/ reorganisation

The ext/ directory got reorganised. Tidy queen behavior. ๐Ÿ’…

Configuration improvements

Config stuff, but better.

Compilation improvements

Building it got nicer too.

Platform Specific Changes

AIX, Cygwin, FreeBSD, Irix, Haiku, MirOS BSD, NetBSD, Stratus VOS, Symbian, Win32, VMS

Per-platform changes for: AIX, Cygwin, FreeBSD, Irix, Haiku, MirOS BSD, NetBSD, Stratus VOS, Symbian, Win32, and VMS. All of them, no skipping. ๐ŸŒˆ

๐Ÿž Selected Bug Fixes

A curated lil selection of bugs that got squashed. Rip bozo. ๐Ÿชฆ

๐Ÿ“ข 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

Diagnostics that are new or got reworded:

  • 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

Yes those are the exact name patterns, don't come for me. ๐Ÿ˜Œ

๐Ÿซง Changed Internals

SVf_UTF8, SVs_TEMP

The inner workings got touched โ€” specifically SVf_UTF8 and SVs_TEMP. Under the hood tea. ๐Ÿ› 

๐Ÿงช New Tests

A whole new suite of test files landed:

  • 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

Coverage queen. Periodt. ๐Ÿ’…

๐Ÿ’€ Known Problems

The known problems list for 5.10.1. It's a section. It's listed. ๐Ÿ™ˆ

โš ๏ธ Deprecations

Stuff on its way out. Say your goodbyes early, bestie. ๐Ÿฅฒ

๐Ÿ’– Acknowledgements

Thank-yous. Because credit matters. ๐Ÿซถ

๐Ÿ› Reporting Bugs

Where to report. You know the drill.

๐Ÿ‘€ SEE ALSO

The "read these next" corner for this delta page.


๐ŸŒธ perl5100delta โ€” what is new for perl 5.10.0

The BIG one. The 5.10.0 era. This is the main character release energy release. ๐Ÿ‘‘

DESCRIPTION

What this delta page covers.

๐Ÿ‘‘ Core Enhancements

The feature pragma

The feature pragma stepped on the scene. Yes bestie, the one you've been using in every single script since. ๐ŸŒŸ

New -E command-line switch

A brand new command-line switch: -E. Fresh flag, fresh starts. โœจ

Defined-or operator

The defined-or operator is HERE. // girlies rise. ๐Ÿ’–

Switch and Smart Match operator

The switch and smart match operator, arriving together, hand in hand.

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

Okay the regex glow-up is UNREAL. New regex features:

  • Recursive Patterns
  • Named Capture Buffers
  • Possessive Quantifiers
  • Backtracking control verbs
  • Relative backreferences
  • the \K escape
  • Vertical and horizontal whitespace, and linebreak
  • Optional pre-match and post-match captures with the /p flag

Regex girlies, we ate. ๐Ÿ˜ญ๐Ÿ’…

say()

say()!!! The function every single one of us uses by default now. It arrived here. ๐ŸŽ‰

Lexical $_

Lexical $_. Yes, we can have nice things.

The _ prototype

The _ prototype. Tiny, mighty, real.

UNITCHECK blocks

UNCHECK blocks... no wait, UNITCHECK blocks arrived. Yes. Read it again, it's UNITCHECK. ๐Ÿ™ˆ

New Pragma, mro

A brand new pragma called mro โ€” Method Resolution Order, if you were wondering. ๐Ÿ’…

readdir() may return a "short filename" on Windows

readdir() may return a "short filename" on Windows. Notice how short is in quotes? That's load-bearing. ๐Ÿ‘€

readpipe() is now overridable

readpipe() is now overridable. Customize away.

Default argument for readline()

readline() got a default argument. Cute.

state() variables

state() variables are here! Persist, queen. โœจ

Stacked filetest operators

Stacked filetest operators. Stack them up like bracelets. ๐ŸŽ€

UNIVERSAL::DOES()

UNIVERSAL::DOES() joined the family. Say hi. ๐Ÿ‘‹

Formats

Formats got changes. Yes, formats exist. Yes, they're in the TOC anyway.

Byte-order modifiers for pack() and unpack()

Byte-order modifiers for pack() and unpack(). Endianness girlies, this one's for you.

no VERSION

no VERSION is a thing now.

chdir, chmod and chown on filehandles

chdir, chmod, and chown all work on filehandles now. Glow-up.

OS groups

OS groups support. Group chat, but for the OS. ๐Ÿ˜Œ

Recursive sort subs

Recursive sort subs. Sort-ception.

Exceptions in constant folding

Exceptions in constant folding. Catch them if you can.

Source filters in @INC

Source filters in @INC. Wild but real.

New internal variables

${^RE_DEBUG_FLAGS}, ${^CHILD_ERROR_NATIVE}, ${^RE_TRIE_MAXBUF}, ${^WIN32_SLOPPY_STAT}

New internal variables dropped:

  • ${^RE_DEBUG_FLAGS}
  • ${^CHILD_ERROR_NATIVE}
  • ${^RE_TRIE_MAXBUF}
  • ${^WIN32_SLOPPY_STAT}

Look at them go. โœจ

Miscellaneous

UCD 5.0.0

UCD 5.0.0. Unicode's era.

MAD

MAD. Just MAD. Don't ask, it's in the TOC. ๐Ÿ’€

kill() on Windows

kill() on Windows. Platform-specific drama.

๐Ÿšจ Incompatible Changes

This is the "your old code might cry" section, bestie. Read carefully.

Packing and UTF-8 strings

Packing and UTF-8 strings changed. Incompatible. Noted. ๐Ÿ˜ญ

Byte/character count feature in unpack()

Byte/character count behavior in unpack() changed. Same vibe.

The $* and $# variables have been removed

The $* and $# variables have been removed. Gone. Deleted. Evicted. They are no longer with us. ๐Ÿชฆ

substr() lvalues are no longer fixed-length

substr() lvalues are no longer fixed-length. Behavior shift, mark it down.

Parsing of "-f _"

Parsing of "-f _" changed. Sneaky whitespace drama, as always.

":unique"

:unique โ€” yes, with the colon, it's a thing, it changed, noted. ๐Ÿ’…

Effect of pragmas in eval

Pragmas inside eval behave differently now. Careful, bestie.

chdir FOO

chdir FOO changed. Because sometimes the bareword wasn't the vibe.

Handling of .pmc files

.pmc file handling changed. If you know, you know.

$^V is now a version object instead of a v-string

$^V is now a version object instead of a v-string. Big upgrade, tiny variable. ๐Ÿ‘‘

@- and @+ in patterns

@- and @+ inside patterns changed. Regex bookkeeping got different.

$AUTOLOAD can now be tainted

$AUTOLOAD can now be tainted. Security girlies, eyes up. ๐Ÿ”ฅ

Tainting and printf

Tainting and printf โ€” changed, noted.

undef and signal handlers

undef and signal handlers. Cheeky combo, changed.

strictures and dereferencing in defined()

Strictures and dereferencing inside defined() โ€” changed.

(?p{}) has been removed

(?p{}) has been removed. Rip. ๐Ÿชฆ

Pseudo-hashes have been removed

Pseudo-hashes have been removed. Rest in peace, legend, you served your time. ๐Ÿ˜ญ

Removal of the bytecode compiler and of perlcc

The bytecode compiler AND perlcc? Both removed. Gone gone. ๐Ÿ’€

Removal of the JPL

The JPL is removed too. Yeah. Rough section.

Recursive inheritance detected earlier

Recursive inheritance is now detected earlier. Catching problems sooner, slay.

warnings::enabled and warnings::warnif changed to favor users of modules

warnings::enabled and warnings::warnif changed so they favor users of modules. Noted.

Removal of package; (package without arguments)

package; โ€” that's package with no arguments โ€” has been removed. Yeah. ๐Ÿชฆ

๐Ÿ“ฆ Modules and Pragmata

Upgrading individual core modules

You can upgrade individual core modules. Pick and choose, bestie. ๐ŸŽ€

Pumping Pragmata Changes

...

(sorry, actual heading:)

Pragmata Changes

feature, mro, Scoping of the sort pragma, Scoping of bignum, bigint, bigrat, base, strict and warnings, version, warnings, less

The pragmata roster that changed:

  • feature
  • mro
  • Scoping of the sort pragma
  • Scoping of bignum, bigint, bigrat, base, strict and warnings
  • version
  • warnings
  • less

That's the list. Don't skip. ๐Ÿ’…

New modules

New modules arrived. That's the section.

Selected Changes to Core Modules

Attribute::Handlers, B::Lint, B, Thread

Selected core module changes for Attribute::Handlers, B::Lint, B, and Thread. Four lil glow-ups.

๐Ÿ›  Utility Changes

perl -d, ptar, ptardiff, shasum, corelist, h2ph and h2xs, perlivp, find2perl, config_data, cpanp, cpan2dist, pod2html โ€” all of these got utility changes. Big tool moment. ๐Ÿงฐ

๐Ÿ“– New Documentation

Fresh docs dropped for 5.10.0. Reading era.

โšก Performance Enhancements

In-place sorting

In-place sorting. No extra copies, just vibes. ๐Ÿ”ฅ

Lexical array access

Lexical array access got faster.

XS-assisted SWASHGET

XS-assisted SWASHGET. Snappy.

Constant subroutines

Constant subroutines are quicker now.

PERL_DONT_CREATE_GVSV

The PERL_DONT_CREATE_GVSV knob. Environment variable, real one, noted.

Weak references are cheaper

Weak references got cheaper. Budget-friendly queen. ๐Ÿ’ธ

sort() enhancements

sort() enhancements. Sorting, but better.

Memory optimisations

Memory optimisations. Lean and mean.

UTF-8 cache optimisation

UTF-8 cache got optimised. Caching, but smarter.

Sloppy stat on Windows

Sloppy stat on Windows. Yes that's the real name and yes it's iconic. ๐Ÿ’€

Regular expressions optimisations

Engine de-recursivised, Single char char-classes treated as literals, Trie optimisation of literal string alternations, Aho-Corasick start-point optimisation

Regex optimisations, the whole squad:

  • Engine de-recursivised
  • Single char char-classes treated as literals
  • Trie optimisation of literal string alternations
  • Aho-Corasick start-point optimisation

Regex engine, we thank you for your service. ๐Ÿซถ

๐Ÿ— Installation and Configuration Improvements

Configuration improvements

-Dusesitecustomize, Relocatable installations, strlcat() and strlcpy(), d_pseudofork and d_printf_format_null, Configure help

Config-level glow-ups:

  • -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

Build-world improvements:

  • Parallel build
  • Borland's compilers support
  • Static build on Windows
  • pport.h files
  • C++ compatibility
  • Support for Microsoft 64-bit compiler
  • Visual C++
  • Win32 builds

Installation improvements

Module auxiliary files

Module auxiliary files. Tiny but mighty.

New Or Improved Platforms

New or improved platforms. That's the header. ๐ŸŽ€

๐Ÿž Selected Bug Fixes

The list of fixes, as headings, all of them:

  • 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

Every. Single. One. ๐Ÿซก

๐Ÿ“ข New or Changed Diagnostics

The diagnostics that changed:

  • 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

Look at them all, doing their little warning thing. ๐Ÿ˜Œ

๐Ÿซง Changed Internals

Reordering of SVt_* constants

The SVt_* constants got reordered. Shook.

Elimination of SVt_PVBM

SVt_PVBM got eliminated. Gone.

New type SVt_BIND

New type: SVt_BIND. Fresh.

Removal of CPP symbols

Some CPP symbols got removed.

Less space is used by ops

Ops take up less space now. Compact queen.

New parser

A whole new parser. Main character move. ๐Ÿ‘‘

Use of const

const is used now. Classy.

Mathoms

Mathoms. It's a word, it's a section, it's here.

AvFLAGS has been removed

AvFLAGS has been removed.

av_* changes

The av_* family got changes.

$^H and %^H

$^H and %^H โ€” both in this section.

B:: modules inheritance changed

The B:: modules' inheritance changed.

Anonymous hash and array constructors

Anonymous hash and array constructors โ€” changed.

๐Ÿ’€ Known Problems

UTF-8 problems

UTF-8 problems. Of course it's UTF-8. It's always UTF-8, bestie. ๐Ÿ˜ญ

๐Ÿ–ฅ Platform Specific Problems

Platform-specific problems live here. Every platform has its lil struggles.

๐Ÿ› Reporting Bugs

Report bugs here. Be specific, be kind, include your version. ๐Ÿ’–

๐Ÿ‘€ SEE ALSO

Further reading. Go forth.


๐ŸŒบ perl589delta โ€” what is new for perl v5.8.9

5.8.9 era. Vintage, but still cute.

DESCRIPTION

What this delta page covers, briefly and sweetly.

๐Ÿ“Œ Notice

A notice. Yes, section literally named Notice. Don't skip it, it might be important. ๐Ÿ‘€

๐Ÿšจ Incompatible Changes

The "this might break your old stuff" list. Same energy as always.

๐Ÿ‘‘ Core Enhancements

Unicode Character Database 5.1.0

Unicode Character Database 5.1.0. Unicode said "let me update real quick." ๐Ÿฆ‹

stat and -X on directory handles

stat and -X now work on directory handles. Glow-up.

Source filters in @INC

Source filters in @INC. Yes again.

Exceptions in constant folding

Exceptions in constant folding. Catch them.

no VERSION

no VERSION. Real.

Improved internal UTF-8 caching code

The internal UTF-8 caching code got improved. Faster caching, happier vibes.

Runtime relocatable installations

Runtime relocatable installations. Move it anywhere, bestie. ๐Ÿ’…

New internal variables

${^CHILD_ERROR_NATIVE}, ${^UTF8CACHE}

New internal variables:

  • ${^CHILD_ERROR_NATIVE}
  • ${^UTF8CACHE}

Fresh variables, fresh drama. โœจ

readpipe is now overridable

readpipe is now overridable. Because apparently once wasn't enough.

simple exception handling macros

Simple exception handling macros. Tiny helper macros, doing their thing.

-D option enhancements

-D option enhancements. Debugging girlies, this one's for you.

XS-assisted SWASHGET

XS-assisted SWASHGET. Again! It's popular.

Constant subroutines

Constant subroutines. Steady, reliable, iconic.

๐ŸŒ New Platforms

New platforms joined the party. Welcome, babes. ๐ŸŽ‰

๐Ÿ“ฆ Modules and Pragmata

New Modules

Fresh modules for 5.8.9.

Updated Modules

The modules that got a lil touch-up.

Utility Changes ๐Ÿ› ๏ธโœจ

bestie, the tools section keeps going and the roster is giving main character energy:

  • debugger upgraded to version 1.31 โ€” periodt, the debugger got bumped ๐Ÿ’…
  • perlthanks โ€” yes bestie, it's on the list ๐ŸŒธ
  • perlbug โ€” also right there, iconic
  • h2xs โ€” present and accounted for ๐Ÿฆ‹
  • h2ph โ€” last one, slay

New Documentation ๐Ÿ“š

fresh docs dropped, no cap.

Changes to Existing Documentation ๐Ÿ“

and the old docs got a lil edit too, as a treat.

Performance Enhancements ๐Ÿ”ฅ

things got faster. literally the vibe.

Installation and Configuration Improvements โš™๏ธ

Relocatable installations

Configuration improvements

Compilation improvements

Installation improvements

Platform Specific Changes

all the plumbing got love, and every single one of those subsections is real iykyk ๐Ÿ’–


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

bugs were caught, bugs were handled, we move ๐ŸŒˆ

New or Changed Diagnostics ๐Ÿ—ฃ๏ธ

the messages themselves, verbatim, because we do not paraphrase diagnostics in this house:

  • 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 ๐Ÿงช

the whole lil test-file family, exactly as written:

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 ๐Ÿ˜ญ

yep, there are known problems, we're being honest about it.

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

bestie, the whole squad got updated, and here they are exactly as listed:

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


perl583delta - what is new for perl v5.8.3 ๐ŸŒˆ

DESCRIPTION

Incompatible Changes

Core Enhancements

Modules and Pragmata

the updated lineup, copy-pasted with love and zero typos:

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 ๐Ÿ’–

DESCRIPTION

Incompatible Changes

Core Enhancements

Hash Randomisation

Threading

Modules and Pragmata

Updated Modules And Pragmata

all of these, exactly:

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 โญ

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

the full updated crew, no edits, no omissions:

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 ๐Ÿ‘‘

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

bestie, they kept it real and listed every single one:

  • 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

Bestie, gather round, this is the โœจ "every platform is a unique little snowflake and some of them are going through it" โœจ section. Full roster, no skipping:

  • 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

The "hey bestie, something's broken, here's how you tell the grown-ups about it" section. Read it before you come at the maintainers, okay? ๐Ÿ™ˆ

๐Ÿฆ‹ SEE ALSO

Cross-references, aka the "you may also enjoy these fine pages" corner. Go get lost in the docs, it's a vibe.

โญ HISTORY

The lore. The origin story. The receipts of how we got here. ๐Ÿ’œ


๐Ÿ‘‘ perl561delta - what's new for perl v5.6.1

Y'all, this page is the whole glow-up recap for perl v5.6.1 and it is long. Like, "make a snack first" long. ๐Ÿ“

๐ŸŒธ 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

The literal highlight reel. Every single one of these is a headline:

  • 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

  • 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

The little command-line besties got some love too:

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

๐Ÿฆ‹ Improved Documentation

Docs got a glow up, we love to see it:

  • 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:

  • 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
  • gcc automatically tried if 'cc' does not seem to be working

๐Ÿงš Platform specific changes

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

๐Ÿ’œ Significant bug fixes

The "we fixed it, no cap" list:

  • <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 ๐Ÿฉบ

bestie, this is the full roster of diagnostics that got new or changed. every. single. one. no skipping, no skimming, we're reading the whole list together ๐Ÿ’–

  • "%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

that's 99 of them, and yes I counted, and yes I have no regrets ๐Ÿ’…


๐Ÿงช New tests ๐Ÿงช

nothing listed under it in the TOC, queen โ€” it's just the heading standing there being iconic ๐ŸŒธ


๐Ÿ’ฅ Incompatible Changes ๐Ÿ’ฅ

pay attention here bestie, this is the "your old code might get a glow-up it did not ask for" zone ๐Ÿ˜ญ

๐Ÿ“œ 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 ๐Ÿงจ

heading's here, nothing listed under it ๐Ÿฆ‹


๐Ÿ˜ตโ€๐Ÿ’ซ Known Problems ๐Ÿ˜ตโ€๐Ÿ’ซ

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 ๐Ÿงš

  • 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:

(that last one really does end on a colon in the source, and I'm respecting it ๐Ÿ’œ)


๐Ÿชฆ Obsolete Diagnostics ๐Ÿชฆ

  • 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 ๐Ÿ›

present and accounted for, no sub-entries listed โœจ


๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

heading only, bestie ๐ŸŒˆ


๐Ÿ“– HISTORY ๐Ÿ“–

heading only, iconic behaviour honestly ๐Ÿ‘‘


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

๐Ÿ’– DESCRIPTION ๐Ÿ’–

๐Ÿš€ 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 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 ๐Ÿช„

heading's there, list is empty in the TOC ๐ŸŽ€


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

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

๐Ÿ“š Improved Documentation ๐Ÿ“š

  • 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 โšก

  • 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

and that's where this part hands off, bestie โ€” more coming, don't you dare close the tab ๐Ÿซถ

๐Ÿ› Significant bug fixes

okay so this is the receipts section โ€” every bug that got hunted down and slayed. group chat, take notes ๐Ÿ’…

  • <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

like, all of these? fixed? obsessed ๐Ÿ˜Œโœจ


๐Ÿšจ New or Changed Diagnostics

the full roster of new + changed diagnostics, and bestie I am not skipping a single one, fr fr. every last warning gets its moment:

  • "%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

that's the whole list, no crumbs left ๐Ÿ“


๐Ÿงช New tests

yeah that's literally it. it's a heading. there are new tests. iconic of them honestly ๐ŸŽ€


๐Ÿ’” Incompatible Changes

the "your old code might side-eye you" chapter. buckle up ๐Ÿฆ‹

โš ๏ธ 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

no further tea listed here, it just says this section exists. slay.


๐Ÿ˜ญ Known Problems

the "we are aware, bestie" list. keeping it 100:

  • 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

these are the โœจexperimentalโœจ girlies โ€” handle with vibes:

  • 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

  • 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

yep, that's a section. go report your bugs, bestie ๐Ÿซถ


๐Ÿ‘€ SEE ALSO

a whole section for seeing also. go look at the other pages, they're cute.


๐Ÿ“œ HISTORY

the lore. the backstory. the origin story of this page. periodt.


๐ŸŒธ perl5005delta - what's new for perl5.005 ๐ŸŒธ


๐Ÿ’– DESCRIPTION

the description lives here, glowing, minding its business โœจ


๐Ÿ”ข About the new versioning system

new numbering scheme just dropped. numbers are kinda the whole thing.


๐Ÿ’” Incompatible Changes

๐Ÿšจ WARNING: This version is not binary compatible with Perl 5.004

not a drill, not clickbait, no cap. this is an actual warning and it means what it says.

๐Ÿ  Default installation structure has changed

the layout moved. it's giving new address, same vibe.

๐Ÿช Perl Source Compatibility

your perl source? check the compatibility notes here.

๐Ÿ”ง C Source Compatibility

your C source? also got notes.

๐Ÿงฌ Binary Compatibility

binaries. compatibility. the whole situation.

๐Ÿ” Security fixes may affect compatibility

security said "you're welcome" and compatibility said "excuse me".

๐Ÿผ Relaxed new mandatory warnings introduced in 5.004

the 5.004 warnings got to chill a little.

๐Ÿ“„ Licensing

the legal paperwork section. read it, bestie.


โš™๏ธ Core Changes

๐Ÿงต Threads

threads are here.

๐Ÿ—๏ธ Compiler

the compiler section. very main character.

๐ŸŽ€ Regular Expressions

  • Many new and improved optimizations
  • Many bug fixes
  • New regular expression constructs
  • New operator for precompiled regular expressions
  • Other improvements
  • Incompatible changes

๐Ÿง  Improved malloc()

malloc got a glow-up.

โšก Quicksort is internally implemented

quicksort is now internal. it lives here now.

๐Ÿ“ก Reliable signals

signals, but reliable.

๐Ÿ“š Reliable stack pointers

stack pointers, also reliable.

โ†ฉ๏ธ More generous treatment of carriage returns

carriage returns were being treated too harshly, so now they get generosity.

๐Ÿซง Memory leaks

the leaks section. (yes, that's its name.)

๐ŸŒ Better support for multiple interpreters

more than one interpreter? supported, and better than before.

๐Ÿงฉ Behavior of local() on array and hash elements is now well-defined

no more mystery, it's defined now.

โ€ผ๏ธ "%!" 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

fresh platforms, just arrived.

๐Ÿ”„ Changes in existing support

the ones we already had? they changed.


๐Ÿ“ฆ Modules and Pragmata

๐ŸŽ New Modules

  • 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

  • Benchmark
  • Carp
  • CGI
  • Fcntl
  • Math::Complex
  • Math::Trig
  • POSIX
  • DB_File
  • MakeMaker
  • CPAN
  • Cwd

๐Ÿงฐ Utility Changes

utility changes happened. that's the section. ๐Ÿ’…


๐Ÿ“ Documentation Changes

the docs changed too, obviously.


๐Ÿšจ 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

the config changed. go configure. ๐ŸŒˆ


๐Ÿž BUGS

yes, there's a bugs section. ironic? maybe. iconic? absolutely. ๐Ÿ‘‘


๐Ÿ‘€ SEE ALSO

more pages to see, also.


๐Ÿ“œ HISTORY

and finally, the history. the archives. the lore dump. ๐Ÿฆ‹

๐Ÿ’พ perl5004delta โ€” what's new for perl5.004

Okay bestie, this one is the receipts page: every single thing that changed when perl 5.004 dropped. No cap, it's giving "changelog but make it lore." Here's the whole menu ๐Ÿ“

  • 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

The reading list, bestie ๐Ÿ“–โœจ your TBR could never. Here's what's on the shelf:

  • DESCRIPTION
    • The most popular books
      • 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

The group chat for the whole language fr fr ๐Ÿซถ find your people:


๐Ÿ” perldoc โ€” Look up Perl documentation in Pod format.

The moment you need to actually READ the docs, this is the bestie that serves ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • OPTIONS
    • -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 "we're trying stuff, no promises" page ๐Ÿ˜ญ the things still in beta, the things that ate, and the things that got sent home. Here, organized:

  • 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, New object system and "class" syntax, "any" and "all" list processing operators, Named parameters in subroutine signatures, Enhanced "/xx" modifier in regular expression pattern matching
    • 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
  • COPYRIGHT
  • LICENSE

๐ŸŽจ perlartistic โ€” the Perl Artistic License

The legal slay ๐Ÿ’œ the fine print, but make it fashion. Same sections, same order, no skipping:

  • 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

And the other license, bestie โ€” the GPL one, version 1, not 2, not 3, we said what we said ๐Ÿ™ˆ

  • SYNOPSIS
  • DESCRIPTION

๐Ÿ“œ GNU GENERAL PUBLIC LICENSE

๐Ÿฆ‹ perlaix โ€” Perl version 5 on IBM AIX (UNIX) systems

โœจ 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 7.2 and 7.3 (threaded/32-bit)
    • Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (threaded/32-bit)
    • Recommended Options AIX 7.2 and 7.3 (32-bit)
    • Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (32-bit)
    • Recommended Options AIX 7.2 and 7.3 (threaded/64-bit)
    • Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (threaded/64-bit)
    • Recommended Options AIX 7.2 and 7.3 (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

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

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.

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

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

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

DESCRIPTION

BUILD AND INSTALL

KNOWN PROBLEMS

CONTACT


๐Ÿ‘‘ perlhpux โ€” Perl version 5 on Hewlett-Packard Unix (HP-UX) systems

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

DESCRIPTION

  • Known Problems with Perl on Hurd

AUTHOR


๐Ÿ’… perlirix โ€” Perl version 5 on Irix systems

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

DESCRIPTION

  • Deploying Perl on Linux
  • Experimental Support for Sun Studio Compilers for Linux OS

AUTHOR


๐Ÿฆ‹ perlmacosx โ€” Perl under Mac OS X

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

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.

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 my 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

okay so this is the OS/2 zone and it is a whole journey. Everything this page covers:

  • 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

the whole why are there four of you situation:

  • perl.exe
  • perl_.exe
  • perl__.exe
  • perl___.exe
  • Why strange names?
  • Why dynamic linking?
  • Why chimera build?

ENVIRONMENT

the env vars, slay:

  • PERLLIB_PREFIX
  • PERL_BADLANG
  • PERL_BADFREE
  • PERL_SH_DIR
  • USE_PERL_FLOCK
  • TMP or TEMP

Evolution

growth and glow-up timeline, fr:

  • 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) ๐Ÿฆ‹

SYNOPSIS

DESCRIPTION

  • EBCDIC vs ASCII
  • EBCDIC perl
  • Tools
    • native commands on z/OS, through the zopen community, at no cost from IBM
  • Building EBCDIC Perl on z/OS
    • Official stable release
    • Development release
  • Optimization
  • Installing other modules
  • Running EBCDIC Perl on z/OS

AUTHORS

HISTORY


perlos400 - Perl version 5 on OS/400

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

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

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

DESCRIPTION

BUILD

AUTHOR


perlsolaris - Perl version 5 on Solaris systems

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

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

that name is longer than my attention span but okay:

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

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

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

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-2026 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


DESCRIPTION

DESCRIPTION

DESCRIPTION

DESCRIPTION

DESCRIPTION

DESCRIPTION


๐Ÿ’– PRAGMA DOCUMENTATION ๐Ÿ’–

the pragma era, bestie. buckle up ๐ŸŽ€

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

the one that makes your functions โœจcareโœจ

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
bestie nota bene: yes it's spelled SYNPOSIS in here and I am NOT fixing it, that's the official energy ๐Ÿ’…

๐ŸŒธ 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 made easy

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
    • "args_array_with_signatures" โ€” allow @_ to be used in signatured subs
    • "array_base" โ€” allow the use of $[ to change the starting index of @array
    • "autoderef" โ€” allow push, each, keys, and other built-ins on references
    • "bitwise" โ€” allow the new stringwise bit operators
    • "builtin" โ€” allow the use of the functions in the builtin:: namespace
    • "const_attr" โ€” allow the :const attribute on subs
    • "class" โ€” enables the class, field, and method syntax
    • "declared_refs" โ€” enables aliasing via assignment to references
    • "defer" โ€” enables the use of defer blocks
    • "extra_paired_delimiters" โ€” enables the use of more paired string delimiters than the traditional four, "< >", "( )", "{ }", and "[ ]"
    • "for_list" โ€” allows iterating over multiple values at a time with for
    • "isa" โ€” allow the use of the isa infix operator
    • "keyword_all" โ€” enables the all operator
    • "keyword_any" โ€” enables the any operator
    • "lexical_topic" โ€” allow the use of lexical $_ via my $_
    • "lexical_subs" โ€” allow the use of lexical subroutines
    • "postderef" โ€” allow the use of postfix dereferencing expressions
    • "postderef_qq" โ€” allow the use of postfix dereferencing expressions inside interpolating strings
    • "re_strict" โ€” enables strict mode in regular expressions
    • "refaliasing" โ€” allow aliasing via "\$x = \$y"
    • "regex_sets" โ€” allow extended bracketed character classes in regexps
    • "signatures" โ€” allow subroutine signatures (for named arguments)
    • "smartmatch" โ€” allow the use of "~~"
    • "switch" โ€” allow the use of "~~", given, and when
    • "try" โ€” allow the use of "try" and "catch"
    • "win32_perlio" โ€” allows the use of the :win32 IO layer
    • Ordering matters
    • Disclaimer
  • SEE ALSO
  • AUTHOR
  • COPYRIGHT AND LICENSE

โšก feature โ€” Perl pragma to enable new features

  • SYNOPSIS
  • DESCRIPTION
    • Lexical effect
    • no feature
  • AVAILABLE FEATURES
    • The 'apostrophe_as_package_separator' feature
    • The 'array_base' feature
    • The 'bareword_filehandles' feature
    • The 'bitwise' feature
    • The 'class' feature
    • The 'current_sub' feature
    • The 'declared_refs' feature
    • The 'defer' feature
    • The 'enhanced_xx' feature
    • The 'evalbytes' feature
    • The 'extra_paired_delimiters' feature
    • The 'fc' feature
    • The 'indirect' feature
    • The 'isa' feature
    • The 'keyword_all' feature
    • The 'keyword_any' feature
    • The 'lexical_subs' feature
    • The 'module_true' feature
    • The 'multidimensional' feature
    • The 'postderef' and 'postderef_qq' features
    • The 'refaliasing' feature
    • The 'say' feature
    • The 'signatures' feature
    • The 'smartmatch' feature
    • The 'state' feature
    • The 'switch' feature
    • The 'try' feature
    • The 'unicode_eval' and 'evalbytes' features
    • The 'unicode_strings' 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

  • SYNOPSIS
  • DESCRIPTION
    • new
    • phash
  • SEE ALSO

๐Ÿ” filetest โ€” Perl pragma to control the filetest permission operators

  • SYNOPSIS
  • DESCRIPTION
    • Consider this carefully
    • The access sub-pragma
    • Limitation with regard to _

๐Ÿซถ if โ€” use a Perl module if a condition holds

  • SYNOPSIS
  • DESCRIPTION
    • use if
    • no if
  • BUGS
  • SEE ALSO
  • AUTHOR
  • COPYRIGHT AND LICENCE

๐Ÿ”ข integer โ€” Perl pragma to use integer arithmetic instead of floating point

  • SYNOPSIS
  • DESCRIPTION

less - perl pragma to request less of something

okay so this one is literally the "can u want less, bestie" pragma and the TOC for it goes like:

  • SYNOPSIS
  • DESCRIPTION
  • FOR MODULE AUTHORS
    • "BOOLEAN = less->of( FEATURE )"
    • "FEATURES = less->of()"
  • CAVEATS
    • This probably does nothing, This works only on 5.10+
the caveat literally says "this probably does nothing" and I'm obsessed with that level of honesty ๐Ÿ’€

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 - Perl pragma to use or avoid POSIX locales for built-in operations

  • SYNOPSIS
  • DESCRIPTION

mro - Method Resolution Order

this one is a whole saga, bestie, so buckle up:

  • 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 - Alternative to Test::More::use_ok

  • SYNOPSIS
  • DESCRIPTION
  • CC0 1.0 Universal

open - perl pragma to set default PerlIO layers for input and output

  • SYNOPSIS
  • DESCRIPTION
  • IMPLEMENTATION DETAILS
  • SEE ALSO

ops - Perl pragma to restrict unsafe operations when compiling

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO

overload - Package for overloading Perl operations

ngl this one is a whole curriculum:

  • 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 - perl pragma to lexically control overloading

  • SYNOPSIS
  • DESCRIPTION
    • "no overloading", "no overloading @ops", "use overloading", "use overloading @ops"

parent - Establish an ISA relationship with base classes at compile time

  • SYNOPSIS
  • DESCRIPTION
  • HISTORY
  • CAVEATS
  • SEE ALSO
    • base, parent::versioned
  • AUTHORS AND CONTRIBUTORS
  • MAINTAINER
  • LICENSE

re - Perl pragma to alter regular expression behaviour

this TOC? absolutely unhinged. iconic. here's every last crumb:

  • 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 - Perl pragma to enable 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 - perl pragma to control 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 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 - Perl pragma to restrict unsafe constructs

  • SYNOPSIS
  • DESCRIPTION
    • "strict refs", "strict vars", "strict subs"
  • HISTORY

subs - Perl pragma to predeclare subroutine names

  • SYNOPSIS
  • DESCRIPTION

threads - Perl interpreter-based threads

fr fr this is the longest one in the whole chunk, stay with me:

  • 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
    • $thr->kill('SIG...');
  • WARNINGS
    • 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
    • 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
    • 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
  • SEE ALSO
  • AUTHOR
  • LICENSE
  • ACKNOWLEDGEMENTS

threads::shared - Perl extension for sharing data structures between threads

  • 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

  • SYNOPSIS
  • DESCRIPTION

version - Perl extension for Version Objects

  • 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 ๐Ÿ’…

bestie this is the under the hood part of version โ€” the deep lore, the backstage pass. it's got:

  • Equivalence between Decimal and Dotted-Decimal Versions
  • Quoting Rules
  • What about v-strings?
  • Replacement UNIVERSAL::VERSION

USAGE DETAILS ๐ŸŒธ

how to actually live with it, day to day:

  • 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 ๐ŸŽ€

literally the whole function roster, no cap:

  • 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

the gig is here, bestie โ€” every module, every heading, catalogued. ๐Ÿ“


๐Ÿ“ฆ 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 ๐Ÿ’…

every single one of these, no skips:

  • "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

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 ๐Ÿ’–


๐Ÿ“ฆ Archive::Tar::File - a subclass for in-memory extracted file from Archive::Tar

SYNOPSIS

DESCRIPTION โœจ

  • Accessors
    • name, mode, uid, gid, size, mtime, chksum, type, linkname, magic, version, uname, gname, devmajor, devminor, prefix, raw
  • Methods
    • Archive::Tar::File->new( file => $path )
    • Archive::Tar::File->new( data => $path, $data, $opt )
    • Archive::Tar::File->new( chunk => $chunk )
    • $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
    • $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

VERSION

SYNOPSIS

DESCRIPTION โœจ

  • [0], [1], [2], [3], [4], [5], [6], [7]
  • Typed lexicals
  • Type-specific attribute handlers
  • Non-interpretive attribute handlers
  • Phase-specific attribute handlers
  • Attributes as "tie" interfaces

EXAMPLES ๐ŸŒŸ

UTILITY FUNCTIONS ๐Ÿ› ๏ธ

  • findsym

DIAGNOSTICS ๐Ÿฉบ

each of these, verbatim, because they're iconic:

  • "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

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

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 ๐Ÿ›๏ธ

  • SV-RELATED 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


okay bestie we are deep in the B module now, and the next lil chapter is straight up called โ€”

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


and now, the other little family โ€” PAD-RELATED CLASSES โœจ

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

okay THIS one is a whole mood ๐Ÿ’… walk the syntax tree, print concise info about ops, slay.

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

  • 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 -e 'print _POSIX_SAVED_IDS'
  • perl -MPOSIX -MO=Concise,a -e 'sub a{print _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

like, it takes your compiled self and gives you perl code back. iconic.

SYNOPSIS

DESCRIPTION

OPTIONS

  • -d, -fFILE, -l, -p, -P, -q, -sLETTERS, C, iNUMBER, T, vSTRING., -xLEVEL

USING B::Deparse AS A MODULE

  • Synopsis
  • Description
  • new
  • ambient_pragmas โ€” strict, $[, bytes, utf8, integer, re, warnings, hint_bits, warning_bits, %^H
  • ambient_pragmas_from_caller
  • coderef2text

BUGS

AUTHOR


B::Op_private - OP op_private flag definitions

SYNOPSIS

DESCRIPTION

  • %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

  • i, &, s, r

OPTIONS

  • -oFILENAME
  • -r
  • -d
  • -D[tO]

BUGS

AUTHOR


Benchmark - Benchmark running times of Perl code

okay so you wanna know what's slow. this is the whole thing for that. ๐Ÿ•

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

the big one. the one that goes out into the internet and gets you your modules. ๐Ÿ”ฅ

SYNOPSIS

DESCRIPTION

  • CPAN::shell([$prompt, $command]) Starting Interactive Mode
    • 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
  • 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

  • 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 so bestie, these are the methods hanging out in the other classes, and they are literally all here, no cap:

  • 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 ๐Ÿ—‚๏ธ

literally the cache manager, bestie. it's giving organized.

Bundles ๐ŸŽ€

bundle up, bestie. bundles are iconic.

PREREQUISITES โœจ

prereqs, we love a prerequisite.

UTILITIES ๐Ÿ› ๏ธ

Finding packages and VERSION ๐Ÿ”

finding packages and VERSION, so useful.

Debugging ๐Ÿ›

  • o debug package..
  • o debug -package..
  • o debug all
  • o debug number

Floppy, Zip, Offline Mode ๐Ÿ’พ

floppy, zip, offline mode, retro vibes.

Basic Utilities for Programmers ๐Ÿงฐ

  • has_inst($module)
  • use_inst($module)
  • has_usable($module)
  • instance($module)
  • frontend()
  • frontend($new_frontend)

SECURITY ๐Ÿ”’

Cryptographically signed modules ๐Ÿ”

cryptographically signed modules, so secure.

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) ๐Ÿค”

twenty FAQs, bestie. we love a good FAQ.

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 ๐Ÿ“

the config keys are literally: 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 ๐Ÿค

CPAN::Meta::Converter - Convert CPAN distribution metadata structures ๐Ÿ”„

VERSION ๐Ÿ”ข

SYNOPSIS ๐Ÿ“‹

DESCRIPTION ๐Ÿ“

METHODS ๐Ÿ› ๏ธ

  • new
  • convert
  • upgrade_fragment

BUGS ๐Ÿž

AUTHORS โœ๏ธ

CPAN::Meta::Feature - an optional feature provided by a CPAN distribution โœจ

VERSION ๐Ÿ”ข

DESCRIPTION ๐Ÿ“

METHODS ๐Ÿ› ๏ธ

  • new
  • identifier
  • description
  • prereqs

BUGS ๐Ÿž

AUTHORS โœ๏ธ

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 โœ๏ธ

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
  • 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 ๐Ÿ”ข

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

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_3 - Version 1.3 metadata specification 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 - Version 1.4 metadata specification 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

CPAN::Meta::Merge - Merging CPAN Meta fragments ๐Ÿงฌ

VERSION ๐Ÿ”ข

SYNOPSIS ๐Ÿ“‹

DESCRIPTION ๐Ÿ“

METHODS ๐Ÿ› ๏ธ

  • new
  • merge(@fragments)

MERGE STRATEGIES ๐Ÿง 

  • identical
  • set_addition
  • uniq_map
  • improvise

AUTHORS โœ๏ธ

๐ŸŒˆ CPAN::Meta::Prereqs โ€” a set of distribution prerequisites by phase and type

Bestie this one is exactly what it says โ€” it holds a whole set of dist prerequisites, sorted by phase and type. Obsessed. Here's the whole tour ๐Ÿ’ซ

  • 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

A little bundle of version requirements for a CPAN dist, no big deal ๐Ÿ’…

  • 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

Same deal, same description, it's the range girlie โœจ

  • 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 โ€” specification for CPAN distribution metadata

The actual spec, bestie โ€” the whole blueprint for CPAN distribution metadata. Main character energy for real ๐Ÿ”ฅ

  • 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

The vibe check for your metadata structures, fr fr ๐Ÿซถ

  • 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

Read and write a little YAML subset just for CPAN Meta files, slay ๐Ÿ’ซ

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • SUPPORT
  • SEE ALSO
  • AUTHORS
  • CONTRIBUTOR
  • COPYRIGHT AND LICENSE

๐Ÿ’€ (the mirror-obssessed one โ€” CPAN::Mirrors energy)

okay so this entry is giving mirror management, and I'm not even gonna pretend otherwise:

  • 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

๐Ÿงš CPAN::Nox โ€” Wrapper around CPAN.pm without using any XS module

It's a lil wrapper around CPAN.pm that refuses to touch any XS module. Purist behavior, honestly ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • LICENSE
  • SEE ALSO

โœจ CPAN::Plugin โ€” Base class for CPAN shell extensions

The base class for your CPAN shell extensions, no cap ๐Ÿ‘‘

  • SYNOPSIS
  • DESCRIPTION
    • Alpha Status
    • How Plugins work?
  • METHODS
    • plugin_requires
    • distribution_object
    • distribution
    • distribution_info
    • build_dir
    • is_xs
  • AUTHOR

๐ŸŽ€ CPAN::Plugin::Specfile โ€” Proof of concept implementation of a trivial CPAN::Plugin

A whole proof-of-concept implementation of a trivial CPAN::Plugin โ€” iconic ๐ŸŒˆ

  • SYNOPSIS
  • DESCRIPTION
    • OPTIONS
  • AUTHOR

๐Ÿ“ CPAN::Queue โ€” internal queue support for CPAN.pm

Internal queue support for CPAN.pm, iykyk ๐Ÿ”ฅ

  • LICENSE

๐Ÿฆ‹ CPAN::Tarzip โ€” internal handling of tar archives for CPAN.pm

Internal handling of tar archives for CPAN.pm โ€” the plumbing, bestie ๐Ÿ™ˆ

  • LICENSE

โญ CPAN::Version โ€” utility functions to compare CPAN versions

Utility functions to compare CPAN versions, cute and useful ๐Ÿ’–

  • SYNOPSIS
  • DESCRIPTION
  • LICENSE

๐Ÿ’… Carp โ€” alternative warn and die for modules

THE one, THE iconic โ€” an alternative warn and die for modules. Periodt ๐Ÿ‘‘

  • 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
  • LICENSE

๐ŸŒธ Class::Struct โ€” declare struct-like datatypes as Perl classes

Declaring struct-like datatypes as actual Perl classes?? We love to see it ๐Ÿ’œ

  • 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

๐ŸŽ€ Compress::Raw::Bzip2 โ€” Low-Level Interface to bzip2 compression library

Low-level interface to the bzip2 compression library โ€” get into the weeds with me ๐ŸŒฟ

  • 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 zlib or zlib-ng compression library

Low-level interface to zlib or zlib-ng, so you can go full gremlin mode on the compression internals ๐Ÿงš

  • 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

A friendlier (higher-level) interface to the zlib compression library ๐Ÿฆ‹

  • 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, =for comment Generated by configpm. Any changes made here will be lost!

okay so heads up bestie โ€” this one is literally generated by configpm, and any edits you make here are GONE. It says so right in the source ๐Ÿ’€

  • 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

๐Ÿ’œ GLOSSARY (continued)

  • P โ€” "PERL_API_REVISION", "PERL_API_SUBVERSION", "PERL_API_VERSION", "PERL_CONFIG_SH", "PERL_PATCHLEVEL", "PERL_REVISION", "PERL_SUBVERSION", "PERL_VERSION"
  • _ โ€” "_a", "_exe", "_o"

okay bestie, the list is still list-ing and we're deep in the alphabet. no thoughts, just names. not me being obsessed with how many of these there are. ๐Ÿ’…

  • a โ€” the a-team pulled up with: "afs", "afsroot", "alignbytes", "aphostname", "api_revision", "api_subversion", "api_version", "api_versionstring", "ar", "archlib", "archlibexp", "archname", "archname64", "archobjs", "asctime_r_proto", "awk" โœจ
  • b โ€” b said hold my iced coffee: "baserev", "bash", "bin", "bin_ELF", "binexp", "bison", "byacc", "byteorder" ๐ŸŽ€
  • c โ€” c is giving compiler-core chaos and we love that for her: "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" ๐Ÿฆ‹
  • d โ€” okay this one is literally the main character. it's huge. buckle up, bestie, because d said โ€œlet me introduce myselfโ€ and then never stopped: "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", "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", "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", "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", "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", "d_gai_strerror", "d_gdbm_ndbm_h_uses_prototypes", "d_gdbmndbm_h_uses_prototypes", "d_getaddrinfo", "d_getcwd", "d_getentropy", "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", "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", "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", "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", "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", "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" ๐Ÿ’€
  • e โ€” and e closed the set like the icon she is: "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" ๐Ÿซถ

and thatโ€™s the a-through-e situation, bestie. the alphabet is far from over, so weโ€™ll keep scrolling. ๐ŸŒˆ

still deep in the giant alphabetical name-dump we've been doing โ€” here comes f all the way down to z, zero skips, zero shortcuts ๐Ÿ’…

  • f โ€” "fflushNULL", "fflushall", "find", "firstmakefile", "flex", "fpossize", "fpostype", "freetype", "from", "full_ar", "full_csh", "full_sed"
  • 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"
  • h โ€” "h_fcntl", "h_sysfile", "hint", "hostcat", "hostgenerate", "hostosname", "hostperl", "html1dir", "html1direxp", "html3dir", "html3direxp"
  • i โ€” "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_stdckdint", "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_sysrandom", "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", "intmaxsize", "intsize", "issymlink", "ivdformat", "ivsize", "ivtype"
  • k โ€” "known_extensions", "ksh"
  • l โ€” "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", "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 โ€” "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 โ€” "o_nonblock", "obj_ext", "old_pthread_create_joinable", "optimize", "orderlib", "osname", "osvers", "otherlibdirs"
  • p โ€” "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 โ€” "quadkind", "quadtype"
  • r โ€” "randbits", "randfunc", "random_r_proto", "randseedtype", "ranlib", "rd_nodata", "readdir64_r_proto", "readdir_r_proto", "revision", "rm", "rm_try", "rmail", "run", "runnm"
  • s โ€” "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 โ€” "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 โ€” "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 โ€” "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 โ€” "zcat", "zip"

๐Ÿ› ๏ธ GIT DATA

bestie this one's a heading with literally nothing hanging off it in the TOC โ€” the real words live in the full page, we're just cataloguing here ๐Ÿ’…

๐Ÿ“Œ NOTE

same situation, icon of a heading and no sub-entries. noted. literally. โœจ


๐Ÿฃ Config::Extensions - hash lookup of which core extensions were built.

๐Ÿ“– SYNOPSIS

๐Ÿ“ DESCRIPTION

  • the three flavors on the menu: 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

still deep in the module tour, bestie โ€” we're only at part 44 and there's so much more, buckle up ๐Ÿ’…โœจ

๐Ÿฆ‹ DBM_Filter::null โ€” a filter for DBM_Filter

the little table of contents it's serving:

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • AUTHOR

๐Ÿฆ‹ DBM_Filter::utf8 โ€” a filter for DBM_Filter

same energy, same sections:

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • AUTHOR

๐Ÿ”ฅ DB_File โ€” Perl access to Berkeley DB 1.x

okay this one is big big, it's giving main character. here's everything it has to offer:

  • SYNOPSIS
  • DESCRIPTION, and under it:
    • 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
      • the whole roster, exactly as printed:
$X->push(list) ;, $value = $X->pop ;, $X->shift, $X->unshift(list) ;, $X->length, $X->splice(offset, length, elements);
  • Another Example
  • THE API INTERFACE
    • and the method signatures, no cap:
$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
      • 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
    • Safe ways to lock a database
      • Tie::DB_Lock, Tie::DB_LockFile, DB_File::Lock
    • Sharing Databases With C Applications
    • The untie() Gotcha
  • 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

the icon that stringifies everything. inside:

  • 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

the XS bestie. here's its whole map:

  • 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
      • literally every version, in order, fr fr:
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), Backported version unknown
  • BUGS
  • AUTHORS
  • COPYRIGHT
  • SEE ALSO

โญ Devel::Peek โ€” A data debugging tool for the XS programmer

peek behind the curtain, bestie ๐Ÿ‘€:

  • 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

short and sweet, it's giving minimal:

  • SYNOPSIS
  • DESCRIPTION

๐Ÿงš Digest โ€” Modules that calculate message digests

the parent class of all the hash-y besties:

  • SYNOPSIS
  • DESCRIPTION
    • binary, hex, base64
  • OO INTERFACE
    • every method, spelled out:
$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

the classic. here's the layout:

  • 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

so many algorithm flavors, obsessed:

  • SYNOPSIS
  • SYNOPSIS (HMAC-SHA)
  • ABSTRACT
  • DESCRIPTION
  • UNICODE AND SIDE EFFECTS
  • NIST STATEMENT ON SHA-1
  • PADDING OF BASE64 DIGESTS
  • EXPORT
  • EXPORTABLE FUNCTIONS
    • the full function list, every single one, periodt:
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

the foundation, the blueprint:

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO

๐Ÿ’… Digest::file โ€” Calculate digests of files

yes, it digests whole files, slay:

  • SYNOPSIS
  • DESCRIPTION
    • the three helpers, exactly:
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

heads up bestie: this one is marked obsolete, so lowkey don't build anything new on it ๐Ÿ’€
  • SYNOPSIS
  • DESCRIPTION

๐Ÿ“ Dumpvalue โ€” provides screen dump of Perl data.

so much config, honestly iconic:

  • SYNOPSIS
  • DESCRIPTION
    • Creation
      • the whole knob list, exactly as listed (and yes, quoteHighBit shows up twice โ€” keep it both times, no cap):
"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

loading C libs into Perl like it's nothing:

  • SYNOPSIS
  • DESCRIPTION
    • the globals and functions, all of them:
@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

the encoding queen, huge and beloved:

  • 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 โ€” the eternal identity-crisis subsection ๐Ÿ’€ (three different strings, three different lives, iykyk)
  • SEE ALSO โ€” where she points you at the other docs ๐Ÿ‘€
  • MAINTAINER โ€” who's actually holding this whole thing down ๐Ÿซถ
  • COPYRIGHT โ€” legal stuff, read it and be normal about it โœจ

๐Ÿ’– Encode::Alias โ€” alias definitions to encodings

bestie this one's all about giving your encodings cute little nicknames so you don't have to type the whole government name every time ๐ŸŽ€

  • SYNOPSIS
  • DESCRIPTION โ€” and inside it she goes through the ways you can define an alias, one vibe at a time:
    • As a simple string โ€” the chill, low-effort way ๐Ÿ“
    • As a qr// compiled regular expression, e.g.: โ€” for when you need pattern-matching energy โœจ
    • As a code reference, e.g.: โ€” the full main character move, custom logic and all ๐Ÿ‘‘
    • Alias overloading โ€” yes you can stack em ๐Ÿ’…
  • SEE ALSO

๐ŸŒธ Encode::Byte โ€” Single Byte Encodings

one byte at a time, no multibyte drama here ๐ŸŒˆ

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • SEE ALSO

๐Ÿงš Encode::CJKConstants -- Internally used by Encode::??::ISO_2022_*

internal plumbing, not your business fr ๐Ÿ™ˆ

๐Ÿซถ Encode::CN โ€” China-based Chinese Encodings

  • SYNOPSIS
  • DESCRIPTION
  • NOTES
  • BUGS
  • SEE ALSO

๐Ÿ’œ Encode::CN::HZ -- internally used by Encode::CN

more internal stuff, move along bestie ๐Ÿ’€

๐ŸŒŸ Encode::Config -- internally used by Encode

yes. also internal. โœจ

๐Ÿฆ‹ Encode::EBCDIC โ€” EBCDIC Encodings

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • SEE ALSO

๐ŸŽ€ Encode::Encoder -- Object Oriented Encoder

ooh she's the fancy OO one, literally giving object-oriented ๐Ÿ’…

  • SYNOPSIS
  • ABSTRACT
  • Description
    • Predefined Methods โ€” $e = Encode::Encoder->new([$data, $encoding]);, encoder(), $e->data([$data]), $e->encoding([$encoding]), $e->bytes([$encoding])
    • Example: base64 transcoder
    • Operator Overloading
  • SEE ALSO

๐Ÿ”ฅ Encode::Encoding โ€” Encode Implementation Base Class

the blueprint bestie, this is where you learn what you gotta implement if you're building your own ๐Ÿงš

  • SYNOPSIS
  • DESCRIPTION
    • Methods you should implement โ€” ->encode($string [,$check]), ->decode($octets [,$check]), ->cat_decode($destination, $octets, $offset, $terminator [,$check])
    • Other methods defined in Encode::Encodings โ€” ->name, ->mime_name, ->renew, ->renewed, ->perlio_ok(), ->needs_lines()
    • Example: Encode::ROT13
  • Why the heck Encode API is different?
    • Compiled Encodings
  • SEE ALSO
    • Scheme 1, Scheme 2, Other Schemes

๐Ÿ’œ Encode::GSM0338 -- ETSI GSM 03.38 Encoding

  • SYNOPSIS
  • DESCRIPTION
    • Septets
  • BUGS
  • SEE ALSO

๐Ÿ‘‘ Encode::Guess -- Guesses encoding from data

she's the detective fr fr, she looks at your bytes and is like "yeah I know what you are" ๐Ÿ•ต๏ธโ€โ™€๏ธ

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
    • Encode::Guess->set_suspects, Encode::Guess->add_suspects, Encode::decode("Guess" ...), Encode::Guess->guess($data), guess_encoding($data, [, list of suspects])
  • CAVEATS
  • TO DO
  • SEE ALSO

๐ŸŒธ Encode::JP โ€” Japanese Encodings

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • Note on ISO-2022-JP(-1)?
  • BUGS
  • SEE ALSO

๐ŸŒˆ Encode::JP::H2Z -- internally used by Encode::JP::2022_JP*

internal, but make it Japanese ๐Ÿ’…

โญ Encode::JP::JIS7 -- internally used by Encode::JP

also internal, also vibing โœจ

๐Ÿ’– Encode::KR โ€” Korean Encodings

  • SYNOPSIS
  • DESCRIPTION
  • BUGS
  • SEE ALSO

๐Ÿซถ Encode::KR::2022_KR -- internally used by Encode::KR

yep, internal again ๐Ÿ˜Œ

๐ŸŽ€ Encode::MIME::Header -- MIME encoding for an unstructured email header

emails but make it encoded ๐Ÿ“งโœจ

  • SYNOPSIS
  • ABSTRACT
  • DESCRIPTION
  • BUGS
  • AUTHORS
  • SEE ALSO

๐Ÿงš Encode::MIME::Name, Encode::MIME::NAME -- internally used by Encode

(not her having two names with different capitalisation โ€” lowercase core, uppercase era ๐Ÿ’€)

  • SEE ALSO

๐Ÿฆ‹ Encode::PerlIO -- a detailed document on Encode and PerlIO

she said "let me explain the WHOLE thing" and honestly? respect ๐Ÿ‘‘

  • Overview
  • How does it work?
  • Line Buffering
    • How can I tell whether my encoding fully supports PerlIO ?
  • SEE ALSO

๐ŸŒŸ Encode::Supported -- Encodings supported by Encode

okay this is the big one, the master list, the phone book bestie ๐Ÿ“–โœจ

  • 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
    • 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
    • Miscellaneous encodings
      • Encode::EBCDIC, Encode::Symbol, Encode::MIME::Header, Encode::Guess
  • Unsupported encodings
    • 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
  • Encoding Classification (by Anton Tagunov and Dan Kogai)
    • Microsoft-related naming mess
      • 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
  • 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

๐Ÿ’œ 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
    • by size
    • by endianness
      • BOM as integer when fetched in network byte order
  • Surrogate Pairs
  • Error Checking
  • SEE ALSO

๐Ÿงš Encode::Unicode::UTF7 -- UTF-7 encoding

  • SYNOPSIS
  • ABSTRACT
  • In Practice
  • SEE ALSO

๐ŸŽ€ English - use nice English (or awk) names for ugly punctuation variables

she's literally the glow-up arc for your $! and $@ and all those cryptic little punctuation gremlins ๐Ÿ’…โœจ

  • SYNOPSIS
  • DESCRIPTION
  • PERFORMANCE

๐Ÿซถ Env - perl module that imports environment variables as scalars or arrays

your env vars but as actual perl variables, so convenient fr ๐Ÿ’œ

  • SYNOPSIS
  • DESCRIPTION
  • LIMITATIONS
  • AUTHOR

๐ŸŒŸ Errno - System errno constants

  • SYNOPSIS
  • DESCRIPTION
  • CAVEATS
  • AUTHOR
  • COPYRIGHT

๐Ÿ‘‘ Exporter - Implements default import method for modules

THEE exporter, the one, the only, the reason use Thing qw(stuff) even works ๐Ÿ’– periodt

  • SYNOPSIS
  • DESCRIPTION
    • How to Export
    • Selecting What to Export
    • How to Import
      • "use YourModule;", "use YourModule ();", "use YourModule qw(...);"
  • 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
  • Good Practices
    • Declaring @EXPORT_OK and Friends
    • Playing Safe
    • What Not to Export
  • SEE ALSO
  • LICENSE

๐Ÿฆ‹ Exporter::Heavy - Exporter guts

the lore behind the icon, the internal organs, if you will ๐Ÿ’€

  • SYNOPSIS
  • DESCRIPTION

C compilation but from perl, bestie's doing cross-language communication ๐Ÿซถ

  • 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
  • TO DO
  • HISTORY
  • SUPPORT
  • AUTHOR
  • COPYRIGHT
  • SEE ALSO

๐ŸŒˆ ExtUtils::CBuilder::Platform::Windows - Builder class for Windows platforms

windows-specific flavour, she said "pc rights" ๐ŸชŸโœจ

  • DESCRIPTION
  • AUTHOR
  • SEE ALSO

๐Ÿ’– ExtUtils::Command - utilities to replace common UNIX commands in Makefiles etc.

your fave unix commands but rebuilt so Makefiles can call them, iconic behaviour honestly ๐Ÿ’…

  • 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

generating XS to yoink constants out of C headers, gatekeeping who? not her ๐Ÿงš

  • SYNOPSIS
  • DESCRIPTION
  • USAGE
    • IV, UV, NV, PV, PVN, SV, YES, NO, UNDEF
  • 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

the base class, the mother, the blueprint ๐ŸŒธ

  • 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..
  • 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

the little helpers, unsung heroes honestly ๐Ÿ˜ญ

  • 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

shoving perl inside your C/C++ app like a little matryoshka doll ๐Ÿช†โœจ

  • SYNOPSIS
  • DESCRIPTION
  • @EXPORT
  • FUNCTIONS
    • xsinit(), Examples, ldopts(), Examples, perl_inc(), ccflags(), ccdlflags(), ccopts(), xsi_header(), xsi_protos(@modules), xsi_body(@modules)
  • EXAMPLES
  • SEE ALSO
  • AUTHOR

๐Ÿฆ‹ ExtUtils::Install - install files from here to there

the mover and shaker, literally moving your files from here to there ๐Ÿ’…

  • SYNOPSIS
  • VERSION
  • DESCRIPTION
    • _chmod($$;$)
    • _warnonce(@)
    • _choke(@)
  • _move_file_at_boot( $file, $target, $moan )
  • _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
  • AUTHOR
  • LICENSE

๐ŸŽ€ ExtUtils::Installed - Inventory management of installed modules

keeping receipts on everything you've installed, she's organised fr ๐Ÿ—‚๏ธโœจ

  • 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

figuring out which libraries you need and how you need them, the matchmaker of it all ๐Ÿ’–

  • SYNOPSIS
  • DESCRIPTION
    • For static extensions, For dynamic extensions at build/link time, For dynamic extensions at load time
    • EXTRALIBS
    • LDLOADLIBS and LD_RUN_PATH
    • BSLOADLIBS

kay so that entry's tail end is literally just these last few bits:

  • PORTABILITY
    • VMS implementation
    • Win32 implementation
  • SEE ALSO

ExtUtils::MM โ€” OS adjusted ExtUtils::MakeMaker subclass

the vibes-adjuster for whatever OS you're on ๐Ÿ’… it's got:

  • SYNOPSIS
  • DESCRIPTION

ExtUtils::MM_AIX โ€” AIX specific subclass of ExtUtils::MM_Unix

AIX girlies, this one is for you โœจ

  • SYNOPSIS
  • DESCRIPTION
    • Overridden methods
  • AUTHOR
  • SEE ALSO

ExtUtils::MM_Any โ€” Platform-agnostic MM methods

no cap, this one doesn't care what platform you're on ๐Ÿฆ‹

  • 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

the "back in my day" module, lowkey iconic ๐ŸŽ€

  • 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

(yes, "Overriden" is spelled like that in the source, we don't fix it, we respect it ๐Ÿ™ˆ)

  • 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

okay bestie, buckle UP, this list is long and we are listing every single one, no skips ๐Ÿ’–

  • 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

VMS said "let me do my own thing" and honestly? slay ๐Ÿ’…

  • 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

another absolute unit of a list, we're doing all of it ๐Ÿซถ

  • 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

singular "method", it's a whole one-method situation, minimalist queen ๐Ÿงš

  • 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

THE main character module, no exaggeration ๐Ÿ‘‘ this is the whole "write a Makefile.PL and let it cook" situation. Contents:

  • 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
      • 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

the "bestie I already googled this" section ๐Ÿ’œ

  • 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'"

Okay so real talk โ€” this bit is the deep-lore section. We're still scrolling through the module docs, and it's giving โœจindex energyโœจ. Buckle up bestie, no skipping, every single entry stays ๐Ÿ’…


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 ๐ŸŽ€

  • MakeMaker object hierarchy (simplified)
  • MakeMaker object hierarchy (real)
  • The MM_* hierarchy

PATCHING ๐Ÿ”ง

  • 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


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 Abstract Syntax Tree ๐ŸŒณ

SYNOPSIS

DESCRIPTION

Methods

  • $pxs
  • $xsub
  • $xbody

Class Hierachy

Abstract Syntax Tree structure


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)"

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)"
  • "$self->deathHint(@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

"looks like_MODULE_line($line)"


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 โ€” the little knobs you can play with, bestie ๐Ÿ‘‘

  • $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 ๐Ÿ’ฌ โ€” the group chat receipts:

  • 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 ๐Ÿซถ

COPYRIGHT ยฉ๏ธ


๐ŸŒณ File::Find โ€” Traverse a directory tree.

SYNOPSIS

DESCRIPTION

  • find, finddepth
  • %options
    • "wanted", "bydepth", "preprocess", "postprocess", "follow", "follow_fast", "follow_skip", "dangling_symlinks", "no_chdir", "untaint", "untaint_pattern", "untaint_skip"
  • The wanted function
    • $File::Find::dir is the current directory name,, $_ is the current filename within that directory, $File::Find::name is the complete pathname to the file

WARNINGS

BUGS AND CAVEATS

  • $dont_use_nlink, Symlinks

HISTORY

SEE ALSO


๐ŸŒ€ File::Glob โ€” Perl extension for BSD glob routine

SYNOPSIS

DESCRIPTION

  • META CHARACTERS
  • EXPORTS
  • POSIX FLAGS
    • "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"

NOTES

SEE ALSO

AUTHOR


๐Ÿงฉ File::GlobMapper โ€” Extend File Glob to Allow Input and Output Files

SYNOPSIS

DESCRIPTION

  • Behind The Scenes
  • Limitations
  • Input File Glob
    • ~, ~user, ., *, ?, \, [], {}, ()
  • Output File Glob
    • "*", #1
  • Returned Data

EXAMPLES

  • A Rename script
  • A few example globmaps

SEE ALSO

AUTHOR

COPYRIGHT AND LICENSE


๐Ÿ› ๏ธ File::Path โ€” Create or remove directory trees

VERSION

SYNOPSIS

DESCRIPTION

  • 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
    • NOTE:
  • NOTES

DIAGNOSTICS โ€” fr fr the whole drama list, every single line:

  • 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

SEE ALSO

BUGS AND LIMITATIONS

  • MULTITHREADED APPLICATIONS
  • NFS Mount Points
  • REPORTING BUGS

ACKNOWLEDGEMENTS

AUTHORS

CONTRIBUTORS

  • <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>

COPYRIGHT

LICENSE


๐ŸŒˆ File::Spec โ€” portably perform operations on file names

SYNOPSIS

DESCRIPTION

METHODS

  • 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

COPYRIGHT


๐Ÿ“ 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

COPYRIGHT


๐Ÿฆ‹ File::Spec::Epoc โ€” methods for Epoc file specs

SYNOPSIS

DESCRIPTION

canonpath()

AUTHOR

COPYRIGHT

SEE ALSO


โœจ File::Spec::Functions โ€” portably perform operations on file names

SYNOPSIS

DESCRIPTION

  • Exports

COPYRIGHT

SEE ALSO


๐ŸŽ€ File::Spec::Mac โ€” File::Spec for Mac OS (Classic)

SYNOPSIS

DESCRIPTION

METHODS

  • canonpath

catdir()

catfile

curdir

devnull

rootdir

tmpdir

updir

file_name_is_absolute

path

splitpath

splitdir

catpath

abs2rel

rel2abs

AUTHORS

COPYRIGHT

SEE ALSO


๐Ÿงš File::Spec::OS2 โ€” methods for OS/2 file specs

SYNOPSIS

DESCRIPTION

  • tmpdir, splitpath

COPYRIGHT


๐ŸŒŠ File::Spec::Unix โ€” File::Spec for Unix, base for other File::Spec modules

SYNOPSIS

DESCRIPTION

METHODS

  • canonpath()

catdir()

catfile

curdir

devnull

rootdir

tmpdir

updir

no_upwards

case_tolerant

file_name_is_absolute

path

join

splitpath

splitdir

catpath()

abs2rel

rel2abs()

COPYRIGHT

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)

COPYRIGHT

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

COPYRIGHT

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

COPYRIGHT AND LICENSE


๐Ÿ“Š 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
    • "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

COPYRIGHT AND LICENSE


๐Ÿงช Filter::Util::Call โ€” Perl Source Filter Utility Module

SYNOPSIS

DESCRIPTION

  • use Filter::Util::Call
  • import()
  • filter_add()
  • filter() and anonymous sub
    • $_, $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

COPYRIGHT


๐Ÿ—„๏ธ GDBM_File โ€” Perl5 access to the gdbm library.

SYNOPSIS

DESCRIPTION

  • Tie GDBM_READER, GDBM_WRITER, GDBM_WRCREAT, GDBM_NEWDB

STATIC METHODS

  • GDBM_version
    • 1 - exact guess, 2 - approximate, 3 - rough guess

ERROR HANDLING

Because sometimes the db is going through it and you need the receipts ๐Ÿ’…:

  • $GDBM_File::gdbm_errno
  • gdbm_check_syserr

DATABASE METHODS

The whole toolkit, bestie โ€” every method your handle fesses up to, in this exact order:

  • 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 it takes its own little crew of settings:
    • 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
    • binary => 1, mode => MODE, overwrite => 1
  • load
    • replace => 1, restore_mode => 0 | 1, restore_owner => 0 | 1, strict_errors => 1

CRASH TOLERANCE

For when the machine said "not today" and you gotta figure out what survived ๐Ÿซถ:

  • crash_tolerance_status
  • failure_atomic
  • latest_snapshot
    • GDBM_SNAPSHOT_BAD, GDBM_SNAPSHOT_ERR, GDBM_SNAPSHOT_SAME, GDBM_SNAPSHOT_SUSPICIOUS

AVAILABILITY

The TOC just parks the heading here, nothing nested under it.

SECURITY AND PORTABILITY

Same deal โ€” heading only, no sub-entries listed.

SEE ALSO

Also heading only in this table of contents. iykyk ๐Ÿ˜Œ


Getopt::Long - Extended processing of command line options

The icon of the command-line parsing world, fr fr. Here's the map ๐Ÿ—บ๏ธ:

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)
Heads up: a bunch of those come with defaults already set, so don't go assuming everything's off ๐Ÿ’€

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

The four classics everyone googles at 2am ๐Ÿ˜ญ:

  • 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


Getopt::Long::Parser - Getopt::Long object-oriented interface

Same energy, but with objects. Main character behaviour โœจ

SYNOPSIS

DESCRIPTION

CONSTRUCTOR

  • config

METHODS

  • configure

getoptionsfromarray

getoptions

SEE ALSO

AUTHOR


Getopt::Std - Process single-character switches with switch clustering

Short flags, clustered together like besties at a sleepover ๐ŸŽ€

SYNOPSIS

DESCRIPTION

"--help" and "--version"


HTTP::Tiny - A small, simple, correct HTTP/1.1 client

Tiny by name, correct by nature ๐Ÿ’–

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


Hash::Util - A selection of general-utility hash subroutines

All the hash-handling goodies. Buckle up, it's a long list ๐Ÿฆ‹

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

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?? The drama, the intrigue ๐Ÿ˜ณ Here's the whole tour:

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


I18N::Collate - compare 8-bit scalar data according to the current locale

SYNOPSIS

DESCRIPTION


I18N::LangTags - functions for dealing with RFC3066-style language tags

Language tags!!! ๐ŸŒˆ The whole toolkit:

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

AUTHOR


I18N::LangTags::Detect - detect the user's language preferences

Figuring out what language someone actually wants, no cap ๐Ÿซถ

SYNOPSIS

DESCRIPTION

FUNCTIONS

ENVIRONMENT

SEE ALSO

AUTHOR

๐Ÿ’– I18N::LangTags::List โ€” tags and names for human languages

okay so this one's the actual dictionary entry in the toc, bestie, and it's a big one. It's the listing for the I18N::LangTags::List manpage, and it's giving "I memorized every language code ever" energy. Let's go. ๐ŸŒ


โœจ SYNOPSIS โœจ

(perltoc just drops the heading here โ€” the full page has the goods)

๐Ÿ’ซ DESCRIPTION ๐Ÿ’ซ

(same deal, heading only in the toc)

๐ŸŒธ ABOUT LANGUAGE TAGS ๐ŸŒธ

(heading only in the toc โ€” no body listed)


๐Ÿ‘‘ LIST OF LANGUAGES ๐Ÿ‘‘

Alright bestie, deep breath. This is the whole roster, exactly as listed โ€” every tag, every name, every collective group in brackets. Circle tags like {...} are the individual language tags; the bracketed ones are the group/collective tags for a whole family. Don't skip a single one, they're all here:

  • {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

Okay that was A LOT. You ate that. ๐Ÿ’…


๐Ÿ” SEE ALSO ๐Ÿ”

(heading only in the toc)

(heading only in the toc)

โœ๏ธ AUTHOR โœ๏ธ

(heading only in the toc)


๐Ÿฆ‹ I18N::Langinfo โ€” query locale information ๐Ÿ‘‘

๐Ÿ“œ SYNOPSIS

๐ŸŒ DESCRIPTION

ok bestie, here's the whole menu of constants this thing can hand you โ€” every single one, no skips ๐Ÿ’…:

  • "-"
  • "+"
  • "."
  • "_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 โ€” if your box is missing that, the list gets its own little set instead, lowkey a whole different vibe:

  • "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


๐Ÿ“ฆ IO โ€” load various IO modules ๐ŸŽ€

๐Ÿ“œ SYNOPSIS

๐Ÿ’ฌ DESCRIPTION

๐Ÿ’€ DEPRECATED


๐Ÿ—œ๏ธ IO::Compress โ€” read/write compressed data in multiple formats โœจ

๐Ÿ’ฌ DESCRIPTION

โœ๏ธ AUTHOR


๐Ÿงฑ IO::Compress::Base โ€” Base Class for IO::Compress modules ๐Ÿซถ

๐Ÿ“œ SYNOPSIS

๐Ÿ’ฌ DESCRIPTION

๐Ÿ†˜ SUPPORT

๐Ÿ‘€ SEE ALSO

โœ๏ธ AUTHOR

๐Ÿ“ MODIFICATION HISTORY


๐Ÿ“ IO::Compress::Bzip2 โ€” Write bzip2 files/buffers ๐Ÿ”ฅ

๐Ÿ“œ SYNOPSIS

๐Ÿ’ฌ DESCRIPTION

๐Ÿ› ๏ธ Functional Interface

  • bzip2 $input_filename_or_reference => $output_filename_or_reference [, OPTS]

the ways you can hand in your input, in order, no cap:

  • A filename
  • A filehandle
  • A scalar reference
  • An array reference
  • An Input FileGlob string

and the ways it can spit stuff back out:

  • 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 โ€” you can give it:

  • 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


๐Ÿƒ IO::Compress::Deflate โ€” Write RFC 1950 files/buffers ๐Ÿ’–

๐Ÿ“œ SYNOPSIS

๐Ÿ’ฌ DESCRIPTION

๐Ÿ› ๏ธ Functional Interface

  • deflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]

your input options, bestie:

  • A filename
  • A filehandle
  • A scalar reference
  • An array reference
  • An Input FileGlob string

and your output options:

  • 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 โ€” hand it one of these:

  • 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


โ“ IO::Compress::FAQ โ€” Frequently Asked Questions about IO::Compress ๐Ÿฆ‹

๐Ÿ’ฌ 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


๐Ÿซง IO::Compress::Gzip โ€” Write RFC 1952 files/buffers ๐ŸŽ€

๐Ÿ“œ SYNOPSIS

๐Ÿ’ฌ DESCRIPTION

๐Ÿ› ๏ธ Functional Interface

  • gzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]

stuff you can feed in:

  • A filename
  • A filehandle
  • A scalar reference
  • An array reference
  • An Input FileGlob string

stuff it writes to:

  • 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 โ€” pick your fighter:

  • 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


๐Ÿชถ IO::Compress::RawDeflate โ€” Write RFC 1951 files/buffers ๐Ÿ’œ

๐Ÿ“œ SYNOPSIS

๐Ÿ’ฌ DESCRIPTION

๐Ÿ› ๏ธ Functional Interface

  • rawdeflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]

input side, bestie:

  • A filename
  • A filehandle
  • A scalar reference
  • An array reference
  • An Input FileGlob string

output side:

  • 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 โ€” one of these, please and thank you:

  • 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


๐Ÿ—‚๏ธ IO::Compress::Zip โ€” Write zip files/buffers ๐Ÿ‘‘

๐Ÿ“œ SYNOPSIS

๐Ÿ’ฌ DESCRIPTION

the methods it fw, periodt:

  • Store (0)
  • Deflate (8)
  • Bzip2 (12)
  • Lzma (14)
  • Zstandard (93)
  • Xz (95)

๐Ÿ› ๏ธ Functional Interface

  • zip $input_filename_or_reference => $output_filename_or_reference [, OPTS]

everything you can pass in on the input side:

  • 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

and on the output side:

  • 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 โ€” feed it one of:

  • 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

okay bestie we're literally mid-method-list for this one and I'm not about to leave you hanging โ€” here's every single one, no cap ๐Ÿซถ

  • print
  • printf
  • syswrite
  • write
  • flush
  • tell
  • eof
  • seek
  • binmode
  • opened
  • autoflush
  • input_line_number
  • fileno
  • close
  • newStream([OPTS])
  • deflateParams

๐ŸŽ€ Importing ๐ŸŽ€

the little tags you can yank in ๐Ÿ’…

  • :all
  • :constants
  • :flush
  • :level
  • :strategy
  • :zip_method

๐Ÿ”ฅ EXAMPLES ๐Ÿ”ฅ

  • Apache::GZip Revisited
  • Working with Net::FTP

๐Ÿ’œ SUPPORT ๐Ÿ’œ

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

๐ŸŒธ AUTHOR ๐ŸŒธ

โญ MODIFICATION HISTORY โญ

(yes queen, this one really does have all of those sections, we're not skipping a crumb)


๐Ÿ’– IO::Dir โ€” supply object methods for directory handles ๐Ÿ’–

a whole lil module so your directory handles can be objects, obsessed

๐ŸŒŸ SYNOPSIS ๐ŸŒŸ

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

  • new ( [ DIRNAME ] )
  • open ( DIRNAME )
  • read ()
  • seek ( POS )
  • tell ()
  • rewind ()
  • close ()
  • tie %hash, 'IO::Dir', DIRNAME [, OPTIONS ]

๐Ÿ”ฎ SEE ALSO ๐Ÿ”ฎ

โœจ AUTHOR โœจ


๐Ÿฆ‹ IO::File โ€” supply object methods for filehandles ๐Ÿฆ‹

filehandles but make them object girlies, periodt

๐ŸŒŸ SYNOPSIS ๐ŸŒŸ

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

๐Ÿ“ CONSTRUCTOR ๐Ÿ“

  • new ( FILENAME [,MODE [,PERMS]] )
  • new_tmpfile

โœจ METHODS โœจ

  • open( FILENAME [,MODE [,PERMS]] )
  • open( FILENAME, IOLAYERS )

๐Ÿ’œ NOTE ๐Ÿ’œ

๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

๐Ÿ“œ HISTORY ๐Ÿ“œ


๐ŸŒˆ IO::Handle โ€” supply object methods for I/O handles ๐ŸŒˆ

the blueprint handle behaviour, iconic

๐ŸŒŸ 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 โ€” supply object methods for pipes ๐Ÿงš

pipes!! little tubes of data, main character energy fr

๐ŸŒŸ SYNOPSIS ๐ŸŒŸ

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

๐Ÿ“ CONSTRUCTOR ๐Ÿ“

  • new ( [READER, WRITER] )

โœจ METHODS โœจ

  • reader ([ARGS])
  • writer ([ARGS])
  • handles ()

๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

๐ŸŒธ AUTHOR ๐ŸŒธ


โญ IO::Poll โ€” Object interface to system poll call โญ

object wrapper for poll, lowkey so handy

๐ŸŒŸ SYNOPSIS ๐ŸŒŸ

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

โœจ METHODS โœจ

  • mask ( IO [, EVENT_MASK ] )
  • poll ( [ TIMEOUT ] )
  • events ( IO )
  • remove ( IO )
  • handles( [ EVENT_MASK ] )

๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

๐ŸŒธ AUTHOR ๐ŸŒธ


๐ŸŽ€ IO::Seekable โ€” supply seek based methods for I/O objects ๐ŸŽ€

for when your I/O object needs to move, slay

๐ŸŒŸ 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 โ€” OO interface to the "select" system call ๐Ÿ’…

select but dressed up as an object, we love a glow up

๐ŸŒŸ 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 to socket communications ๐Ÿฆ‹

the big socket mama, everything networking starts here ngl

๐ŸŒŸ 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 sockets, the classic ๐Ÿ’–

๐ŸŒŸ SYNOPSIS ๐ŸŒŸ

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

๐Ÿ“ CONSTRUCTOR ๐Ÿ“

  • new ( [ARGS] )
    • โœจ METHODS โœจ
      • sockaddr ()
      • sockport ()
      • sockhost ()
      • peeraddr ()
      • peerport ()
      • peerhost ()

๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

๐ŸŒธ AUTHOR ๐ŸŒธ


๐Ÿงš IO::Socket::IP, "IO::Socket::IP" โ€” Family-neutral IP socket supporting both IPv4 and IPv6 ๐Ÿงš

it does v4 and v6, no picking favourites, we love a diplomat

๐ŸŒŸ 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, the cozy local ones ๐Ÿ“

๐ŸŒŸ SYNOPSIS ๐ŸŒŸ

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

๐Ÿ“ CONSTRUCTOR ๐Ÿ“

  • new ( [ARGS] )

โœจ METHODS โœจ

  • hostpath()
  • peerpath()

๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

๐ŸŒธ AUTHOR ๐ŸŒธ


๐Ÿ’œ IO::Uncompress::AnyInflate โ€” Uncompress zlib-based (zip, gzip) file/buffer ๐Ÿ’œ

it sniffs out which zlib-ish format you threw at it and just handles it, and we say thank you

๐ŸŒŸ 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
bestie, read genuinely shows up twice in this contents list. That's not me glitching, it's straight from the source ๐Ÿ’€

๐ŸŽ€ Importing ๐ŸŽ€

  • :all

๐Ÿ”ฅ EXAMPLES ๐Ÿ”ฅ

  • Working with Net::FTP

๐Ÿ’œ SUPPORT ๐Ÿ’œ

๐Ÿ”ฎ SEE ALSO ๐Ÿ”ฎ

๐ŸŒธ AUTHOR ๐ŸŒธ

โญ MODIFICATION HISTORY โญ


๐Ÿงš IO::Uncompress::AnyUncompress โ€” Uncompress gzip, zip, bzip2, zstd, xz, lzma, lzip, lzf or lzop file/buffer ๐Ÿงš

the big one โ€” if it's compressed, she's got a plan for it, periodt

๐ŸŒŸ 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 โ€” Base Class for IO::Uncompress modules ๐Ÿซถ

the parent class, the blueprint, the blueprint-est ๐Ÿ’…

๐ŸŒŸ SYNOPSIS ๐ŸŒŸ

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

๐Ÿ’œ SUPPORT ๐Ÿ’œ

๐Ÿ”ฎ SEE ALSO ๐Ÿ”ฎ

๐ŸŒธ AUTHOR ๐ŸŒธ

โญ MODIFICATION HISTORY โญ


๐Ÿ“ IO::Uncompress::Bunzip2 โ€” Read bzip2 files/buffers ๐Ÿ“

bzip2 unzipping duties, handled with grace โœจ

๐ŸŒŸ 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 โ€” Read RFC 1952 files/buffers ๐ŸŒˆ

gzip reading, the everyday icon we all rely on, ate and left no crumbs

๐ŸŒŸ 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

โœจ Constructor Options โœจ

  • "AutoClose => 0|1" โ€” the classic on/off switch babe
  • "MultiStream => 0|1" โ€” toggle for multi-stream mode
  • "Prime => $string" โ€” prime that bad boy with a string
  • "Transparent => 0|1" โ€” transparent mode, on or off
  • "BlockSize => $num" โ€” set your block size, number goes here
  • InputLength => $size โ€” how much input we're expecting
  • "Append => 0|1" โ€” append or nah
  • "Strict => 0|1" โ€” strict mode: on or off
  • "ParseExtra => 0|1" โ€” if the gzip FEXTRA header field is present and this option is set, it forces the module to check that it conforms to the sub-field structure as defined in RFC 1952 ๐Ÿง

๐Ÿ’… Methods ๐Ÿ’…

  • read
  • read (yes bestie it's listed twice, that's just how it is)
  • getline
  • getc
  • ungetc
  • inflateSync
  • getHeaderInfo โ€” with 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]

Here's what $input_filename_or_reference can be, no cap:

  • A filename
  • A filehandle
  • A scalar reference
  • An array reference
  • An Input FileGlob string

And here's what $output_filename_or_reference can be:

  • 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]

Input side, your options are:

  • A filename
  • A filehandle
  • A scalar reference
  • An array reference
  • An Input FileGlob string

Output side, your options are:

  • 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

The compression methods it knows about, with their numbers, because numbers matter:

  • Store (0)
  • Deflate (8)
  • Bzip2 (12)
  • Lzma (14)
  • Xz (95)
  • Zstandard (93)

Functional Interface

unzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]

$input_filename_or_reference can be:

  • A filename
  • A filehandle
  • A scalar reference
  • An array reference
  • An Input FileGlob string

$output_filename_or_reference can be:

  • 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

These are the messages it'll throw at you, bestie:

  • 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] );

The pieces of that run call, spelled out:

  • 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} );

And the keys you'll find in that hashref:

  • "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

And when relaxed is on, here's the lil treat list of what it lets slide:

  • 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 ๐Ÿ’–

okay so THESE ones? only for JSON::PP, don't try them on anything else bestie ๐Ÿ’…

  • allow_singlequote
  • allow_barekey
  • allow_bignum
  • loose
  • escape_slash
  • indent_length
  • sort_by

โœจ INCREMENTAL PARSING โœจ

the "feed it a bit at a time" era, we love a streaming moment ๐Ÿฆ‹

  • 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 ๐ŸŽ€

not me listing the exact priority order, because the vibes go in THIS sequence, no cap:

  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 ๐Ÿงš

SYNOPSIS

DESCRIPTION

AUTHOR

LICENSE


๐Ÿฆ‹ List::Util - A selection of general-utility list subroutines ๐Ÿฆ‹

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

tail

zip

mesh

๐ŸŒˆ CONFIGURATION VARIABLES ๐ŸŒˆ

  • $RAND

๐Ÿ’€ KNOWN BUGS ๐Ÿ’€

  • RT #95409
  • uniqnum() on oversized bignums

๐ŸŒธ SUGGESTED ADDITIONS ๐ŸŒธ

๐Ÿ‘‘ SEE ALSO ๐Ÿ‘‘


๐ŸŒŸ List::Util::XS - Indicate if List::Util was compiled with a C compiler ๐ŸŒŸ

SYNOPSIS

DESCRIPTION

SEE ALSO


๐Ÿ’œ Locale::Maketext - framework for localization ๐Ÿ’œ

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 ๐Ÿ‘€

โœ๏ธ AUTHOR โœ๏ธ


๐Ÿ“ Locale::Maketext::Cookbook - recipes for using Locale::Maketext ๐Ÿ“

INTRODUCTION

ONESIDED LEXICONS

๐Ÿ”ข DECIMAL PLACES IN NUMBER FORMATTING ๐Ÿ”ข


๐Ÿ’€ Locale::Maketext::Guts - Deprecated module to load Locale::Maketext utf8 code ๐Ÿ’€

SYNOPSIS

DESCRIPTION


๐Ÿ’€ Locale::Maketext::GutsLoader - Deprecated module to load Locale::Maketext utf8 code ๐Ÿ’€

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 ๐Ÿ‘‘

The "MIT" License


๐Ÿ“š Locale::Maketext::TPJ13 -- article about software localization ๐Ÿ“š

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 ๐ŸŒŸ

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 )

SEE ALSO


๐Ÿ‘‘ Math::BigFloat - arbitrary size floating point math package ๐Ÿ‘‘

SYNOPSIS

DESCRIPTION

Input

Output

METHODS

Configuration methods

  • accuracy(), precision()

Constructor methods

  • from_dec(), from_hex(), from_oct(), from_bin(), from_bytes(), from_ieee754(), from_fp80(), 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 ๐Ÿ’ช

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_fp80(), 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_fp80(), 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 ๐Ÿงฎ

SYNOPSIS

DESCRIPTION

OPTIONS

  • base_len, use_int

METHODS

  • _base_len()

SEE ALSO


โšก Math::BigInt::FastCalc - Math::BigInt::Calc with some XS for more speed โšก

SYNOPSIS

DESCRIPTION

๐Ÿ’พ STORAGE ๐Ÿ’พ

METHODS

๐Ÿ’€ BUGS ๐Ÿ’€

๐Ÿ†˜ SUPPORT ๐Ÿ†˜

  • GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix

LICENSE

๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

SEE ALSO

๐Ÿงฎ Math::BigInt::Lib

bestie, this one is the virtual parent class for Math::BigInt libraries โ€” the blueprint all the other big-int libs inherit from ๐Ÿ’–

  • SYNOPSIS
  • DESCRIPTION
    • General Notes
      • all the API goodies: 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
      • 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

the arbitrary size rational number math package โ€” fractions that never lose their cool ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
    • Math Library
  • METHODS
    • new(), from_dec(), from_hex(), from_oct(), from_bin(), from_bytes(), from_ieee754(), from_fp80(), 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(), to_fp80(), 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 + all their little math functions, living their imaginary best life ๐Ÿฆ‹

  • 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, aka the โœจanglesโœจ of the situation โ€” tan is literally right there at the top of the list, iconic

  • 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 โ€” the ultimate glow-up for slow code bestie ๐Ÿซถ

  • 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
  • COPYRIGHT AND LICENSE

๐Ÿ—‚๏ธ Memoize::AnyDBM_File

glue to provide EXISTS for AnyDBM_File for Storable use โ€” the little connector that makes everything work ๐Ÿ’–

  • DESCRIPTION

โณ Memoize::Expire

Plug-in module for automatic expiration of memoized values โ€” cached things that know when to let go ๐Ÿ“

  • SYNOPSIS
  • DESCRIPTION
  • INTERFACE
    • TIEHASH, EXISTS, STORE
  • ALTERNATIVES
  • CAVEATS
  • AUTHOR
  • SEE ALSO

๐Ÿ—„๏ธ Memoize::NDBM_File

glue to provide EXISTS for NDBM_File for Storable use โ€” same glue energy, different db ๐Ÿ’…

  • DESCRIPTION

๐Ÿ’€ Memoize::SDBM_File

DEPRECATED compatibility shim โ€” it's giving "still here for the plot" but honestly she's retired ๐Ÿ˜ญ

  • DESCRIPTION

๐Ÿ“ฆ Memoize::Storable

store Memoized data in a Storable database โ€” caching, but make it persist โœจ

  • DESCRIPTION

๐Ÿ—บ๏ธ Module::CoreList

what modules shipped with versions of perl โ€” the receipts for every perl release, no cap ๐Ÿงพ

  • 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 โ€” the tools side of the receipts, slay ๐Ÿ’–

  • 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 โ€” pulling stuff in whenever, wherever, main character energy ๐Ÿ‘‘

  • 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
  • COPYRIGHT

๐Ÿ” Module::Load::Conditional

Looking up module information / loading at runtime โ€” the detective of the module world, fr fr ๐Ÿ•ต๏ธโ€โ™€๏ธ

  • 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
  • COPYRIGHT

โœ… Module::Loaded

mark modules as loaded or unloaded โ€” keeping the receipts on what's already been brought in ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • FUNCTIONS
    • $bool = mark_as_loaded( PACKAGE );
  • $bool = mark_as_unloaded( PACKAGE );
  • $loc = is_loaded( PACKAGE );
  • BUG REPORTS
  • AUTHOR
  • COPYRIGHT

๐Ÿ”ฌ Module::Metadata

Gather package and POD information from perl module files โ€” reading the module's aura and telling you everything ๐Ÿฆ‹

  • 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()
  • GIVING THANKS
  • SUPPORT
  • AUTHOR
  • CONTRIBUTORS
  • COPYRIGHT & LICENSE

๐Ÿ—ƒ๏ธ NDBM_File

Tied access to ndbm files โ€” hash-tied dbm realness, but read the security bits bestie โš ๏ธ

  • 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 โ€” method calls getting a second (and third, and fourth) chance, iconic behavior ๐Ÿ’–

  • 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
  • COPYRIGHT

๐Ÿ“ก Net::Cmd

Network Command class (as used by FTP, SMTP etc) โ€” the network-talking bestie behind a bunch of protocols ๐Ÿ”ฅ

  • SYNOPSIS
  • DESCRIPTION
    • Public Methods
      • debug($level), message(), code(), ok(), status(), datasend($data), dataend()

โœจ Protected Methods โœจ

okay bestie these are the internals, the backstage crew of Net::Cmd โ€” you don't usually call them yourself but here they all are, no gatekeeping:

  • 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()

๐Ÿ’ซ Pseudo Responses ๐Ÿ’ซ

the fake-out responses, the plot twists that aren't real server replies:

  • Initial value
  • Connection closed
  • Timeout

๐Ÿ“ฆ EXPORTS ๐Ÿ“ฆ

  • Default Exports
  • Optional Exports
  • Export Tags

๐Ÿ› KNOWN BUGS ๐Ÿ›

yep she's got bugs, they're known, we list them.

โœ๏ธ AUTHOR โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


๐ŸŒ Net::Config โ€” Local configuration data for libnet ๐ŸŒ

SYNOPSIS

DESCRIPTION

๐Ÿงš Class Methods ๐Ÿงš

  • requires_firewall($host)

๐ŸŽ€ NetConfig Values ๐ŸŽ€

all the values, every single one, no skips:

  • 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 โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


๐ŸŒธ Net::Domain โ€” Attempt to evaluate the current host's internet name and domain ๐ŸŒธ

like, who even am I? this module finds out for your machine, iconic.

SYNOPSIS

DESCRIPTION

๐Ÿงš Functions ๐Ÿงš

  • hostfqdn()
  • domainname()
  • hostname()
  • hostdomain()

๐Ÿ“ฆ EXPORTS ๐Ÿ“ฆ

  • Default Exports
  • Optional Exports
  • Export Tags

๐Ÿ› KNOWN BUGS ๐Ÿ›

โœ๏ธ AUTHOR โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


๐Ÿ’… Net::FTP โ€” FTP Client class ๐Ÿ’…

the FTP girlie. she's been through it, but she slays.

SYNOPSIS

DESCRIPTION

๐Ÿ‘€ Overview ๐Ÿ‘€

๐Ÿงš Class Methods ๐Ÿงš

  • new([$host][, %options])

๐ŸŽ€ Object Methods ๐ŸŽ€

the whole roster, fr fr, every one:

  • 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 ๐Ÿ”ฅ

for the bold ones, the risk-takers:

  • quot($cmd[, $args])
  • can_inet6()
  • can_ssl()

๐Ÿ—‚๏ธ The dataconn Class ๐Ÿ—‚๏ธ

๐Ÿ™ˆ Unimplemented ๐Ÿ™ˆ

not me listing the things that literally don't exist yet:

  • SMNT
  • HELP
  • MODE
  • SYST
  • STAT
  • STRU
  • REIN

๐Ÿ“ฆ EXPORTS ๐Ÿ“ฆ

๐Ÿ› KNOWN BUGS ๐Ÿ›

๐Ÿšจ Reporting Bugs ๐Ÿšจ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

๐Ÿซถ ACKNOWLEDGEMENTS ๐Ÿซถ

โœ๏ธ AUTHOR โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


๐Ÿฆ‹ Net::NNTP โ€” NNTP Client class ๐Ÿฆ‹

usenet bestie!! reading the newsgroups, very main character.

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 โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


๐Ÿ“ Net::Netrc โ€” OO interface to users netrc file ๐Ÿ“

your .netrc but make it object-oriented, we love a glow up.

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 โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


๐Ÿ’Œ Net::POP3 โ€” Post Office Protocol 3 Client class (RFC1939) ๐Ÿ’Œ

checking the mail, very demure, very mindful.

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 โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


๐Ÿ“ก Net::Ping โ€” check a remote host for reachability ๐Ÿ“ก

is she there? is she answering? we ping and we find out, periodt.

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 โœ๏ธ


๐Ÿ“ง Net::SMTP โ€” Simple Mail Transfer Protocol Client ๐Ÿ“ง

sending the emails, being the messenger, absolutely serving.

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 โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


โฐ Net::Time โ€” time and daytime network client interface โฐ

asking the internet what time it is, because your clock is a liar.

SYNOPSIS

DESCRIPTION

๐Ÿงš Functions ๐Ÿงš

  • inet_time([$host[, $protocol[, $timeout]]])
  • inet_daytime([$host[, $protocol[, $timeout]]])

๐Ÿ“ฆ EXPORTS ๐Ÿ“ฆ

  • Default Exports
  • Optional Exports
  • Export Tags

๐Ÿ› KNOWN BUGS ๐Ÿ›

โœ๏ธ AUTHOR โœ๏ธ

๐Ÿ“œ LICENCE ๐Ÿ“œ

#๏ธโƒฃ VERSION #๏ธโƒฃ

๐Ÿ“… DATE ๐Ÿ“…

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ


๐Ÿ–ฅ๏ธ Net::hostent โ€” by-name interface to Perl's built-in gethost*() functions ๐Ÿ–ฅ๏ธ

SYNOPSIS

DESCRIPTION

๐ŸŒˆ EXAMPLES ๐ŸŒˆ

๐Ÿ“Œ NOTE ๐Ÿ“Œ

โœ๏ธ AUTHOR โœ๏ธ


๐Ÿ“š Net::libnetFAQ, libnetFAQ โ€” libnet Frequently Asked Questions ๐Ÿ“š

the FAQ section, aka the group chat archive of every question ever asked.

DESCRIPTION

  • Where to get this document
  • How to contribute to this document

โš ๏ธ 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 ?

๐ŸŒ Net::netent โ€” by-name interface to Perl's built-in getnet*() functions ๐ŸŒ

SYNOPSIS

DESCRIPTION

๐ŸŒˆ EXAMPLES ๐ŸŒˆ

๐Ÿ“Œ NOTE ๐Ÿ“Œ

โœ๏ธ AUTHOR โœ๏ธ


๐Ÿ”Œ Net::protoent โ€” by-name interface to Perl's built-in getproto*() functions ๐Ÿ”Œ

SYNOPSIS

DESCRIPTION

๐Ÿ“Œ NOTE ๐Ÿ“Œ

โœ๏ธ AUTHOR โœ๏ธ

๐Ÿฆ‹ Net::servent โ€” by-name interface to Perl's built-in getserv*() functions ๐Ÿฆ‹

okay so this one lets you look up a service by name, and it's built straight on top of Perl's own getserv*() crew. no cap. inside you get:

  • SYNOPSIS โœจ
  • DESCRIPTION ๐Ÿ’…
  • EXAMPLES ๐Ÿ“
  • NOTE ๐Ÿ“
  • AUTHOR ๐Ÿ‘‘

๐ŸŽ€ O โ€” Generic interface to Perl Compiler backends ๐ŸŽ€

it's giving "one generic plug for all the compiler backends" and honestly? iconic. sections:

  • SYNOPSIS
  • DESCRIPTION
  • CONVENTIONS
  • IMPLEMENTATION
  • BUGS ๐Ÿ’€
  • AUTHOR

๐ŸŒธ ODBM_File โ€” Tied access to odbm files ๐ŸŒธ

tied-access realness for odbm files, bestie. here's the map:

  • 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 ๐Ÿ‘‘

this is the one that lets you switch off specific named opcodes while perl is compiling your code. very "parental controls but make it compiler". contents:

  • 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 big one. your Perl โœจportalโœจ into IEEE Std 1003.1. lowkey a whole city of functions and constants, so buckle up:

  • 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", "fclose", "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. โœจ

a generic input parsing/checking mechanism, bestie โ€” it vets your args so you don't have to. the whole tour:

  • 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 ๐ŸŒˆ

say it with me: parse META.yml and META.json CPAN metadata files. that's the whole vibe. contents:

  • 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 ๐Ÿงš

she takes Perl OS names and maps them to generic types. a translator, an icon, a queen. here's everything:

  • 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 ๐Ÿ’–

on-demand loader for your PerlIO layers, and the root of the whole PerlIO::* name space. main character energy fr. breakdown:

  • 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 ๐ŸŽ€

it's the encoding layer, and that's the tea. ๐Ÿซ–

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO

๐Ÿ“ PerlIO::mmap โ€” Memory mapped IO ๐Ÿ“

memory mapped IO, bestie. mm, mm. contents:

  • SYNOPSIS
  • DESCRIPTION
  • IMPLEMENTATION NOTE ๐Ÿ“

๐Ÿฆ‹ PerlIO::scalar โ€” in-memory IO, scalar IO ๐Ÿฆ‹

in-memory IO, scalar IO โ€” doing the most with a plain scalar. obsessed. contents:

  • SYNOPSIS
  • DESCRIPTION
  • IMPLEMENTATION NOTE ๐Ÿ“

๐Ÿ’… PerlIO::via โ€” Helper class for PerlIO layers implemented in perl ๐Ÿ’…

the helper class for PerlIO layers that are implemented in perl. it's giving "we do it ourselves". the full menu:

  • 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 ๐ŸŒธ

a PerlIO layer for quoted-printable strings. cute, useful, slay. the itinerary:

  • 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 ๐Ÿ‘‘

pod syntax errors? caught. this is your pod's vibe check before anyone else sees it. contents:

  • 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

ok so continuing the Pod::Checker section list, no biggie ๐Ÿ’…

  • Warnings โ€” every lil complaint it can throw at you: 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<>
  • Hyperlinks โ€” the lil link drama: ignoring leading/trailing whitespace in link, alternative text/node '%s' contains non-escaped | or /

  • RETURN VALUE โ€” literally the payoff bestie
  • EXAMPLES
  • SCRIPTS
  • INTERFACE โ€” the whole lil army of handlers doing the most: 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
  • "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

๐Ÿฆ‹ Pod::Escapes โ€” for resolving Pod E<...> sequences ๐Ÿฆ‹

  • SYNOPSIS
  • DESCRIPTION
  • GOODIES โ€” the lil goodie bag: 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
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

โœจ Pod::Html โ€” module to convert pod files to HTML โœจ

  • SYNOPSIS
  • DESCRIPTION
  • FUNCTIONS
    • pod2html โ€” the whole option menu fr: backlink, cachedir, css, flush, header, help, htmldir, htmlroot, index, infile, outfile, poderrors, podpath, podroot, quiet, recurse, title, verbose
    • Formerly Exported Auxiliary Functions โ€” the old guard, still cute: htmlify() (by default), anchorify() (upon request), relativize_url() (upon request)
  • ENVIRONMENT
  • AUTHOR
  • SEE ALSO
  • COPYRIGHT

๐ŸŽ€ Pod::Html::Util โ€” helper functions for Pod-Html ๐ŸŽ€

  • SUBROUTINES
  • 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), 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 โ€” the receipts: [1], [2], [3]
  • DIAGNOSTICS โ€” the vibe-check messages: roff font should be 1 or 2 chars, not "%s", Invalid errors setting "%s", Invalid quote specification "%s", POD document had syntax errors
  • ENVIRONMENT โ€” the env vars it reads: PERL_CORE, POD_MAN_DATE, SOURCE_DATE_EPOCH
  • COMPATIBILITY
  • BUGS
  • CAVEATS
    • Sentence spacing
    • Hyphens and quotes
  • AUTHOR
  • COPYRIGHT AND LICENSE
  • SEE ALSO

  • SYNOPSIS
  • DESCRIPTION
  • AUTHOR
  • COPYRIGHT AND LICENSE
  • SEE ALSO

๐Ÿ’… Pod::Perldoc โ€” Look up Perl documentation in Pod format. ๐Ÿ’…

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐Ÿซถ Pod::Perldoc::BaseTo โ€” Base for Pod::Perldoc formatters ๐Ÿซถ

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐Ÿ”ฅ Pod::Perldoc::GetOptsOO โ€” Customized option parser for Pod::Perldoc ๐Ÿ”ฅ

  • SYNOPSIS
  • DESCRIPTION
    1. Call Pod::Perldoc::GetOptsOO::getopts($object, \@ARGV, $truth)
    2. 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")
    3. Otherwise (given -n) if there's an opt_n, we'll call it $object->opt_n($truth) (Truth defaults to 1)
    4. Otherwise we try calling $object->handle_unknown_option('n') (and we increment the error count by the return value of it)
    5. If there's no handle_unknown_option, then we just warn, and then increment the error counter
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐ŸŒธ Pod::Perldoc::ToANSI โ€” render Pod with ANSI color escapes ๐ŸŒธ

  • SYNOPSIS
  • DESCRIPTION
  • CAVEAT
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

โญ Pod::Perldoc::ToChecker โ€” let Perldoc check Pod for errors โญ

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐Ÿ’œ Pod::Perldoc::ToMan โ€” let Perldoc render Pod as man pages ๐Ÿ’œ

  • SYNOPSIS
  • DESCRIPTION
  • CAVEAT
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐Ÿงš Pod::Perldoc::ToNroff โ€” let Perldoc convert Pod to nroff ๐Ÿงš

  • SYNOPSIS
  • DESCRIPTION
  • CAVEAT
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐Ÿ“ Pod::Perldoc::ToPod โ€” let Perldoc render Pod as ... Pod! ๐Ÿ“

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐Ÿ˜ญ Pod::Perldoc::ToRtf โ€” let Perldoc render Pod as RTF ๐Ÿ˜ญ

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐ŸŒŸ Pod::Perldoc::ToTerm โ€” render Pod with terminal escapes ๐ŸŒŸ

  • SYNOPSIS
  • DESCRIPTION
  • PAGER FORMATTING
  • CAVEAT
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

๐Ÿ‘‘ Pod::Perldoc::ToText โ€” let Perldoc render Pod as plaintext ๐Ÿ‘‘

  • SYNOPSIS
  • DESCRIPTION
  • CAVEAT
  • SEE ALSO
  • COPYRIGHT AND DISCLAIMERS
  • 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
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR

โœจ Pod::Simple โ€” framework for parsing Pod โœจ

  • SYNOPSIS
  • DESCRIPTION
  • MAIN METHODS โ€” the ones you'll actually touch:
    • "$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 โ€” the control panel vibes:
    • "$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 โ€” deep cuts for the true nerds:
    • "$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
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR โ€” the legends: 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
  • COPYRIGHT AND DISCLAIMERS
  • 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
  • COPYRIGHT AND DISCLAIMERS
  • 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
  • COPYRIGHT AND DISCLAIMERS
  • 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
  • COPYRIGHT AND DISCLAIMERS
  • 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
  • COPYRIGHT AND DISCLAIMERS
  • 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's the glow-up machine: it takes a whole pile of Pod files and turns them into a whole pile of HTML files. Iconic.

  • SYNOPSIS
  • DESCRIPTION
    • FROM THE COMMAND LINE
  • MAIN METHODS
    • $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
    • $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
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿฆ‹

the way this module is literally named after the whole entire point and does exactly that? main character energy, no filler, no commentary, just Pod periodt.

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • AUTHOR โ€” Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org"

it's giving tiny but crucial โ€” this is the little guy that holds the "section" attributes living inside your L codes.

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐ŸŒธ

fr fr, this is the translator bestie: Pod::Simple fires off events, and Methody goes "and I took that personally" and turns them into actual method calls.

  • SYNOPSIS
  • DESCRIPTION
  • METHOD CALLING
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿ’…

instead of the parser pushing stuff at you, you pull tokens out one at a time. you're the one in control. obsessed.

  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • 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
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐ŸŽ€

the end token bestie. it shows up when a thing is done. closure, literally.

  • SYNOPSIS
  • DESCRIPTION
    • $token->tagname
    • $token->tagname(somestring)
    • $token->tag(...)
    • $token->is_tag(somestring) or $token->is_tagname(somestring)
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐ŸŒˆ

and this is the start token โ€” the opening act, the intro, the "heyyy we're beginning" moment.

  • 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
yep bestie, SEE ALSO is listed twice in the original here. not a typo on my end, I'm just keeping the receipts ๐Ÿ’€
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿซถ

the token that's literally just the words. the actual content. the moment.

  • SYNOPSIS
  • DESCRIPTION
    • $token->text
    • $token->text(somestring)
    • $token->text_r()
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 โญ

the base token vibe. everything else is a variation on this theme, and this is where the type-checking lives.

  • SYNOPSIS
  • DESCRIPTION
    • $token->type
    • $token->is_start
    • $token->is_text
    • $token->is_end
    • $token->dump
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿงš

yes bestie, RTF. that format from 1987 that somehow still exists and we respect it. this formatter turns your Pod into it.

  • 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
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿ”ฅ

this is the detective module. it goes hunting through your directory trees looking for Pod docs and it does not come home empty-handed.

  • 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
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐ŸŒธ

it takes your Pod and turns it into a tree. simple tree. the name is not lying to you bestie.

  • SYNOPSIS
  • DESCRIPTION
  • METHODS
  • Tree Contents
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿ‘‘

this is the "build your own" one, and it's stacked. if you wanna write your own formatter, this is your blueprint, and it references a whole squad of other modules to get you there.

  • 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, I, or U
    • 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
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿ“

no HTML, no RTF, no drama. just text. plain. text. sometimes that's the whole vibe.

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿ’œ

strip out all the markup and formatting nonsense and just hand you the words. that's it. that's the module.

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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 ๐Ÿ’–

validating, bestie. it's not just making HTML, it's making HTML that passes the vibe check.

  • SYNOPSIS
  • DESCRIPTION
    • Minimal code

okay continuing the method list for the HTML one โ€” every last one of them, no skipping, we don't do that here:

  • METHODS โœจ
    • 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 hooks bestie, the ones you're allowed to reach in and poke:
    • handle_text
    • handle_code
    • accept_targets_as_html
    • resolve_pod_page_link
    • resolve_man_page_link
    • idify
    • batch_mode_page_object_init
  • SEE ALSO
  • SUPPORT ๐Ÿ’–
  • COPYRIGHT AND DISCLAIMERS โš–๏ธ
  • 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

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • ABOUT EXTENDING POD
  • SEE ALSO โ† yes it's in there twice, that's canon, don't @ me
  • SUPPORT
  • COPYRIGHT AND DISCLAIMERS
  • 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

  • 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
  • COPYRIGHT AND LICENSE
  • SEE ALSO

๐ŸŒˆ Pod::Text::Color โ€” Convert POD data to formatted color ASCII text

  • SYNOPSIS
  • DESCRIPTION
  • COMPATIBILITY
  • CAVEATS
  • AUTHOR
  • COPYRIGHT AND LICENSE
  • SEE ALSO

โœจ Pod::Text::Overstrike โ€” Convert POD data to formatted overstrike text

  • SYNOPSIS
  • DESCRIPTION
  • BUGS
  • COMPATIBILITY
  • CAVEATS
  • AUTHOR
  • COPYRIGHT AND LICENSE
  • SEE ALSO

๐Ÿ–ฅ๏ธ Pod::Text::Termcap โ€” Convert POD data to ASCII text with format escapes

  • SYNOPSIS
  • DESCRIPTION
  • COMPATIBILITY
  • CAVEATS
  • AUTHOR
  • COPYRIGHT AND LICENSE
  • SEE ALSO

๐Ÿซถ Pod::Usage โ€” extracts POD documentation and shows usage information

  • SYNOPSIS
  • ARGUMENTS
    • "-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
    • Recommended Use
  • 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
    • 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
  • COPYRIGHT

๐Ÿ”Ž 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
  • COPYRIGHT AND LICENSE
    • 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

  • 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
  • COPYRIGHT
  • 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"

๐Ÿซถ TAP::Formatter::Console::ParallelSession ๐Ÿซถ

Harness output delegate for parallel console output โ€” that's the whole job description, bestie. it's giving very niche but very important.

  • VERSION
  • DESCRIPTION
  • SYNOPSIS
  • METHODS
    • Class Methods

โœจ TAP::Formatter::Console::Session โœจ

Harness output delegate for default console output. yes, the default one, the main character of console output ngl.

  • VERSION
  • DESCRIPTION
  • "clear_for_close"
  • "close_test"
  • "header"
  • "result"

๐Ÿ’– TAP::Formatter::File ๐Ÿ’–

Harness output delegate for file output. it writes the vibes to a file instead of your eyeballs.

  • VERSION
  • DESCRIPTION
  • SYNOPSIS
    • "open_test"

๐ŸŒธ TAP::Formatter::File::Session ๐ŸŒธ

Harness output delegate for file output โ€” yes again, but the session flavor.

  • VERSION
  • DESCRIPTION
  • METHODS
    • result
  • close_test

๐Ÿฆ‹ TAP::Formatter::Session ๐Ÿฆ‹

Abstract base class for harness output delegate. it's the blueprint, the template, the ancestor of all the other sessions fr fr.

  • VERSION
  • METHODS
    • Class Methods
      • "formatter", "parser", "name", "show_count"

๐Ÿ”ฅ TAP::Harness ๐Ÿ”ฅ

Run test scripts with statistics. this is the big one, the icon, the legend of the whole family.

  • 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

๐ŸŽ€ 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 ๐ŸŒˆ

the "beyond" era, we're going deeper than make test and it's iconic.

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 โ€” i.e. it reads your env vars and figures out your vibe.

  • 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 ๐Ÿ’œ

Base class that provides common functionality to all "TAP::*" modules. the parent of the whole TAP squad, holding it down since day one.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

๐Ÿ‘‘ TAP::Parser ๐Ÿ‘‘

Parse TAP output. the literal parser, the brains of the operation.

  • 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


๐Ÿ“ TAP::Parser::Aggregator ๐Ÿ“

Aggregate TAP::Parser results โ€” it scoops up all your results and mushes them into one summary, slay.

  • 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. it knows the rules of TAP so you don't have to.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

TAP GRAMMAR

SUBCLASSING

SEE ALSO


๐ŸŒธ TAP::Parser::Iterator ๐ŸŒธ

Base class for TAP source iterators. the ancestor of all the little iterators, lowkey foundational.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

SUBCLASSING

  • Example

SEE ALSO


๐ŸŽ€ TAP::Parser::Iterator::Array ๐ŸŽ€

Iterator for array-based TAP sources. arrays? it eats arrays. periodt.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

ATTRIBUTION

SEE ALSO


๐Ÿ”ฅ TAP::Parser::Iterator::Process ๐Ÿ”ฅ

Iterator for process-based TAP sources โ€” running processes and streaming their TAP, very main character energy.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

ATTRIBUTION

SEE ALSO


๐Ÿฆ‹ TAP::Parser::Iterator::Stream ๐Ÿฆ‹

Iterator for filehandle-based TAP sources. give it a filehandle, it gives you TAP. simple as.

  • 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 bestie, pairing sources with handlers.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

SUBCLASSING

  • Example

AUTHORS

ATTRIBUTION

SEE ALSO


๐ŸŒˆ TAP::Parser::Multiplexer ๐ŸŒˆ

Multiplex multiple TAP::Parsers โ€” like hosting a group chat for parsers and getting all their messages in order.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

See Also


๐Ÿงš TAP::Parser::Result ๐Ÿงš

Base class for TAP::Parser output objects. the origin story of every result token out there.

  • 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 ๐ŸŒŸ

Bailout result token. the "we gotta stop everything" token, dramatic but necessary.

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • "as_string"
  • Instance Methods

๐Ÿ“ TAP::Parser::Result::Comment ๐Ÿ“

Comment result token. the little side-notes of TAP, the whispers in the group chat.

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • "as_string"
  • Instance Methods

โœจ TAP::Parser::Result::Plan โœจ

Plan result token. the "here's how many tests we're running" announcement.

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • "as_string", "raw"
  • Instance Methods

๐Ÿ’… TAP::Parser::Result::Pragma ๐Ÿ’…

TAP pragma token.

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • "as_string", "raw"
  • Instance Methods

๐Ÿ‘‘ TAP::Parser::Result::Test ๐Ÿ‘‘

Test result token. the actual test result itself, the star of the show ngl.

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
  • Instance Methods

๐ŸŽ€ TAP::Parser::Result::Unknown ๐ŸŽ€

Unknown result token. when TAP throws something at us that we simply do not recognize, and honestly? relatable.

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • "as_string", "raw"

๐Ÿฆ‹ TAP::Parser::Result::Version ๐Ÿฆ‹

TAP syntax version token. it tells you which version of TAP we're vibing with.

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • "as_string", "raw"
  • Instance Methods

๐Ÿ’– TAP::Parser::Result::YAML ๐Ÿ’–

YAML result token.

  • VERSION
  • DESCRIPTION
  • OVERRIDDEN METHODS
    • "as_string", "raw"
  • Instance Methods

๐ŸŒธ TAP::Parser::ResultFactory ๐ŸŒธ

Factory for creating TAP::Parser output objects โ€” it's the build-a-bear of result tokens.

  • SYNOPSIS
  • VERSION
  • DESCRIPTION
  • METHODS
  • Class Methods

SUBCLASSING

  • Example

SEE ALSO


๐Ÿงš TAP::Parser::Scheduler ๐Ÿงš

Schedule tests during parallel testing. it's the planner bestie with the color-coded agenda for your test suite.

  • 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.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods
  • Attributes

๐ŸŽ€ TAP::Parser::Scheduler::Spinner ๐ŸŽ€

A no-op job. it literally does nothing and that's its whole purpose, iconic behavior.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

SEE ALSO


๐Ÿฆ‹ TAP::Parser::Source ๐Ÿฆ‹

a TAP source & meta data about it. it's the lil info card that travels with your test source.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

AUTHORS

SEE ALSO


๐ŸŒˆ TAP::Parser::SourceHandler ๐ŸŒˆ

Base class for different TAP source handlers. the blueprint era for handling any kind of source.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods

SUBCLASSING

  • Example

AUTHORS

SEE ALSO


๐Ÿ”ฅ TAP::Parser::SourceHandler::Executable ๐Ÿ”ฅ

Stream output from an executable TAP source. run the program, stream its TAP, chef's kiss.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods

SUBCLASSING

  • Example

SEE ALSO


๐Ÿ’œ TAP::Parser::SourceHandler::File ๐Ÿ’œ

Stream TAP from a text file. just a plain file chilling with TAP inside.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods

CONFIGURATION

SUBCLASSING

SEE ALSO


โœจ TAP::Parser::SourceHandler::Handle โœจ

Stream TAP from an IO::Handle or a GLOB. handles and globs, it's flexible like that.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods

SUBCLASSING

SEE ALSO


๐ŸŽ€ TAP::Parser::SourceHandler::Perl ๐ŸŽ€

Stream TAP from a Perl executable โ€” it's Perl running Perl, very meta, very iconic.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods

SUBCLASSING

  • Example

SEE ALSO


๐Ÿ“ TAP::Parser::SourceHandler::RawTAP ๐Ÿ“

Stream output from raw TAP in a scalar/array ref. raw TAP straight from a ref, no extra steps.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods

SUBCLASSING

SEE ALSO


๐ŸŒธ TAP::Parser::YAMLish::Reader ๐ŸŒธ

Read YAMLish data from iterator. "YAMLish" because it's YAML-adjacent, not full YAML, and we respect that boundary.

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • METHODS
    • Class Methods
    • Instance Methods

AUTHOR

SEE ALSO

TAP::Parser::YAMLish::Writer โ€” Write YAMLish data ๐Ÿ’…

bestie, this one is literally here to Write YAMLish data and honestly? focused queen energy. here's the whole lil map:

VERSION

the obligatory version section, periodt ๐Ÿ‘‘

SYNOPSIS

the "here's how you actually call it" teaser โœจ

DESCRIPTION

the vibes explained in full.

METHODS

the actual doing-things part ๐Ÿ’ช

  • Class Methods โ€” the ones you call on the class itself
  • Instance Methods โ€” the ones you call on an object, and the writer's target can be 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, or a code reference ๐Ÿซถ

AUTHOR

who to thank ๐Ÿ’–

SEE ALSO

the "go read these next" list.

the legal bit, no cap.


Term::ANSIColor โ€” Color screen output using ANSI escape sequences ๐ŸŒˆ

okay so this is THE iconic one if you've ever wanted your terminal to be cute as hell. it does color screen output using ANSI escape sequences ๐Ÿ’…

SYNOPSIS

DESCRIPTION

  • Supported Colors โ€” the palette rundown ๐ŸŽจ
  • Function Interface โ€” yes, it's giving functions, and the roster is:
    • 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 โ€” for when you want the constants instead
  • The Color Stack โ€” yes there's a stack, bestie ๐Ÿ“š
  • Supporting CLICOLOR โ€” the CLICOLOR-compatible behavior, slay

DIAGNOSTICS

all the ways it can yell at you ๐Ÿ˜ญ here's every single one:

  • 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

the env vars that change the vibe:

  • ANSI_COLORS_ALIASES
  • ANSI_COLORS_DISABLED
  • NO_COLOR

COMPATIBILITY

RESTRICTIONS

NOTES

AUTHORS

SEE ALSO


Term::Cap โ€” Perl termcap interface ๐Ÿ–ฅ๏ธโœจ

the termcap girlies know. here's the layout:

SYNOPSIS

DESCRIPTION

  • METHODS โ€” the whole squad lives here ๐Ÿ‘‡
  • Tgetent, OSPEED, TERM
  • Tpad, $string, $cnt, $FH
  • Tputs, $cap, $cnt, $FH
  • Tgoto, $cap, $col, $row, $FH
  • Trequire

EXAMPLES

AUTHOR

SEE ALSO


Term::Complete โ€” Perl word completion module โŒจ๏ธ

word completion module, and it's lowkey handy. here's what's in the box:

SYNOPSIS

DESCRIPTION

  • <tab>, ^D, ^U, <del>, <bs> โ€” yep, those are the keys it cares about ๐ŸŽ€

DIAGNOSTICS

BUGS

AUTHOR


Term::ReadLine โ€” Perl interface to various "readline" packages. If no real package is found, substitutes stubs instead of basic functions. ๐Ÿ“–

okay so this is the Perl interface to various "readline" packages, and if no real package is found it substitutes stubs instead of basic functions โ€” so no crashing, it just fakes it ๐Ÿซถ

SYNOPSIS

DESCRIPTION

Minimal set of supported functions

the bare minimum you always get:

  • "ReadLine"
  • "new"
  • "readline"
  • "addhistory"
  • "IN"
  • "OUT"
  • "MinLine"
  • "findConsole"
  • Attribs
  • "Features"

Additional supported functions

the bonus upgrades, when your backend is fancy:

  • "tkRunning"
  • "event_loop"
  • "ornaments"
  • "newTTY"

EXPORTS

ENVIRONMENT


Term::Table โ€” Format a header and rows into a table ๐Ÿ“Š

format a header and rows into a table. it's giving printf but with โœจstructureโœจ.

DESCRIPTION

SYNOPSIS

INTERFACE

  • OPTIONS โ€” literally all of them, no skipping:
    • 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

important if you're doing fancy chars, bestie ๐Ÿ‘€

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Term::Table::Cell โ€” Representation of a cell in a table. ๐Ÿงฉ

one single cell, living its best life inside a table.

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Term::Table::CellStack โ€” Combine several cells into one (vertical) ๐Ÿฅž

combines several cells into one, and yes, vertically.

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Term::Table::HashBase โ€” Build hash based classes. ๐Ÿ—๏ธ

build hash based classes. it's a whole little factory, no cap.

SYNOPSIS

DESCRIPTION

THIS IS A BUNDLED COPY OF HASHBASE

yep, it says it right there in the heading ๐Ÿ’€

METHODS

  • PROVIDED BY HASH BASE โ€” the constructors you get handed:
    • $it = $class->new(%PAIRS)
    • $it = $class->new(\%PAIRS)
    • $it = $class->new(\@ORDERED_VALUES)
  • HOOKS โ€” the lil callback moment:
    • $self->init()

ACCESSORS

the accessor flavors:

  • 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>

Term::Table::LineBreak โ€” Break up lines for use in tables. โœ‚๏ธ

breaks up lines so they behave inside tables. very demure, very mindful.

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Term::Table::Util โ€” Utilities for Term::Table. ๐Ÿงฐ

utilities for Term::Table, the lil support squad.

DESCRIPTION

EXPORTS

  • CONSTANTS โ€” the boolean toggles:
    • $bool = USE_GCS
    • $bool = USE_TERM_READKEY
  • UTILITIES โ€” the helper functions:
    • $width = term_size()
    • $width = uni_length($string)

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test โ€” provides a simple framework for writing test scripts ๐Ÿงช

a simple framework for writing test scripts. the O.G. testing vibe, fr fr.

SYNOPSIS

DESCRIPTION

QUICK START GUIDE

  • Functions โ€” the starter pack:
    • plan(...)
    • "tests => number"
    • "todo => [1,5,14]"
    • "onfail => sub { ... }"
    • "onfail => \&some_sub"
  • _to_value
  • ok(...)
  • "skip(skip_if_true, args...)"

TEST TYPES

the categories, bestie:

  • NORMAL TESTS
  • SKIPPED TESTS
  • TODO TESTS

ONFAIL

BUGS and CAVEATS

read this one, it's not just filler ๐Ÿ˜ญ

ENVIRONMENT

NOTE

SEE ALSO

AUTHOR


Test2 โ€” Framework for writing test tools that all work together. ๐Ÿ”ง

a framework for writing test tools that all work together. teamwork makes the dream work โœจ

DESCRIPTION

  • WHAT IS NEW? โ€” the glow-up list:
    • 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 โ€” the namespace layout ๐Ÿ—บ๏ธ

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>

Test2::API โ€” Primary interface for writing Test2 based testing tools. ๐Ÿ”Œ

the primary interface for writing Test2 based testing tools. this is the plug, bestie.

INTERNALS NOTE

heed it ๐Ÿ’€

DESCRIPTION

SYNOPSIS

  • WRITING A TOOL
  • TESTING YOUR TOOLS
  • OTHER API FUNCTIONS

ENVIRONMENT VARIABLES

MAIN API EXPORTS

  • context(...) โ€” the context getter, with every flavor:
    • $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(...) โ€” the whole param parade:
    • $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 โ€” the state-checking crew:
    • $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 โ€” callback central:
    • 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 โ€” the parallel-processing zone:
    • $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 โ€” pick your output aesthetic:
    • $formatter = test2_formatter
    • test2_formatter_set($class_or_instance)
    • @formatters = test2_formatters()
    • test2_formatter_add($class_or_instance)
  • TIME STAMPS โ€” the clock controls:
    • test2_enable_trace_stamps()
    • test2_disable_trace_stamps()
    • $bool = test2_trace_stamps_enabled()

OTHER EXAMPLES

SEE ALSO

MAGIC

โœจ literally a section called MAGIC โœจ

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::API::Breakage โ€” What breaks at what version ๐Ÿ’ฅ

what breaks at what version. the drama registry, iykyk.

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>

Test2::API::Context โ€” Object to represent a testing context. ๐ŸŽŸ๏ธ

an object to represent a testing context. handle with care, bestie.

DESCRIPTION

SYNOPSIS

CRITICAL DETAILS

okay these are non-negotiable, so listen up ๐Ÿซถ:

  • 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 bestie, buckle up โ€” this is the good good, every method the context gives ya. listed right here, chaos-free:

  • $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 โœจ

the moment you've been waiting for, bestie โ€” a whole buffet of ways to make events happen. eat up:

  • $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 ๐Ÿช

INIT HOOKS

RELEASE HOOKS

no body text for these two in the ToC, bestie โ€” please don't @ me, that's just how the listing rolls ๐Ÿ™ˆ


THIRD PARTY META-DATA ๐ŸŒˆ

SOURCE ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>, Kent Fredric <kentnl@cpan.org>

Test2::API::Instance - Object used by Test2::API under the hood

DESCRIPTION ๐Ÿ’œ

no prose here in the listing, bestie โ€” it's giving mysterious ๐Ÿ’€

SYNOPSIS โœจ

lowkey a lot of method signatures dropped at once. hydrate, then read:
  • $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 ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::API::InterceptResult - Representation of a list of events.

DESCRIPTION ๐Ÿ’œ

SYNOPSIS โœจ

both empty here, bestie โ€” the ToC keeps it minimal and we respect it ๐Ÿ’…

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 ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::API::InterceptResult::Event - Representation of an event for use in testing other test tools.

DESCRIPTION ๐Ÿ’œ

SYNOPSIS โœจ

empty againnn, iconic of them honestly ๐Ÿ’…

METHODS ๐Ÿ’–

๐Ÿšจ !!! IMPORTANT NOTES ON DESIGN !!! ๐Ÿšจ

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 ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::API::InterceptResult::Hub - Hub used by InterceptResult.

SOURCE ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::API::InterceptResult::Squasher - Encapsulation of the algorithm that squashes diags into assertions.

DESCRIPTION ๐Ÿ’œ

SOURCE ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::API::Stack - Object to manage a stack of Test2::Hub instances.

INTERNALS NOTE โ€” that's the whole vibe, bestie, keep it in mind ๐Ÿ‘€

DESCRIPTION ๐Ÿ’œ

SYNOPSIS โœจ

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 ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::AsyncSubtest - Object representing an async subtest.

DESCRIPTION ๐Ÿ’œ

SYNOPSIS โœจ

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 ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::AsyncSubtest::Event::Attach - Event to attach a subtest to the parent.

DESCRIPTION ๐Ÿ’œ

SOURCE ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::AsyncSubtest::Event::Detach - Event to detach a subtest from the parent.

DESCRIPTION ๐Ÿ’œ

SOURCE ๐Ÿ“

MAINTAINERS ๐Ÿ‘‘

  • Chad Granum <exodist@cpan.org>

AUTHORS ๐Ÿซถ

  • Chad Granum <exodist@cpan.org>

Test2::AsyncSubtest::Hub โ€” Hub used by async subtests ๐Ÿ’…

DESCRIPTION

ok bestie you know how async subtests need somewhere to, like, live? This is that place. โœจ

SYNOPSIS

METHODS

  • $ast = $hub->ast โ€” grab the subtest object this hub is vibing with ๐Ÿซถ

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

Test2::Bundle โ€” Documentation for bundles ๐ŸŒธ

DESCRIPTION

FAQ Should my bundle subclass Test2::Bundle?

HOW DO I WRITE A BUNDLE?

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

Test2::Bundle::Extended โ€” Old name for Test2::V0 ๐Ÿฆ‹

*** DEPRECATED *** โ€” yeah bestie, this one's giving "old news", use the new name fr fr ๐Ÿ’€

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() โ€” the current context, no biggie โœจ
  • $events = intercept { ... } โ€” catch all the events happening inside the block ๐Ÿ‘‘

TOOLS

TARGET

  • $CLASS โ€” the class ๐Ÿ’…
  • $class = CLASS() โ€” get that class โœจ

DEFER

  • def $func => @args; โ€” defer a call, lowkey iconic ๐Ÿซถ
  • do_def() โ€” run the deferred thing

BASIC

  • ok($bool, $name) โ€” the classic
  • pass($name) โ€” slay, you passed ๐Ÿ’–
  • fail($name) โ€” rip, you didn't ๐Ÿ˜ญ
  • diag($message) โ€” the little note to your future self
  • note($message) โ€” same vibe
  • $todo = todo($reason) โ€” mark it todo ๐ŸŽ€
  • todo $reason => sub { ... } โ€” todo, but wrapped around a block
  • skip($reason, $count) โ€” not today bestie
  • plan($count) โ€” set the plan
  • skip_all($reason) โ€” bail on the whole thing
  • done_testing() โ€” we're done here periodt
  • bail_out($reason) โ€” emergency exit ๐Ÿšจ

COMPARE

  • is($got, $want, $name) โ€” equal check
  • isnt($got, $do_not_want, $name) โ€” not-equal check
  • like($got, qr/match/, $name) โ€” regex match
  • unlike($got, qr/mismatch/, $name) โ€” regex non-match
  • $check = match(qr/pattern/) โ€” a matcher
  • $check = mismatch(qr/pattern/) โ€” a non-matcher
  • $check = validator(sub { return $bool }) โ€” your own little validator
  • $check = hash { ... } โ€” hash shape check
  • $check = array { ... } โ€” array shape check
  • $check = bag { ... } โ€” bag shape check
  • $check = object { ... } โ€” object shape check
  • $check = meta { ... } โ€” meta check
  • $check = number($num) โ€” numeric check
  • $check = string($str) โ€” string check
  • $check = check_isa($class_name) โ€” isa check
  • $check = in_set(@things) โ€” in the set โœจ
  • $check = not_in_set(@things) โ€” not in the set
  • $check = check_set(@things) โ€” set check
  • $check = item($thing) โ€” an item
  • $check = item($idx => $thing) โ€” an item at a specific index
  • $check = field($name => $val) โ€” a field
  • $check = call($method => $expect) โ€” a method call
  • $check = call_list($method => $expect) โ€” a call returning a list
  • $check = call_hash($method => $expect) โ€” a call returning a hash
  • $check = prop($name => $expect) โ€” a property
  • $check = check($thing) โ€” check the thing
  • $check = T() โ€” true
  • $check = F() โ€” false
  • $check = D() โ€” defined
  • $check = DF() โ€” defined and false
  • $check = E() โ€” empty
  • $check = DNE() โ€” does not exist
  • $check = FDNE() โ€” false, does not exist
  • $check = U() โ€” undefined
  • $check = L() โ€” list
  • $check = exact_ref($ref) โ€” exact ref match
  • end() โ€” end it
  • etc() โ€” etc etc ๐Ÿ’…
  • filter_items { grep { ... } @_ } โ€” filter those items
  • $check = event $type => .. โ€” event check
  • @checks = fail_events $type => .. โ€” fail events checks

CLASSIC COMPARE

  • cmp_ok($got, $op, $want, $name) โ€” the old-school compare ๐ŸŽ€

SUBTEST

  • subtest $name => sub { ... } โ€” subtest time, nesting slays ๐ŸŒˆ

CLASS

  • can_ok($thing, @methods) โ€” can it do the thing?
  • isa_ok($thing, @classes) โ€” is it a thing?
  • DOES_ok($thing, @roles) โ€” does it do the role?

ENCODING

  • set_encoding($encoding) โ€” set that encoding โœจ

EXPORTS

  • imported_ok('function', '$scalar', ...) โ€” did it get imported?
  • not_imported_ok('function', '$scalar', ...) โ€” did it not get imported?

REF

  • ref_ok($ref, $type) โ€” ref check
  • ref_is($got, $want) โ€” same ref
  • ref_is_not($got, $do_not_want) โ€” not the same ref

MOCK

  • $control = mock .. โ€” mock something ๐Ÿซถ
  • $bool = mocked($thing) โ€” is it mocked?

EXCEPTION

  • $exception = dies { ... } โ€” it died ๐Ÿ˜ญ
  • $bool = lives { ... } โ€” it lived โœจ
  • $bool = try_ok { ... } โ€” it tried ok

WARNINGS

  • $count = warns { ... } โ€” how many warnings
  • $warning = warning { ... } โ€” the warning itself
  • $warnings_ref = warnings { ... } โ€” all the warnings
  • $bool = no_warnings { ... } โ€” no warnings, clean vibes ๐Ÿ’–

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

Test2::Bundle::More โ€” ALMOST a drop-in replacement for Test::More ๐Ÿ‘‘

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 &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

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 &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

Test2::Compare โ€” Test2 extension for writing deep comparison tools. ๐Ÿงš

DESCRIPTION

SYNOPSIS

EXPORTS

  • $delta = compare($got, $expect, \&convert) โ€” run the compare bestie โœจ
  • $build = get_build() โ€” get the build
  • push_build($build) โ€” push the build onto the stack
  • $build = pop_build($build) โ€” pop it off
  • build($class, sub { ... }) โ€” build something new
  • $check = convert($thing) โ€” turn a thing into a check
  • $check = convert($thing, $config) โ€” with config this time
  • implicit_end => 1 โ€” option flag
  • use_regex => 1 โ€” option flag
  • use_code => 0 โ€” option flag
  • $check = strict_convert($thing) โ€” strict convert
  • implicit_end => 1 โ€” option flag
  • use_code => 0 โ€” option flag
  • use_regex => 0 โ€” option flag
  • $compare = relaxed_convert($thing) โ€” relaxed convert
  • implicit_end => 0 โ€” option flag
  • use_code => 1 โ€” option flag
  • use_regex => 1 โ€” option flag

WRITING A VARIANT OF IS/LIKE

  • compare()
  • \&convert
  • $delta

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

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 &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

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 &lt;exodist@cpan.org&gt;
  • Gianni Ceccarelli &lt;dakkar@thenautilus.net&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;
  • Gianni Ceccarelli &lt;dakkar@thenautilus.net&gt;

Test2::Compare::Base โ€” Base class for comparison classes. ๐Ÿ‘‘

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 &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

Test2::Compare::Bool โ€” Compare two values as booleans โœจ

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

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 &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;
  • Daniel Bรถhmer &lt;dboehmer@cpan.org&gt;

Test2::Compare::DeepRef โ€” Ref comparison ๐Ÿซถ

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

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 &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

Test2::Compare::Event โ€” Event specific Object subclass. ๐ŸŒธ

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

Test2::Compare::EventMeta โ€” Meta class for events in deep comparisons ๐Ÿงš

DESCRIPTION

DEFINED CHECKS

  • file
  • line
  • package
  • subname
  • debug
  • tid
  • pid

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

Test2::Compare::Float โ€” Compare two values as numbers with tolerance. โœจ

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Chad Granum &lt;exodist@cpan.org&gt;

AUTHORS

  • Andrew Grangaard <spazm@cpan.org>

(the heading's here, the TOC just has nothing to say under it โ€” no cap, it's genuinely blank) ๐ŸŽ€


Test2::Compare::Hash โ€” Representation of a hash in a deep comparison. ๐Ÿ’–

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Isa โ€” Check if the value is an instance of the class. ๐Ÿ‘‘

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>, TOYAMA Nao <nanto@moon.email.ne.jp>

Test2::Compare::Meta โ€” Check library for meta-checks โœจ

DESCRIPTION

DEFINED CHECKS

  • blessed
  • reftype
  • isa
  • this
  • size

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Negatable โ€” Poor mans 'role' for compare objects that can be negated. ๐Ÿ’…

yes bestie, it literally calls itself a "poor mans 'role'" โ€” we're just reporting the facts here. ๐Ÿซถ

DESCRIPTION

WHY?

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>

Test2::Compare::Number โ€” Compare two values as numbers ๐Ÿ”ข

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Object โ€” Representation of an object during deep comparison. ๐Ÿฆ‹

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>

Test2::Compare::OrderedSubset โ€” Internal representation of an ordered subset. ๐ŸŒธ

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>

Test2::Compare::Pattern โ€” Use a pattern to validate values in a deep comparison. ๐ŸŒˆ

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Ref โ€” Ref comparison ๐Ÿซถ

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Regex โ€” Regex direct comparison ๐Ÿ”ฅ

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Scalar โ€” Representation of a Scalar Ref in deep comparisons ๐Ÿ’œ

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Set โ€” Allows a field to be matched against a set of checks. ๐ŸŽ€

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::String โ€” Compare two values as strings ๐Ÿ”ค

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Undef โ€” Check that something is undefined ๐Ÿ’€

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Compare::Wildcard โ€” Placeholder check. โญ

DESCRIPTION

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Env โ€” Documentation for environment variables used or set by Test2. ๐ŸŒ

okay so this one is literally just a list of env vars, and every single one of them gets its own lil moment. not me reading them all out loud fr fr. ๐Ÿ“ข

DESCRIPTION

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

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event โ€” Base class for events ๐Ÿ‘‘

the blueprint. the blueprint-est blueprint. everything else in this family is giving "child of this". ๐Ÿ’–

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>

Test2::Event::Bail โ€” Bailout! ๐Ÿšจ

DESCRIPTION

SYNOPSIS

METHODS

  • $reason = $e->reason

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::Diag โ€” Diag event type ๐Ÿ’ฌ

DESCRIPTION

SYNOPSIS

ACCESSORS

  • $diag->message

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::Encoding โ€” Set the encoding for the output stream ๐Ÿˆบ

DESCRIPTION

SYNOPSIS

METHODS

  • $encoding = $e->encoding

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::Exception โ€” Exception event ๐Ÿ˜ญ

DESCRIPTION

SYNOPSIS

METHODS

  • $reason = $e->error

CAVEATS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::Fail โ€” Event for a simple failed assertion ๐Ÿ’€

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::Generic โ€” Generic event type. ๐Ÿงš

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>

Test2::Event::Note โ€” Note event type ๐Ÿ“

DESCRIPTION

SYNOPSIS

ACCESSORS

  • $note->message

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::Ok โ€” Ok event type โœ…

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>

Test2::Event::Pass โ€” Event for a simple passing assertion ๐ŸŽ‰

DESCRIPTION

SYNOPSIS

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::Plan โ€” The event of a plan ๐Ÿ—บ๏ธ

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>

Test2::Event::Skip โ€” Skip event type โญ๏ธ

DESCRIPTION

SYNOPSIS

ACCESSORS

  • $reason = $e->reason

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::Subtest โ€” Event for subtest types ๐Ÿช†

DESCRIPTION

ACCESSORS

  • $arrayref = $e->subevents
  • $bool = $e->buffered

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::TAP::Version โ€” Event for TAP version. ๐Ÿ“ผ

DESCRIPTION

SYNOPSIS

METHODS

  • $version = $e->version

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>

Test2::Event::V2 โ€” Second generation event. ๐Ÿ’ซ

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>

COPYRIGHT

Since we're continuing, let me pick up right where we left off with the Test2 event facets, besties โœจ


๐Ÿฆ‹ 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.

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

  • 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::Handle โ€” Base class for Test2 handles used in V# bundles.

DESCRIPTION

SYNOPSIS

WITHOUT SUGAR

METHODS

  • $base = $class_or_inst->DEFAULT_HANDLE_BASE, $base = $inst->HANDLE_BASE, $namespace = $inst->HANDLE_NAMESPACE, @sub_names = $inst->HANDLE_SUBS, $inst->HANDLE_INCLUDE($package, @subs), $inst = $class->import(), $inst->init(), AUTOLOAD

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@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_up(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)

๐Ÿ“ SOURCE

๐Ÿงš MAINTAINERS

  • Chad Granum <exodist@cpan.org>

๐ŸŽ€ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŒˆ Test2::IPC - Turn on IPC for threading or forking support.

โญ SYNOPSIS

DISABLING IT

๐ŸŽ EXPORTS

  • cull()

๐Ÿ“ SOURCE

๐Ÿงš MAINTAINERS

  • Chad Granum <exodist@cpan.org>

๐ŸŽ€ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ”ฅ Test2::IPC::Driver - Base class for Test2 IPC drivers.

โญ 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.

๐Ÿ’– 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.

๐Ÿ’– 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.

๐Ÿ’– 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.

๐Ÿ’– 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.

๐Ÿ’– 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.

๐Ÿ’– 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

๐Ÿ’– 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.

๐Ÿ’– 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.

๐Ÿ’– 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.

๐Ÿ’– 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

  • 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.

๐Ÿ’– 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.

๐Ÿ’– 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.

๐Ÿ’– DESCRIPTION

๐Ÿฝ๏ธ BOILERPLATE

๐Ÿ“„ THE TEST FILE

  • use Test2::V1 -ipP;, done_testing;

โš™๏ธ DIST CONFIG

โœ… MAKING ASSERTIONS

๐Ÿƒ RUNNING THE TEST

๐Ÿƒ RUN DIRECTLY

๐ŸŽก USING YATH

๐Ÿงช USING PROVE

๐Ÿ“‹ THE "PLAN"

  • done_testing(), T2->done_testing(), plan($COUNT), T2->plan($COUNT)

ADDITIONAL ASSERTION TOOLS ๐ŸŽฏ

these ones all hang out together, bestie:

  • is($a, $b, $description), T2->is($a, $b, $description), like($a, $b, $description), T2->like($a, $b, $description)
  • SEE ALSO
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Manual::Testing::Migrating โ€” How to migrate existing tests from Test::More to Test2. ๐Ÿššโœจ

DESCRIPTION

LEGACY TEST

BOILERPLATE

  • Replace Test::More with Test2::V1
  • NOTE: srand
  • Stop using use_ok()
  • Stop using require_ok()
  • (optional) remove strict/warnings
  • 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

  • IMPORTS
  • REDUCED BOILERPLATE
  • CLEAN NAMESPACE
  • SEE ALSO
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Manual::Testing::Planning โ€” The many ways to set a plan. ๐Ÿ—บ๏ธ

DESCRIPTION

TEST COUNT

DONE TESTING

SKIP ALL

CUSTOM PLAN EVENT

  • SEE ALSO
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Manual::Tooling::Nesting โ€” Tutorial for using other tools within your own. ๐Ÿช†

DESCRIPTION

NAIVE WAY

  • WHAT'S WRONG WITH IT?
  • HOW TO FIX IT
  • SEE ALSO
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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
  • $tb->todo_output

LEVEL

TODO

  • SEE ALSO
  • SOURCE
  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Plugin โ€” Documentation for plugins ๐Ÿ’œ

DESCRIPTION

FAQ Should I subclass Test2::Plugin?

HOW DO I WRITE A PLUGIN?

SOURCE

  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Plugin::BailOnFail โ€” Automatically bail out of testing on the first test failure. ๐Ÿšจ

DESCRIPTION

SYNOPSIS

SOURCE

  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Plugin::DieOnFail โ€” Automatically die on the first test failure. ๐Ÿ’€

DESCRIPTION

SYNOPSIS

SOURCE

  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Plugin::ExitSummary โ€” Add extra diagnostics on failure at the end of the test. ๐Ÿ“‹

DESCRIPTION

SYNOPSIS

SOURCE

  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Plugin::SRand โ€” Control the random seed for more controlled test environments. ๐ŸŽฒ

DESCRIPTION

SYNOPSIS

NOTE ON LOAD ORDER

CAVEATS

SOURCE

  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Plugin::Times โ€” Output timing data at the end of the test. โฑ๏ธ

CAVEAT

DESCRIPTION

SYNOPSIS

SOURCE

  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

Test2::Plugin::UTF8 โ€” Test2 plugin to test with utf8. ๐ŸŒˆ

DESCRIPTION

SYNOPSIS

import options

  • encoding_only

NOTES

SOURCE

  • MAINTAINERS โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

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 โ€” Chad Granum <exodist@cpan.org>
  • AUTHORS โ€” Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿฆ‹ Test2::Require::AuthorTesting โ€” only run a test when the AUTHOR_TESTING environment variable is set

bestie some tests are just Not For Strangers. this one checks that env var and dips out if it's not your moment ๐Ÿ’…

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿค– Test2::Require::AutomatedTesting โ€” only run a test when the AUTOMATED_TESTING environment variable is set

CI machines get their own little lane and honestly? they earned it โœจ

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐ŸŽ€ Test2::Require::EnvVar โ€” only run a test when a specific environment variable is set

name the env var, and the test only runs when it's actually there. picky behaviour, iconic results ๐ŸŒธ

  • DESCRIPTION
  • SYNOPSIS
  • SOURCE
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • AUTHORS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

๐Ÿ”ฅ Test2::Require::ExtendedTesting โ€” only run a test when the EXTENDED_TESTING environment variable is set

the long-haul testing era. if you flipped that env var on, you asked for it, and you're getting it ๐Ÿ’–

  • 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 forking on this platform? no problem, the file just politely skips itself instead of exploding ๐Ÿ˜ญ

  • 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

you literally just tell it which packages (and which versions) you need, and it handles the whole "is this even installed" situation for you. so considerate ๐Ÿซถ

  • 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

for the tests that need nobody sitting there typing at prompts. set the var, get the tests, simple as that ๐Ÿ‘‘

  • 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

your module says "hey I need this Perl version" and the test checks out gracefully if your Perl is, respectfully, too old ๐Ÿ™ˆ

  • 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

not the fake kind. true forking. the whole file taps out politely if the system can't hang ๐Ÿ’…

  • 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

pre-release era only. the tests that get to show up when you're actually about to ship something ๐ŸŽ€

  • 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

threads not available? the file skips instead of throwing hands. love that for everyone ๐Ÿ’œ

  • 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 bundle of goodies, all built on the Test2 framework. the dictionary of the whole operation, basically ๐ŸŒˆ

  • 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

okay so this is the polite wrapper for tests you know are currently failing and you're not pretending otherwise. it keeps the TODO vibes contained instead of leaking all over your output ๐Ÿ’…

  • 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 "how do I even write one of these" page. yes it has a FAQ. yes the FAQ is eating ๐Ÿ™Œ

  • 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

for when your tests need to run in their own little asynchronous lane ๐Ÿฆ‹

  • 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 starter pack. if you've written a test before, you already know half of this list in your soul ๐Ÿ’–

  • 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

all the "is this a thing, can this thing do the thing, does it claim the role" checks in one place ๐Ÿ‘‘

  • 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

the old-school comparison crew, but make it Test2. if you migrated from Test::More and missed your faves, they're right here ๐Ÿฅน

  • 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 operators it'll happily take:

!=  (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, validators, the whole main character moment ๐Ÿ”ฅ

  • 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 โœจ

like, this is the whole toolkit for checking objects, and it's giving so many options bestie ๐Ÿ’… every single one of them, no cap:

  • $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 ๐ŸŒˆ

building fake events from scratch, iconic behaviour honestly ๐Ÿฆ‹:

  • $check = event $TYPE;
  • $check = event $TYPE => sub { ... };
  • $check = event $TYPE => { ... };
  • '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>


๐Ÿฆ‹ 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>


โœจ 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>


๐Ÿ’œ 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>


๐ŸŽ€ 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>


๐ŸŒˆ 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>


๐Ÿ“ 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>


๐Ÿ’… 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>


๐Ÿงš 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>


๐Ÿ”— 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>


๐Ÿซถ 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>


๐ŸŽ 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>


๐ŸŽฏ Test2::Tools::Target โ€” Alias the testing target package. ๐ŸŽฏ

DESCRIPTION

SYNOPSIS

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

Chad Granum <exodist@cpan.org>

๐ŸŒธ AUTHORS

Chad Granum <exodist@cpan.org>


๐Ÿ” 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>


๐Ÿฃ 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>


โš ๏ธ 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>


๐Ÿฆ‹ 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

okay so this is the drama corner of the ToC ๐Ÿ’… โ€” here's every module that either works-but-tests-fail, needs an upgrade, or is straight up still broken. Read it like a group chat callout post:

  • 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 โ€” no entries listed under it in the index, she's empty ๐Ÿซถ
  • TEST2 โ€” this is where the goods live:
    • ok($bool, $name), diag(@messages), note(@messages), subtest($name, $code)

WRAP EXISTING TOOLS

  • LEGACY โ€” nothing under it in the index
  • TEST2 โ€” also nothing under it in the index

USING UTF8

  • LEGACY โ€” nothing listed
  • TEST2 โ€” nothing listed

AUTHORS, CONTRIBUTORS AND REVIEWERS

  • Chad Granum (EXODIST) <exodist@cpan.org>

SOURCE

(the ToC points you here and then says nothing else, classic ๐Ÿ’€)

MAINTAINER

  • Chad Granum <exodist@cpan.org>

Test2::Util - Tools used by Test2 and friends.

DESCRIPTION

EXPORTS

  • ($success, $error) = try { ... }, protect { ... }, CAN_FORK, CAN_REALLY_FORK, CAN_THREAD, USE_THREADS, get_tid, my $file = pkg_to_file($package), $string = ipc_separator(), $string = gen_uid(), ($ok, $err) = do_rename($old_name, $new_name), ($ok, $err) = do_unlink($filename)

NOTES && CAVEATS

  • Devel::Cover

SOURCE

MAINTAINERS

  • Chad Granum <exodist@cpan.org>

AUTHORS

  • Chad Granum <exodist@cpan.org>, Kent Fredric <kentnl@cpan.org>

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()

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>
    • 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()
  • 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), $addr_str = render_ref($ref)

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(...)
    • header => [ ... ], rows => [ [...], [...], ... ], collapse => $bool, max_width => $num, sanitize => $bool, mark_tail => $bool
  • my $cols = term_size()

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>

okay bestie this one is the main character fr fr ๐Ÿ‘‘

V1 IS OUT NOW!

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>

๐ŸŒธ DESCRIPTION

Key differences from Test2::V0

  • Only 1 export by default: T2()
  • No pragmas by default
  • srand and utf8 are not enabled by default
  • Easy to still import everything
  • East to still enable pragmas

๐Ÿท๏ธ NAMING, USING, DEPENDING

๐Ÿ“œ SYNOPSIS

WORK LIKE V0 DID

IMPORT ARGUMENT GUIDE

  • -P or -plugins
  • -p or -pragmas
  • -i or -import
  • -x
  • -ipP
  • -pPi
  • -pP
  • -Pix, etc.
  • @EXPORT_LIST
  • !EXPORT_NAME
  • EXPORT_NAME => { -as => "ALT_NAME" }
  • EXPORT_NAME => { -prefix => "PREFIX_" }
  • EXPORT_NAME => { -postfix => "_POSTFIX" }

RENAMING IMPORTS

  • '-import', '!ok', ok => {-as => 'my_ok'}

๐Ÿงฉ PRAGMAS AND PLUGINS

  • strict, warnings, srand, utf8, summary

๐ŸŒ ENVIRONMENT VARIABLES

๐Ÿ”Œ API FUNCTIONS

  • $ctx = T2->context(), $events = T2->intercept(sub { ... })

๐ŸŽ›๏ธ THE T2() HANDLE

ADDING/OVERRIDING TOOLS IN YOUR T2 HANDLE

OTHER HANDLE OPTIONS

  • include => $ARRAYREF_OR_HASHREF, namespace => $NAMESPACE, stomp => $BOOL, base => $BASE

๐ŸŽฌ EXAMPLE USE CASES

OVERRIDING INCLUDED TOOLS WITH ALTERNATES

๐Ÿ› ๏ธ 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 { ... }

๐Ÿงพ JUSTIFICATION

PROBLEMS WITH V0

  • Assumptions of strict/warnings
  • Assumptions of UTF8
  • Huge default set of exports, which can grow

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿš Test2::V1::Base โ€” Base namespace used for Test2::Handle objects created via Test2::V1.

๐ŸŒธ DESCRIPTION

๐Ÿ“œ SYNOPSIS

๐ŸŽ INCLUDED FUNCTIONALITY

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŽ€ Test2::V1::Handle โ€” V1 subclass of Test2::Handle.

๐ŸŒธ DESCRIPTION

๐Ÿ“œ SYNOPSIS

๐Ÿช„ SUBCLASS OVERRIDES

๐Ÿ‘€ SEE ALSO

๐Ÿ“ฆ 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.

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ—๏ธ Test2::Workflow::Build โ€” Represents a build in progress.

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿƒ Test2::Workflow::Runner โ€” Runs the workflows.

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ—‚๏ธ Test2::Workflow::Task โ€” Encapsulation of a Task

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

โšก Test2::Workflow::Task::Action โ€” Encapsulation of an action.

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿซ‚ Test2::Workflow::Task::Group โ€” Encapsulation of a group (describe).

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ”ง Test::Builder โ€” Backend for building test libraries

๐Ÿ“œ 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

๐ŸŒธ DESCRIPTION

๐Ÿ“œ SYNOPSIS

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐Ÿ“ฆ Test::Builder::Module โ€” Base class for test modules

๐Ÿ“œ SYNOPSIS

๐ŸŒธ DESCRIPTION

๐Ÿ“ฅ Importing

๐Ÿ—๏ธ Builder

๐Ÿ‘€ SEE ALSO


๐Ÿงช Test::Builder::Tester โ€” test testsuites that have been built with Test::Builder

๐Ÿ“œ 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

๐Ÿ“œ SYNOPSIS

๐ŸŒธ DESCRIPTION

โœ๏ธ AUTHOR

๐Ÿ› BUGS

๐Ÿ‘€ SEE ALSO


๐Ÿ’Œ Test::Builder::TodoDiag โ€” Test::Builder subclass of Test2::Event::Diag

๐ŸŒธ DESCRIPTION

๐Ÿ“œ SYNOPSIS

๐Ÿ“ฆ SOURCE

๐Ÿ‘‘ MAINTAINERS

  • Chad Granum <exodist@cpan.org>

โœ๏ธ AUTHORS

  • Chad Granum <exodist@cpan.org>

๐ŸŽช Test::Harness โ€” Run Perl standard test scripts with statistics

๐Ÿ”– 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

๐Ÿ“œ 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

And the rest of that module's table of contents just keeps on giving โ€” no skipping, bestie:

  • HISTORY
  • SEE ALSO
    • ALTERNATIVES
    • ADDITIONAL LIBRARIES
    • OTHER COMPONENTS
    • BUNDLES
  • ENVIRONMENT VARIABLES
  • AUTHORS
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • BUGS
  • SOURCE
  • COPYRIGHT

<h2>๐ŸŽ€ Test::Simple โ€” Basic utilities for writing tests. ๐ŸŽ€</h2>

Section lineup, in order, no notes:

  • SYNOPSIS
  • DESCRIPTION
    • ok
  • EXAMPLE
  • CAVEATS
  • NOTES
  • HISTORY
  • SEE ALSO
    • Test::More
  • AUTHORS
  • MAINTAINERS
    • Chad Granum <exodist@cpan.org>
  • COPYRIGHT

<h2>๐Ÿ’– Test::Tester โ€” Ease testing test modules built with Test::Builder ๐Ÿ’–</h2>

  • 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 <span>โœจ</span> (yes babe, with a U, that's the whole point)
  • EXPORTED FUNCTIONS
  • HOW IT WORKS
  • CAVEATS
  • SEE ALSO
  • AUTHOR
  • LICENSE

<h2>๐Ÿฆ‹ Test::Tester::Capture โ€” Help testing test modules built with Test::Builder ๐Ÿฆ‹</h2>

  • DESCRIPTION
  • AUTHOR
  • LICENSE

<h2>๐ŸŒธ Test::Tester::CaptureRunner โ€” Help testing test modules built with Test::Builder ๐ŸŒธ</h2>

  • DESCRIPTION
  • AUTHOR
  • LICENSE

<h2>๐Ÿ’… Test::Tutorial โ€” A tutorial about writing really basic tests ๐Ÿ’…</h2>

  • 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>
  • COPYRIGHT

<h2>โœจ Test::use::ok โ€” Alternative to Test::More::use_ok โœจ</h2>

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO
  • MAINTAINER
    • Chad Granum <exodist@cpan.org>
  • CC0 1.0 Universal

<h2>๐Ÿ“ Text::Abbrev โ€” abbrev - create an abbreviation table from a list ๐Ÿ“</h2>

  • SYNOPSIS
  • DESCRIPTION
  • EXAMPLE

<h2>๐Ÿงš Text::Balanced โ€” Extract delimited text sequences from strings. ๐Ÿงš</h2>

  • 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
    • Did not find a suitable bracket: "%s"
    • Did not find prefix: /%s/
    • Did not find opening bracket after prefix: "%s"
    • No quotelike operator found after prefix: "%s"
    • Unmatched closing bracket: "%c"
    • Unmatched opening bracket(s): "%s"
    • Unmatched embedded quote (%s)
    • Did not find closing delimiter to match '%s'
    • Mismatched closing bracket: expected "%c" but found "%s"
    • No block delimiter found after quotelike "%s"
    • Did not find leading dereferencer
    • Bad identifier after dereferencer
    • Did not find expected opening bracket at %s
    • Improperly nested codeblock at %s
    • Missing second block for quotelike "%s"
    • No match found for opening bracket
    • Did not find opening tag: /%s/
    • Unable to construct closing tag to match: /%s/
    • Found invalid nested tag: %s
    • Found unbalanced nested tag: %s
    • Did not find closing tag
  • EXPORTS
    • Default Exports, Optional Exports, Export Tags, ":ALL"
  • KNOWN BUGS
  • FEEDBACK
  • AVAILABILITY
  • INSTALLATION
  • AUTHOR
  • COPYRIGHT
  • LICENCE
  • VERSION
  • DATE
  • HISTORY

<h2>๐ŸŒˆ Text::ParseWords โ€” parse text into an array of tokens or array of arrays ๐ŸŒˆ</h2>

  • SYNOPSIS
  • DESCRIPTION
    • true, false, "delimiters"
  • EXAMPLES
    • 0, 1, 2, 3, 4, 5
  • SEE ALSO
  • AUTHORS
  • COPYRIGHT AND LICENSE

<h2>โญ Text::Tabs โ€” expand and unexpand tabs like unix expand(1) and unexpand(1) โญ</h2>

  • SYNOPSIS
  • DESCRIPTION
  • EXPORTS
    • expand, unexpand, $tabstop
  • EXAMPLE
  • BUGS
  • LICENSE

<h2>๐Ÿ’œ Text::Wrap โ€” line wrapping to form simple paragraphs ๐Ÿ’œ</h2>

  • SYNOPSIS
  • DESCRIPTION
  • OVERRIDES
  • EXAMPLES
  • SEE ALSO
  • AUTHOR
  • LICENSE

<h2>๐Ÿ‘‘ Thread โ€” Manipulate threads in Perl (for old code only) ๐Ÿ‘‘</h2>

okay so heads up: this one literally says "for old code only" in its own tagline. Not me being dramatic, that's the actual description. ๐Ÿ’€
  • 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

<h2>๐ŸŽ€ Thread::Queue โ€” Thread-safe queues ๐ŸŽ€</h2>

  • 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

<h2>๐Ÿซถ Thread::Semaphore โ€” Thread-safe semaphores ๐Ÿซถ</h2>

  • 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

<h2>๐Ÿ’– Tie::Array โ€” base class for tied arrays ๐Ÿ’–</h2>

  • 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

<h2>๐Ÿ’… Tie::File โ€” Access the lines of a disk file via a Perl array ๐Ÿ’…</h2>

  • 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

<h2>๐ŸŒธ Tie::Handle โ€” base class definitions for tied handles ๐ŸŒธ</h2>

  • 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

<h2>๐Ÿฆ‹ Tie::Hash, Tie::StdHash, Tie::ExtraHash โ€” base class definitions for tied hashes ๐Ÿฆ‹</h2>

  • 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

<h2>โœจ Tie::Hash::NamedCapture โ€” Named regexp capture buffers โœจ</h2>

  • SYNOPSIS
  • DESCRIPTION
  • SEE ALSO

<h2>๐Ÿ“ Tie::Memoize โ€” add data to hash when needed ๐Ÿ“</h2>

  • SYNOPSIS
  • DESCRIPTION
  • Inheriting from Tie::Memoize
  • EXAMPLE
  • BUGS
  • AUTHOR

<h2>๐Ÿงš Tie::RefHash โ€” Use references as hash keys ๐Ÿงš</h2>

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
  • EXAMPLE
  • THREAD SUPPORT
  • STORABLE SUPPORT
  • SEE ALSO
  • SUPPORT
  • AUTHORS
  • CONTRIBUTORS
  • COPYRIGHT AND LICENCE

<h2>๐ŸŒˆ Tie::Scalar, Tie::StdScalar โ€” base class definitions for tied scalars ๐ŸŒˆ</h2>

  • SYNOPSIS
  • DESCRIPTION
    • TIESCALAR classname, LIST, FETCH this, STORE this, value, DESTROY this
    • Tie::Scalar vs Tie::StdScalar
  • MORE INFORMATION

<h2>๐Ÿ’œ Tie::StdHandle โ€” base class definitions for tied handles ๐Ÿ’œ</h2>

  • SYNOPSIS
  • DESCRIPTION

<h2>โญ Tie::SubstrHash โ€” Fixed-table-size, fixed-key-length hashing โญ</h2>

  • SYNOPSIS
  • DESCRIPTION
  • CAVEATS

<h2>๐Ÿ‘‘ Time::HiRes โ€” High resolution alarm, sleep, gettimeofday, interval timers ๐Ÿ‘‘</h2>

  • 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

<h2>๐ŸŽ€ Time::Local โ€” Efficiently compute time from local and GMT time ๐ŸŽ€</h2>

  • 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

<h2>๐Ÿซถ Time::Piece โ€” Object Oriented time objects ๐Ÿซถ</h2>

  • SYNOPSIS
  • DESCRIPTION
  • Public Methods
    • Time Components
    • Date Components
    • Day and Month Names
    • Formatted Date/Time Output
    • Epoch and Calendar Calculations
    • Timezone and DST
      • 0 for GMT/UTC times (they never have DST), 0 or 1 for local times depending on whether DST is active, Automatically calculated if unknown
    • Utility Methods
    • Global Configuration
    • Parsing

๐Ÿ’ซ Date Calculations ๐Ÿ’ซ

Adding seconds works on UTC time, so adding 3600 seconds during a DST transition from 1:30 AM gives 3:30 AM โ€” not 2:30 AM, because 2:30 AM literally doesn't exist during "spring forward" ๐ŸŒธ. Subtracting across DST transitions may differ from your wall-clock expectations, because hours get skipped or repeated. The math is fine, the vibes are just off ๐Ÿซ .

๐ŸŒ™ Adding Months and Years ๐ŸŒ™

  • Adding months and years preserves the day-of-month number, and that can overflow โ€” Jan 31 + 1 month = Mar 3, since "Feb 31" doesn't exist, bestie ๐Ÿ˜ญ.
  • Wall-clock time is preserved across DST transitions โœจ.
  • Order matters: add_months(1) then + 86400 gives different results than "+ 86400" then add_months(1). Do not test me on this ๐Ÿ‘‘

๐ŸŒˆ Truncation ๐ŸŒˆ

๐ŸŒˆ Date Comparisons ๐ŸŒˆ

๐ŸŒˆ Date Parsing ๐ŸŒˆ

๐Ÿงš Basic Usage ๐Ÿงš

๐Ÿงš Supported Format Flags ๐Ÿงš

๐Ÿงš GMT vs Local Time ๐Ÿงš

๐Ÿงš Timezone Parsing with %z and %Z ๐Ÿงš

  • Offsets are applied to convert to UTC (+0500 means "5 hours ahead of UTC") ๐Ÿ•
  • Valid range: -1200 to +1400 with minutes less than 60 โฐ
  • For local objects ("islocal == 1"), the result is converted to system timezone ๐Ÿ—บ๏ธ

๐Ÿงš Handling Partial Dates ๐Ÿงš

๐Ÿงš Locale Considerations ๐Ÿงš

๐ŸŒˆ Global Overriding ๐ŸŒˆ

๐ŸŒˆ CAVEATS ๐ŸŒˆ

Okay so these are the parts where things get spicy. Read them, fr fr ๐Ÿ’€.

๐Ÿ‘‘ Setting $ENV{TZ} in Threads on Win32 ๐Ÿ‘‘

๐Ÿ‘‘ Use of epoch seconds ๐Ÿ‘‘

๐ŸŒˆ AUTHOR ๐ŸŒˆ

๐ŸŒˆ SEE ALSO ๐ŸŒˆ

๐ŸŒˆ BUGS ๐ŸŒˆ

  • The test harness leaves much to be desired. Patches welcome ๐Ÿ™
  • Proper UTF8 support

๐Ÿฆ‹ Time::Seconds โ€” a simple API to convert seconds to other date values ๐Ÿฆ‹

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ METHODS โœจ

โœจ AUTHOR โœจ

โœจ Bugs โœจ


๐ŸŽ€ Time::gmtime โ€” by-name interface to Perl's built-in gmtime() function ๐ŸŽ€

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ NOTE โœจ

โœจ AUTHOR โœจ


๐ŸŽ€ Time::localtime โ€” by-name interface to Perl's built-in localtime() function ๐ŸŽ€

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ NOTE โœจ

โœจ AUTHOR โœจ


๐ŸŽ€ Time::tm โ€” internal object used by Time::gmtime and Time::localtime ๐ŸŽ€

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ AUTHOR โœจ


๐Ÿ‘‘ UNIVERSAL โ€” base class for ALL classes (blessed references) ๐Ÿ‘‘

โœจ 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 ๐ŸŒˆ

โœจ 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 ๐ŸŒ™

โœจ 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 ๐Ÿฆ‹

โœจ 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 ๐Ÿฆ‹

โœจ 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 ๐Ÿฆ‹

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

โœจ SEE ALSO โœจ

  • Unicode::Collate
  • Unicode::Collate::Locale

๐Ÿฆ‹ Unicode::Collate::CJK::Korean โ€” weighting CJK Unified Ideographs for Unicode::Collate ๐Ÿฆ‹

โœจ 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 ๐Ÿฆ‹

โœจ 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 ๐Ÿฆ‹

โœจ 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 ๐Ÿฆ‹

โœจ 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 ๐Ÿ’–

โœจ 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 ๐ŸŒŸ

โœจ 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 ๐Ÿงš

  • "$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 ๐Ÿงš

  • "$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 ๐Ÿงš

  • "$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 โœจ

โœจ CAVEATS โœจ

๐ŸŒ™ Perl's version vs. Unicode version ๐ŸŒ™

๐ŸŒ™ Correction of decomposition mapping ๐ŸŒ™

๐ŸŒ™ Revised definition of canonical composition ๐ŸŒ™

โœจ AUTHOR โœจ

โœจ LICENSE โœจ

โœจ SEE ALSO โœจ


๐Ÿฆ„ Unicode::UCD โ€” Unicode character database ๐Ÿฆ„

โœจ SYNOPSIS โœจ

โœจ DESCRIPTION โœจ

๐Ÿ’œ code point argument ๐Ÿ’œ

โœจ charinfo() โœจ

The keys it hands you:

  • code
  • name
  • category
  • combining
  • bidi
  • decomposition
  • decimal
  • digit
  • numeric
  • mirrored
  • unicode10
  • comment
  • upper
  • lower
  • title
  • block
  • script

โœจ charprop() โœจ

The keys:

  • Block
  • Decomposition_Mapping
  • Name_Alias
  • Numeric_Value
  • Script_Extensions

โœจ charprops_all() โœจ

โœจ charblock() โœจ

โœจ charscript() โœจ

โœจ charblocks() โœจ

โœจ charscripts() โœจ

โœจ charinrange() โœจ

โœจ general_categories() โœจ

โœจ bidi_types() โœจ

โœจ compexcl() โœจ

โœจ casefold() โœจ

The items:

  • code
  • full
  • simple
  • mapping
  • status
  • If you use this "I" mapping,
  • If you exclude this "I" mapping,
  • turkic

โœจ all_casefolds() โœจ

โœจ casespec() โœจ

The items:

  • code
  • lower
  • title
  • upper
  • condition

โœจ namedseq() โœจ

โœจ num() โœจ

โœจ prop_aliases() โœจ

โœจ prop_values() โœจ

โœจ prop_value_aliases() โœจ

โœจ prop_invlist() โœจ

โœจ prop_invmap() โœจ

The items:

  • "s"
  • "sl"
  • "correction"
  • "control"
  • "alternate"
  • "figment"
  • "abbreviation"
  • "a"
  • "al"
  • "ae"
  • "ale"
  • "ar"
  • "n"
  • "ad"

โœจ search_invlist() โœจ

โœจ Unicode::UCD::UnicodeVersion โœจ

  • Blocks versus Scripts
  • Matching Scripts and Blocks
  • Old-style versus new-style block names
  • Use with older Unicode versions

and, closing that module's list out:

  • AUTHOR

That's a wrap on that one, bestie. ๐ŸŽ€


๐Ÿฆ‹ User::grent โ€” by-name interface to Perl's built-in getgr*() functions

The little section map inside this one:

  • SYNOPSIS
  • DESCRIPTION
  • NOTE
  • AUTHOR

Short, sweet, and honestly a whole vibe. ๐Ÿ’…


๐ŸŒธ User::pwent โ€” by-name interface to Perl's built-in getpw*() functions

Inside this one you get:

  • SYNOPSIS
  • DESCRIPTION
    • System Specifics
  • NOTE
  • AUTHOR
  • HISTORY
    • March 18th, 2000

Not the March 18th, 2000 section being its own whole subsection โ€” yes, that's exactly what it is. Periodt. ๐Ÿ—“๏ธโœจ


๐Ÿ”ฅ XSLoader โ€” Dynamically load C libraries into Perl code

Here's the full tour, all the sections you can jump to:

  • VERSION
  • SYNOPSIS
  • DESCRIPTION
    • Migration from "DynaLoader"
    • Backward compatible boilerplate
    • Order of initialization: early load()
    • The most hairy case
  • DIAGNOSTICS
    • "Can't find '%s' symbol in %s", "Can't load '%s' for module %s: %s", "Undefined symbols present after loading %s: %s"
  • LIMITATIONS
  • KNOWN BUGS
  • BUGS
  • SEE ALSO
  • AUTHORS
  • COPYRIGHT & LICENSE

Not the diagnostics having their own three lil quoted-error subsections, all on one line together โ€” iconic, honestly. ๐Ÿ’€โœจ


๐ŸŒˆ AUXILIARY DOCUMENTATION

Okay so this is the part where the fine folks writing the docs say: this is where all the extra programs' documentation should live, but they don't all have manual pages yet. So it's giving "coming soon, but emotionally". ๐Ÿ™ˆ

The programs in question:

  • h2ph
  • h2xs
  • perlbug
  • pl2pm
  • pod2html
  • pod2man
  • splain
  • xsubpp

Manifesting manual pages for all of them. ๐Ÿ•ฏ๏ธ๐Ÿซถ


๐Ÿ‘‘ AUTHOR

Larry Wall <larry@wall.org>, with the help of oodles of other folks.

Oodles. The man said oodles. And he's right, nobody writes a whole language alone. Lowkey the most wholesome line in the entire page, no cap. ๐Ÿ’–


and that's the whole perltoc page, start to finish! ๐ŸŽ‰ this little legend is from perl v5.44.0, dated 2026-10-17 โ€” you read the entire thing, bestie, you're literally the main character of the documentation. go perldoc something fun now. slay. ๐Ÿ’…๐ŸŒŸ

๐Ÿ“ฆ where this page comes from
  • arch rolling: perl 5.44.0-1 ยท Artistic-1.0-Perl AND GPL-1.0-or-later
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms