PERLTOC(1perl)
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
- SYNOPSIS
- GETTING HELP
- Overview
- Tutorials
- Reference Manual
- Internals and C Language Interface
- History
- Miscellaneous
- Language-Specific
- Platform-Specific
- Stubs for Deleted Documents
- DESCRIPTION
- AVAILABILITY
- ENVIRONMENT
- AUTHOR
- FILES
- SEE ALSO
- DIAGNOSTICS
- BUGS
- NOTES
๐ perlintro - a brief introduction and overview of Perl
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
HOMELOGDIRPATHPERL5LIBPERL5OPTPERLIO:crlf:perlio:stdio:unixPERLIO_DEBUGPERLLIBPERL5DBPERL5DB_THREADEDPERL5SHELL (specific to the Win32 port)PERL_ALLOW_NON_IFS_LSP (specific to the Win32 port)PERL_DEBUG_MSTATSPERL_DESTRUCT_LEVELPERL_DL_NONLAZYPERL_ENCODINGPERL_HASH_SEEDPERL_PERTURB_KEYSPERL_HASH_SEED_DEBUGPERL_MEM_LOGPERL_ROOT (specific to the VMS port)PERL_SIGNALSPERL_UNICODEPERL_USE_UNSAFE_INCSYS$LOGIN (specific to the VMS port)PERL_INTERNAL_RAND_SEEDPERL_RAND_SEED
- ORDER OF APPLICATION
-I,-M, thePERL5LIBenvironment variable, combinations of-I,-MandPERL5LIB, thePERL5OPTenvironment 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
- Moose
- 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
-wand 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?
AUTHOR AND COPYRIGHT ๐
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?
AUTHOR AND COPYRIGHT ๐
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 typesperlvar- Perl pre-defined variablesperlsyn- Perl syntaxperlop- Perl operators and precedenceperlsub- Perl subroutines
- Execution
perlrun- how to execute the Perl interpreterperldebug- Perl debugging
- Functions
perlfunc- Perl builtin functions
- Objects
perlref- Perl references and nested data structuresperlmod- Perl modules (packages and symbol tables)perlobj- Perl objectsperltie- how to hide an object class in a simple variable
- Data Structures
perlref- Perl references and nested data structuresperllol- Manipulating arrays of arrays in Perlperldsc- 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 expressionsperlfunc- Perl builtin functionsperlop- Perl operators and precedenceperllocale- Perl locale handling (internationalization and localization)
- Moving to perl5
perltrap- Perl traps for the unwaryperl
- Linking with C
perlxstut- Tutorial for writing XSUBsperlxs- XS language reference manualperlcall- Perl calling conventions from Cperlguts- Introduction to the Perl APIperlembed- how to embed perl in your C program
- Various
- Basics
- 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?
AUTHOR AND COPYRIGHT ๐
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?
AUTHOR AND COPYRIGHT ๐
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,000glow-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.exework? โ 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 ๐ซ
AUTHOR AND COPYRIGHT
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?
AUTHOR AND COPYRIGHT
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?
AUTHOR AND COPYRIGHT
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?
AUTHOR AND COPYRIGHT
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?
๐ AUTHOR AND COPYRIGHT
๐ฆ 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
- Empty hashes or arrays match
- That is, each element smartmatches the element of the same index in the other array.[3]
- If a circular reference is found, fall back to referential equality
- 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)
- unary
- 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-Xabs VALUEabsaccept NEWSOCKET,GENERICSOCKETalarm SECONDSalarmall BLOCK LISTany BLOCK LISTatan2 Y,Xbind SOCKET,NAMEbinmode FILEHANDLE, LAYERbinmode FILEHANDLEbless REF,CLASSNAMEbless 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):
breakcaller EXPRcallerchdir EXPRchdir FILEHANDLEchdir DIRHANDLEchdirchmod LISTchomp VARIABLEchomp( LIST )chompchop VARIABLEchop( LIST )chopchown LISTchr NUMBERchrchroot FILENAMEchrootclass NAMESPACEclass NAMESPACE VERSIONclass NAMESPACE BLOCKclass NAMESPACE VERSION BLOCKclose FILEHANDLEcloseclosedir DIRHANDLEconnect SOCKET,NAMEcontinue BLOCKcontinuecos EXPRcoscrypt PLAINTEXT,SALTdbmclose HASHdbmopen HASH,DBNAME,MASKdefined EXPRdefineddelete EXPRdie LISTdo BLOCKdo EXPRdump LABELdump EXPRdumpeach HASHeach ARRAYeof FILEHANDLEeof ()eofeval EXPReval BLOCKeval- String eval
- Under the
"unicode_eval"feature - Outside the
"unicode_eval"feature - If upgraded,
$vwill be"\xc4\x80"(i.e., the"use utf8"has no effect.) - If non-upgraded,
$vwill be"\x{100}" - Block eval
evalbytes EXPRevalbytesexec LISTexec PROGRAM LISTexists EXPRexit EXPRexitexp EXPRexpfc EXPRfcfcntl FILEHANDLE,FUNCTION,SCALAR__FILE__field VARNAMEfileno FILEHANDLEfileno DIRHANDLEflock FILEHANDLE,OPERATIONforkformatformline PICTURE,LISTgetc FILEHANDLEgetcgetlogingetpeername SOCKETgetpgrp PIDgetppidgetpriority WHICH,WHOgetpwnam 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 NAMEgethostbyname NAMEgetnetbyname NAMEgetprotobyname NAMEgetpwuid UIDgetgrgid GIDgetservbyname NAME,PROTOgethostbyaddr ADDR,ADDRTYPEgetnetbyaddr ADDR,ADDRTYPEgetprotobynumber NUMBERgetservbyport PORT,PROTOgetpwentgetgrentgethostentgetnetentgetprotoentgetserventsetpwentsetgrentsethostent STAYOPENsetnetent STAYOPENsetprotoent STAYOPENsetservent STAYOPENendpwentendgrentendhostentendnetentendprotoentendserventgetsockname SOCKETgetsockopt SOCKET,LEVEL,OPTNAMEglob EXPRglobgmtime EXPRgmtimegoto LABELgoto EXPRgoto &NAMEgrep BLOCK LISTgrep EXPR,LISThex EXPRheximport LISTindex STR,SUBSTR,POSITIONindex STR,SUBSTRint EXPRintioctl FILEHANDLE,FUNCTION,SCALARjoin EXPR,LISTkeys HASHkeys ARRAYkill SIGNAL, LISTkill SIGNALlast LABELlast EXPRlastlc EXPRlc- If
use bytesis in effect: - Otherwise, if
use localeforLC_CTYPEis 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:
- If
lcfirst EXPRlcfirstlength EXPRlength__LINE__link OLDFILE,NEWFILElisten SOCKET,QUEUESIZElocal EXPRlocaltime EXPRlocaltimelock THINGlog EXPRloglstat FILEHANDLElstat EXPRlstat DIRHANDLElstatm//map BLOCK LISTmap EXPR,LISTmethod NAME BLOCKmethod NAME : ATTRS BLOCKmkdir FILENAME,MODEmkdir FILENAMEmkdirmsgctl ID,CMD,ARGmsgget KEY,FLAGSmsgrcv ID,VAR,SIZE,TYPE,FLAGSmsgsnd ID,MSG,FLAGSmy VARLISTmy TYPE VARLISTmy VARLIST : ATTRSmy TYPE VARLIST : ATTRSnext LABELnext EXPRnextno MODULE VERSION LISTno MODULE VERSIONno MODULE LISTno MODULEno VERSIONoct EXPRoctopen FILEHANDLE,MODE,EXPRopen FILEHANDLE,MODE,EXPR,LISTopen FILEHANDLE,MODE,REFERENCEopen FILEHANDLE,EXPRopen FILEHANDLE- Working with files
- Simple examples
- About filehandles
- About modes
- Checking the return value
- Specifying I/O layers in MODE
- Using
undeffor 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
openwith 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,EXPRord EXPRordour VARLISTour TYPE VARLISTour VARLIST : ATTRSour TYPE VARLIST : ATTRSpack TEMPLATE,LISTpackage NAMESPACEpackage NAMESPACE VERSIONpackage NAMESPACE BLOCKpackage NAMESPACE VERSION BLOCK__PACKAGE____CLASS__pipe READHANDLE,WRITEHANDLEpop ARRAYpoppos SCALARposprint FILEHANDLE LISTprint FILEHANDLEprint LISTprintprintf FILEHANDLE FORMAT, LISTprintf FILEHANDLEprintf FORMAT, LISTprintfprototype FUNCTIONprototypepush ARRAY,LISTq/STRING/qq/STRING/qw/STRING/qx/STRING/qr/STRING/quotemeta EXPRquotemetarand EXPRrand- Security:
- Crypt::SysRandom
- Crypt::URandom
- Crypt::PRNG
read FILEHANDLE,SCALAR,LENGTH,OFFSETread FILEHANDLE,SCALAR,LENGTHreaddir DIRHANDLEreadline EXPRreadlinereadlink EXPRreadlinkreadpipe EXPRreadpiperecv SOCKET,SCALAR,LENGTH,FLAGSredo LABELredo EXPRredoref EXPRrefrename OLDNAME,NEWNAMErequire VERSIONrequire EXPRrequirereset EXPRresetreturn EXPRreturnreverse LISTrewinddir DIRHANDLErindex STR,SUBSTR,POSITIONrindex STR,SUBSTRrmdir FILENAMErmdirs///say FILEHANDLE LISTsay FILEHANDLEsay LISTsayscalar EXPRseek FILEHANDLE,POSITION,WHENCEseekdir DIRHANDLE,POSselect FILEHANDLEselectselect RBITS,WBITS,EBITS,TIMEOUTsemctl ID,SEMNUM,CMD,ARGsemget KEY,NSEMS,FLAGSsemop KEY,OPSTRINGsend SOCKET,MSG,FLAGS,TOsend SOCKET,MSG,FLAGSsetpgrp PID,PGRPsetpriority WHICH,WHO,PRIORITYsetsockopt SOCKET,LEVEL,OPTNAME,OPTVALshift ARRAYshiftshmctl ID,CMD,ARGshmget KEY,SIZE,FLAGSshmread ID,VAR,POS,SIZEshmwrite ID,STRING,POS,SIZEshutdown SOCKET,HOWsin EXPRsinsleep EXPRsleepsocket SOCKET,DOMAIN,TYPE,PROTOCOLsocketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOLsort SUBNAME LISTsort BLOCK LISTsort LISTsplice ARRAY,OFFSET,LENGTH,LISTsplice ARRAY,OFFSET,LENGTHsplice ARRAY,OFFSETsplice ARRAYsplit /PATTERN/,EXPR,LIMITsplit /PATTERN/,EXPRsplit /PATTERN/splitsprintf FORMAT, LIST- format parameter index
- flags
- vector flag
- (minimum) width
- precision, or maximum width
- size
- order of arguments
sqrt EXPRsqrtsrand EXPRsrandstat FILEHANDLEstat EXPRstat DIRHANDLEstatstate VARLISTstate TYPE VARLISTstate VARLIST : ATTRSstate TYPE VARLIST : ATTRSstudy SCALARstudysub NAME BLOCKsub NAME (PROTO) BLOCKsub NAME : ATTRS BLOCKsub NAME (PROTO) : ATTRS BLOCK__SUB__substr EXPR,OFFSET,LENGTH,REPLACEMENTsubstr EXPR,OFFSET,LENGTHsubstr EXPR,OFFSETsymlink OLDFILE,NEWFILEsyscall NUMBER, LISTsysopen FILEHANDLE,FILENAME,MODEsysopen FILEHANDLE,FILENAME,MODE,PERMSsysread FILEHANDLE,SCALAR,LENGTH,OFFSETsysread FILEHANDLE,SCALAR,LENGTHsysseek FILEHANDLE,POSITION,WHENCEsystem LISTsystem PROGRAM LISTsyswrite FILEHANDLE,SCALAR,LENGTH,OFFSETsyswrite FILEHANDLE,SCALAR,LENGTHsyswrite FILEHANDLE,SCALARtell FILEHANDLEtelltelldir DIRHANDLEtie VARIABLE,CLASSNAME,LISTtied VARIABLEtimetimestr///truncate FILEHANDLE,LENGTHtruncate EXPR,LENGTHuc EXPRucucfirst EXPRucfirstumask EXPRumaskundef EXPRundefunlink LISTunlinkunpack TEMPLATE,EXPRunpack TEMPLATEunshift ARRAY,LISTuntie VARIABLEuse Module VERSION LISTuse Module VERSIONuse Module LISTuse Moduleuse VERSIONutime LISTvalues HASHvalues ARRAYvec EXPR,OFFSET,BITSwaitwaitpid PID,FLAGSwantarraywarn LISTwrite FILEHANDLEwrite EXPRwritey///
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__BEGINCHECKENDINITUNITCHECKDESTROYandcmpeqgegtisaleltnenotorxxorAUTOLOADelseelsifforforeachifunlessuntilwhileelseifdefaultgivenwhentrycatchfinallydeferADJUST
โจ 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 textB<text>-- bold textU<text>-- underline textC<code>-- code textL<name>-- a hyperlinkE<escape>-- a character escapeF<filename>-- used for filenamesS<text>-- text contains non-breaking spacesX<topic name>-- an index entryZ<>-- 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 textB<text>-- bold textU<text>-- underline textC<code>-- code textF<filename>-- style for filenamesX<topic name>-- an index entryZ<>-- a null (zero-effect) formatting codeL<name>-- a hyperlinkE<escape>-- a character escapeS<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/=endRegions
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
COPYRIGHT AND LICENSE
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_nameperl -d -e 0perl -d:ptkdb program_nameperl -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
Variables related to regular expressions
$<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}
Variables related to filehandles
$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, $@
Variables related to the interpreter state
$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:
NOTEDESCRIPTIONMaking ReferencesUsing ReferencesCircular ReferencesSymbolic referencesNot-so-symbolic referencesPseudo-hashes: Using an array as a hashFunction TemplatesPostfix Dereference SyntaxPostfix Reference SlicingAssigning to ReferencesDeclaring a Reference to a Variable
WARNING: Don't use references as hash keysSEE ALSO
๐ perlform โ Perl formats
the retro-looking report-writing thing. deeply iconic, deeply its own vibe:
DESCRIPTIONText FieldsNumeric FieldsThe Field @* for Variable-Width Multi-Line TextThe Field ^* for Variable-Width One-line-at-a-time TextSpecifying ValuesUsing Fill ModeSuppressing Lines Where All Fields Are VoidRepeating Format LinesTop of Form ProcessingFormat Variables
NOTESFootersAccessing Formatting Internals
WARNINGS
๐ perlobj โ Perl object reference
the OOP bible, bestie. how to actually do objects in Perl without crying:
DESCRIPTIONAn Object is Simply a Data StructureA Class is Simply a PackageA Method is Simply a SubroutineMethod InvocationInheritanceWriting ConstructorsAttributesAn Aside About Smarter and Safer CodeMethod Call VariationsInvoking Class Methods"bless", "blessed", and "ref"The UNIVERSAL Classisa($class) , DOES($role) , can($method) , VERSION($need)
AUTOLOADDestructorsNon-Hash ObjectsInside-Out objectsPseudo-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:
SYNOPSISDESCRIPTIONTying ScalarsTIESCALAR classname, LIST , FETCH this , STORE this, value , UNTIE this , DESTROY this
Tying ArraysTIEARRAY 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 HashesUSER, 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 FileHandlesTIEHANDLE 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 thisThe "untie" Gotcha
SEE ALSOBUGSAUTHOR
๐ perldbmfilter โ Perl DBM Filters
sneaky little filters that sit between you and your DBM files:
SYNOPSISDESCRIPTIONfilter_store_key, filter_store_value, filter_fetch_key, filter_fetch_valueThe FilterAn Example: the NULL termination problemAnother Example: Key is a C int
SEE ALSOAUTHOR
โจ perlclass โ Perl class syntax reference
the newer, cleaner class keyword thing. periodt:
SYNOPSISDESCRIPTIONHistory
KEYWORDSclassfieldmethod
ATTRIBUTESClass attributesField attributesMethod attributes
OBJECT LIFECYCLEConstructionAdjustmentLifetimeDestruction
TODORoles, Parameters to ADJUST blocks, ADJUST blocks as true blocks, Metaprogramming, Extension Customisation
KNOWN BUGSDeclaring fields after declaring a nested subclass corrupts the object storage. [GH #24393 <https://github.com/Perl/perl5/issues/24393>]
AUTHORS
๐ perlipc โ Perl interprocess communication (signals, fifos, pipes, safe subprocesses, sockets, and semaphores)
the "how do processes even talk to each other" saga:
DESCRIPTIONSignalsHandling the SIGHUP Signal in DaemonsDeferred Signals (Safe Signals)Long-running opcodes, Interrupting IO, Restartable system calls, Signals as "faults", Signals triggered by operating system state
Named PipesUsing open() for IPCFilehandlesBackground ProcessesComplete Dissociation of Child from ParentSafe Pipe OpensAvoiding Pipe DeadlocksBidirectional Communication with Another ProcessBidirectional Communication with Yourself
Sockets: Client/Server CommunicationInternet Line TerminatorsInternet TCP Clients and ServersUnix-Domain TCP Clients and Servers
TCP Clients with IO::SocketA Simple Client"Proto", "PeerAddr", "PeerPort"
A Webget ClientInteractive Client with IO::Socket
TCP Servers with IO::SocketProto, LocalPort, Listen, Reuse
UDP: Message PassingSysV IPCNOTESBUGSAUTHORSEE ALSO
๐ perlfork โ Perl's fork() emulation
the "fork() but it's not really fork()" situation, especially on Windows:
SYNOPSISDESCRIPTIONBehavior 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 limitsKilling the parent processLifetime of the parent process and pseudo-processes
CAVEATS AND LIMITATIONSBEGIN 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 CAVEATSBUGSAUTHORSEE ALSO
๐ง perlnumber โ semantics of numbers and numeric operations in Perl
numbers, but make it confusing (gently). floats vs ints vs strings, the whole deal:
SYNOPSISDESCRIPTIONStoring numbersNumeric operators and numeric conversionsFlavors of Perl numeric operationsArithmetic 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
AUTHORSEE ALSO
๐ perlthrtut โ Tutorial on threads in Perl
the big friendly threads walkthrough. buckle up, bestie:
DESCRIPTIONWhat Is A Thread Anyway?Threaded Program ModelsBoss/WorkerWork CrewPipeline
What kind of threads are Perl threads?Thread-Safe ModulesThread BasicsBasic Thread SupportA Note about the ExamplesCreating ThreadsWaiting For A Thread To ExitIgnoring A ThreadProcess and Thread Termination
Threads And DataShared And Unshared DataThread Pitfalls: Races
Synchronization and controlControlling access: lock()A Thread Pitfall: DeadlocksQueues: Passing Data AroundSemaphores: Synchronizing Data AccessBasic semaphoresAdvanced SemaphoresWaiting for a ConditionGiving up control
General Thread Utility RoutinesWhat Thread Am I In?Thread IDsAre These Threads The Same?What Threads Are Running?
A Complete ExampleDifferent implementations of threadsPerformance considerationsProcess-scope ChangesThread-Safety of System LibrariesConclusionSEE ALSOBibliographyIntroductory TextsOS-Related ReferencesOther References
AcknowledgementsAUTHORCopyrights
๐
perlport โ Writing portable Perl
the "will this run on literally everything" guide. very "write once, cry everywhere", but it's actually trying to help:
DESCRIPTIONNot all Perl programs have to be portable, Nearly all of Perl already is portable
ISSUESNewlinesNumbers endianness and WidthFiles and FilesystemsSystem InteractionCommand names versus file pathnamesNetworkingInterprocess Communication (IPC)External Subroutines (XS)Standard ModulesTime and DateCharacter sets and character encodingInternationalisationSystem ResourcesSecurityStyle
CPAN TestersPLATFORMSUnixDOS and DerivativesVMSVOSEBCDIC PlatformsAcorn RISC OSOther perls
FUNCTION IMPLEMENTATIONSAlphabetical 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 PlatformsLinux (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 ALSOAUTHORS / CONTRIBUTORS
๐ธ perllocale โ Perl locale handling (internationalization and localization)
i18n/l10n energy. making Perl speak everybody's language:
DESCRIPTIONWHAT IS A LOCALECategory "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 LOCALESUSING LOCALESThe "use locale" pragmaNot 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
setlocalefunction - Multi-threaded operation
- Finding locales
LOCALE PROBLEMS- The
localeconvfunction 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
evalandLC_NUMERIC - Backward compatibility
I18N:Collateobsolete- Sort speed and memory use impacts
- Freely available locale definitions
I18nandl10n- An imperfect standard
๐ Unicode and UTF-8 ๐
๐ BUGS ๐
- Collation of strings containing embedded
NULcharacters 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 ๐ซถ
ยฉ๏ธ AUTHOR, COPYRIGHT, AND LICENSE ยฉ๏ธ
๐ 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 utf8still needed to enable UTF-8 in scripts, UTF-16 scripts autodetected
- Safest if you
- 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\Bmeet 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 onlyU+10000toU+10FFFFbut also beyondU+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 useUnicode::Normalize)[10]Perl has\Xand\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" inperlunicodeabove[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
cmpwork 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 ๐๏ธ
ยฉ๏ธ COPYRIGHT AND LICENCE ยฉ๏ธ
๐ 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::Dumperdoesn'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_utf8andencode_utf8? - What is a "wide character"?
๐ INTERNALS ๐
- What is "the UTF8 flag"?
- What about the
use bytespragma? - What about the
use encodingpragma? - What is the difference between
:encodingand:utf8? - What's the difference between
UTF-8andutf8? - 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 propertyDmeans this is deprecatedOmeans this is obsoleteSmeans this is stabilizedTmeans tighter (stricter) name matching appliesXmeans 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()andutf8::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
- This doc,
- Packages
- Symbol Tables
BEGIN,UNITCHECK,CHECK,INITandEND- 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::ARexxAmiga::ExecAnyDBM_FileApp::CpanApp::ProveApp::Prove::StateApp::Prove::State::ResultApp::Prove::State::Result::TestArchive::TarArchive::Tar::FileAttribute::HandlersAutoLoaderAutoSplitBB::ConciseB::DeparseB::Op_privateB::ShowlexB::TerseB::XrefBenchmarkCORECPANCPAN::API::HOWTOCPAN::DebugCPAN::DistroprefsCPAN::FirstTimeCPAN::HandleConfigCPAN::KwalifyCPAN::MetaCPAN::Meta::ConverterCPAN::Meta::FeatureCPAN::Meta::HistoryCPAN::Meta::History::Meta_1_0CPAN::Meta::History::Meta_1_1CPAN::Meta::History::Meta_1_2CPAN::Meta::History::Meta_1_3CPAN::Meta::History::Meta_1_4CPAN::Meta::MergeCPAN::Meta::PrereqsCPAN::Meta::RequirementsCPAN::Meta::Requirements::RangeCPAN::Meta::SpecCPAN::Meta::ValidatorCPAN::Meta::YAMLCPAN::NoxCPAN::PluginCPAN::Plugin::SpecfileCPAN::QueueCPAN::TarzipCPAN::VersionCarpClass::StructCompress::Raw::Bzip2Compress::Raw::ZlibCompress::ZlibConfigConfig::ExtensionsConfig::Perl::VCwdDBDBM_FilterDBM_Filter::compressDBM_Filter::encodeDBM_Filter::int32DBM_Filter::nullDBM_Filter::utf8DB_FileData::DumperDevel::PPPortDevel::PeekDevel::SelfStubberDigestDigest::MD5Digest::SHADigest::baseDigest::fileDirHandleDumpvalueDynaLoaderEncodeEncode::AliasEncode::ByteEncode::CJKConstantsEncode::CNEncode::CN::HZEncode::ConfigEncode::EBCDICEncode::EncoderEncode::EncodingEncode::GSM0338Encode::GuessEncode::JPEncode::JP::H2ZEncode::JP::JIS7Encode::KREncode::KR::2022_KREncode::MIME::HeaderEncode::MIME::NameEncode::PerlIOEncode::SupportedEncode::SymbolEncode::TWEncode::UnicodeEncode::Unicode::UTF7EnglishEnvErrnoExporterExporter::HeavyExtUtils::CBuilderExtUtils::CBuilder::Platform::WindowsExtUtils::CommandExtUtils::Command::MMExtUtils::ConstantExtUtils::Constant::BaseExtUtils::Constant::UtilsExtUtils::Constant::XSExtUtils::EmbedExtUtils::InstallExtUtils::InstalledExtUtils::LiblistExtUtils::MMExtUtils::MM_AIXExtUtils::MM_AnyExtUtils::MM_BeOSExtUtils::MM_CygwinExtUtils::MM_DOSExtUtils::MM_DarwinExtUtils::MM_MacOSExtUtils::MM_NW5ExtUtils::MM_OS2ExtUtils::MM_OS390ExtUtils::MM_QNXExtUtils::MM_UWINExtUtils::MM_UnixExtUtils::MM_VMSExtUtils::MM_VOSExtUtils::MM_Win32ExtUtils::MM_Win95ExtUtils::MYExtUtils::MakeMakerExtUtils::MakeMaker::ConfigExtUtils::MakeMaker::FAQExtUtils::MakeMaker::LocaleExtUtils::MakeMaker::TutorialExtUtils::ManifestExtUtils::MiniperlExtUtils::MkbootstrapExtUtils::MksymlistsExtUtils::PL2BatExtUtils::PacklistExtUtils::ParseXSExtUtils::ParseXS::ConstantsExtUtils::ParseXS::EvalExtUtils::ParseXS::NodeExtUtils::ParseXS::UtilitiesExtUtils::TypemapsExtUtils::Typemaps::CmdExtUtils::Typemaps::InputMapExtUtils::Typemaps::OutputMapExtUtils::Typemaps::TypeExtUtils::XSSymSetExtUtils::testlibFatalFcntlFile::BasenameFile::CompareFile::CopyFile::DosGlobFile::FetchFile::FindFile::GlobFile::GlobMapperFile::PathFile::SpecFile::Spec::AmigaOSFile::Spec::CygwinFile::Spec::EpocFile::Spec::FunctionsFile::Spec::MacFile::Spec::OS2File::Spec::UnixFile::Spec::VMSFile::Spec::Win32File::TempFile::statFileCacheFileHandleFilter::SimpleFilter::Util::CallFindBinGDBM_FileGetopt::LongGetopt::Long::ParserGetopt::StdHTTP::TinyHash::UtilHash::Util::FieldHashI18N::CollateI18N::LangTagsI18N::LangTags::DetectI18N::LangTags::ListI18N::LanginfoIOIO::CompressIO::Compress::BaseIO::Compress::Bzip2IO::Compress::DeflateIO::Compress::FAQIO::Compress::GzipIO::Compress::RawDeflateIO::Compress::ZipIO::DirIO::FileIO::HandleIO::PipeIO::PollIO::SeekableIO::SelectIO::SocketIO::Socket::INETIO::Socket::IPIO::Socket::UNIXIO::Uncompress::AnyInflateIO::Uncompress::AnyUncompressIO::Uncompress::BaseIO::Uncompress::Bunzip2IO::Uncompress::GunzipIO::Uncompress::InflateIO::Uncompress::RawInflateIO::Uncompress::UnzipIO::ZlibIPC::CmdIPC::MsgIPC::Open2IPC::Open3IPC::SemaphoreIPC::SharedMemIPC::SysVInternalsJSON::PPJSON::PP::BooleanList::UtilList::Util::XSLocale::MaketextLocale::Maketext::CookbookLocale::Maketext::GutsLocale::Maketext::GutsLoaderLocale::Maketext::SimpleLocale::Maketext::TPJ13MIME::Base64MIME::QuotedPrintMath::BigFloatMath::BigIntMath::BigInt::CalcMath::BigInt::FastCalcMath::BigInt::LibMath::BigRatMath::ComplexMath::TrigMemoizeMemoize::AnyDBM_FileMemoize::ExpireMemoize::NDBM_FileMemoize::SDBM_FileMemoize::StorableModule::CoreListModule::CoreList::UtilsModule::LoadModule::Load::ConditionalModule::LoadedModule::MetadataNDBM_FileNEXTNet::CmdNet::ConfigNet::DomainNet::FTPNet::FTP::dataconnNet::NNTPNet::NetrcNet::POP3Net::PingNet::SMTPNet::TimeNet::hostentNet::libnetFAQNet::netentNet::protoentNet::serventOODBM_FileOpcodePOSIXParams::CheckParse::CPAN::MetaPerl::OSTypePerlIOPerlIO::encodingPerlIO::mmapPerlIO::scalarPerlIO::viaPerlIO::via::QuotedPrintPod::CheckerPod::EscapesPod::FunctionsPod::HtmlPod::Html::UtilPod::ManPod::ParseLinkPod::PerldocPod::Perldoc::BaseToPod::Perldoc::GetOptsOOPod::Perldoc::ToANSIPod::Perldoc::ToCheckerPod::Perldoc::ToManPod::Perldoc::ToNroffPod::Perldoc::ToPodPod::Perldoc::ToRtfPod::Perldoc::ToTermPod::Perldoc::ToTextPod::Perldoc::ToTkPod::Perldoc::ToXmlPod::SimplePod::Simple::CheckerPod::Simple::DebugPod::Simple::DumpAsTextPod::Simple::DumpAsXMLPod::Simple::HTMLPod::Simple::HTMLBatchPod::Simple::JustPodPod::Simple::LinkSectionPod::Simple::MethodyPod::Simple::PullParserPod::Simple::PullParserEndTokenPod::Simple::PullParserStartTokenPod::Simple::PullParserTextTokenPod::Simple::PullParserTokenPod::Simple::RTFPod::Simple::SearchPod::Simple::SimpleTreePod::Simple::SubclassingPod::Simple::TextPod::Simple::TextContentPod::Simple::XHTMLPod::Simple::XMLOutStreamPod::TextPod::Text::ColorPod::Text::OverstrikePod::Text::TermcapPod::UsageSDBM_FileSafeScalar::List::UtilsScalar::UtilSearch::DictSelectSaverSelfLoaderSocketStorableSub::UtilSymbolSys::HostnameSys::SyslogSys::Syslog::Win32TAP::BaseTAP::Formatter::BaseTAP::Formatter::ColorTAP::Formatter::ConsoleTAP::Formatter::Console::ParallelSessionTAP::Formatter::Console::SessionTAP::Formatter::FileTAP::Formatter::File::SessionTAP::Formatter::SessionTAP::HarnessTAP::Harness::EnvTAP::ObjectTAP::ParserTAP::Parser::AggregatorTAP::Parser::GrammarTAP::Parser::IteratorTAP::Parser::Iterator::ArrayTAP::Parser::Iterator::ProcessTAP::Parser::Iterator::StreamTAP::Parser::IteratorFactoryTAP::Parser::MultiplexerTAP::Parser::ResultTAP::Parser::Result::BailoutTAP::Parser::Result::CommentTAP::Parser::Result::PlanTAP::Parser::Result::PragmaTAP::Parser::Result::TestTAP::Parser::Result::UnknownTAP::Parser::Result::VersionTAP::Parser::Result::YAMLTAP::Parser::ResultFactoryTAP::Parser::SchedulerTAP::Parser::Scheduler::JobTAP::Parser::Scheduler::SpinnerTAP::Parser::SourceTAP::Parser::SourceHandlerTAP::Parser::SourceHandler::ExecutableTAP::Parser::SourceHandler::FileTAP::Parser::SourceHandler::HandleTAP::Parser::SourceHandler::PerlTAP::Parser::SourceHandler::RawTAPTAP::Parser::YAMLish::ReaderTAP::Parser::YAMLish::WriterTerm::ANSIColorTerm::CapTerm::CompleteTerm::ReadLineTerm::TableTerm::Table::CellTerm::Table::CellStackTerm::Table::HashBaseTerm::Table::LineBreakTerm::Table::UtilTestTest2Test2::APITest2::API::BreakageTest2::API::ContextTest2::API::InstanceTest2::API::InterceptResultTest2::API::InterceptResult::EventTest2::API::InterceptResult::HubTest2::API::InterceptResult::SquasherTest2::API::StackTest2::AsyncSubtestTest2::AsyncSubtest::Event::AttachTest2::AsyncSubtest::Event::DetachTest2::AsyncSubtest::HubTest2::BundleTest2::Bundle::ExtendedTest2::Bundle::MoreTest2::Bundle::SimpleTest2::CompareTest2::Compare::ArrayTest2::Compare::BagTest2::Compare::BaseTest2::Compare::BoolTest2::Compare::CustomTest2::Compare::DeepRefTest2::Compare::DeltaTest2::Compare::EventTest2::Compare::EventMetaTest2::Compare::FloatTest2::Compare::HashTest2::Compare::IsaTest2::Compare::MetaTest2::Compare::NegatableTest2::Compare::NumberTest2::Compare::ObjectTest2::Compare::OrderedSubsetTest2::Compare::PatternTest2::Compare::RefTest2::Compare::RegexTest2::Compare::ScalarTest2::Compare::SetTest2::Compare::StringTest2::Compare::UndefTest2::Compare::WildcardTest2::EnvTest2::EventTest2::Event::BailTest2::Event::DiagTest2::Event::EncodingTest2::Event::ExceptionTest2::Event::FailTest2::Event::GenericTest2::Event::NoteTest2::Event::OkTest2::Event::PassTest2::Event::PlanTest2::Event::SkipTest2::Event::SubtestTest2::Event::TAP::VersionTest2::Event::V2Test2::Event::WaitingTest2::EventFacetTest2::EventFacet::AboutTest2::EventFacet::AmnestyTest2::EventFacet::AssertTest2::EventFacet::ControlTest2::EventFacet::ErrorTest2::EventFacet::HubTest2::EventFacet::InfoTest2::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 ๐
CPANModules: Creation, Use, and AbuseGuidelines for Module CreationGuidelines for Converting Perl 4 Library Scripts into ModulesGuidelines 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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
AUTHOR AND COPYRIGHT
(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
COPYRIGHT
perldebguts - Guts of Perl debugging
DESCRIPTION
Debugger Internals
Writing Your Own Debugger
Frame Listing Output Examples
Debugging Regular Expressions
Compile-time Output
"anchored"STRING"at"POS"floating"STRING"at"POS1..POS2"matching floating/anchored""minlen""stclass"TYPE"noscan""isall""GPOS""plus""implicit""with eval"anchored(TYPE)
Types of Nodes
Run-time Output
Debugging Perl Memory Usage
Using $ENV{PERL_DEBUG_MSTATS}
"buckets SMALLEST(APPROX)..GREATEST(APPROX)"Free/Used"Total sbrk(): SBRKed/SBRKs:CONTINUOUS""pad: 0""heads: 2192""chain: 0"tail: 6144
SEE ALSO
perlxstut - Tutorial for writing XSUBs
DESCRIPTION
SPECIAL NOTES
make- Version caveat
- Dynamic Loading versus Static Loading
- Threads and
PERL_NO_GET_CONTEXT
TUTORIAL
- EXAMPLE 1
- EXAMPLE 2
- What has gone on?
- Writing good test scripts
- EXAMPLE 3
- What's new here?
- Input and Output Parameters
- The XSUBPP Program
- The TYPEMAP file
- Warning about Output Arguments
- EXAMPLE 4
- What has happened here?
- Anatomy of .xs file
- Getting the fat out of XSUBs
- More about XSUB arguments
- The Argument Stack
- Extending your Extension
- Documenting your Extension
- Installing your Extension
- EXAMPLE 5
- New Things in this Example
- EXAMPLE 6
- New Things in this Example
- EXAMPLE 7 (Coming Soon)
- EXAMPLE 8 (Coming Soon)
- EXAMPLE 9 Passing open files to XSes
- Troubleshooting these Examples
See also
Author
Last Changed
perlxs - 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.hfunctions- 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
#definePERL_REENTRANT - If you don't enable automatic substitution
- For items marked
- 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") andSvUV(SV*)("UV")SvNV(SV*)("double")- Strings are a bit complicated:
- Byte string:
SvPVbyte(SV*, STRLEN len)orSvPVbyte_nolen(SV*) - UTF-8 string:
SvPVutf8(SV*, STRLEN len)orSvPVutf8_nolen(SV*) - You can also use
SvPV(SV*, STRLEN len)orSvPV_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-bytechar*. 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 (SvUTF8would be on) or 4 characters (SvUTF8would 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)callssv_force_normal(sv)to copy the string buffer, turning it into a mutable stringSV_CHECK_THINKFIRST_COW_DROP(sv)callssv_force_normal_flags(sv, SV_COW_DROP_PV)which drops any string buffer pointed to bysv. This is usually used to avoid copying any COW string to a new buffer, prior to writing some completely new string tosv
- 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
$^Dvariable 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
- bytes:
- 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_VOIDG_SCALARG_LISTG_DISCARDG_NOARGSG_EVALG_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
- Ignore the problem - Allow only 1 callback
- Create a sequence of callbacks - hard wired limit
- 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_SPLITRXf_SKIPWHITERXf_START_ONLYRXf_WHITERXf_NULLRXf_NO_INPLACE_SUBST
execrx,sv,strbeg,strend,stringarg,minend,data,flags
intuitcheckstrfree- Numbered capture callbacks
- Named capture callbacks
qr_packagedupeop_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
$selfAccess 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_2hvcop_store_labelCopFILECopFILE_copyCopFILE_freeCopFILE_LENCopFILE_setCopFILE_setnCopFILEAVCopFILEAVnCopFILEGVCopFILEGV_setCopFILESVcophh_copycophh_delete_pvcophh_delete_pvncophh_delete_pvscophh_delete_svcophh_exists_pvcophh_exists_pvncophh_exists_pvscophh_exists_svcophh_fetch_pvcophh_fetch_pvncophh_fetch_pvscophh_fetch_svcophh_freecophh_new_emptycophh_store_pvcophh_store_pvncophh_store_pvscophh_store_svcophh_2hvCopLABELCopLABEL_lenCopLABEL_len_flagsCopLINECopSTASHCopSTASH_eqCopSTASH_setCopSTASHPVCopSTASHPV_setPERL_SIPL_curcopRCPV_LENRCPV_REFCNT_decRCPV_REFCNT_incRCPV_REFCOUNTRCPVx
โจ 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_registerPerl_custom_op_xopXopDISABLEXopENABLEXopENTRYXopENTRY_setXopENTRYCUSTOMXopFLAGS
๐ฆ 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_cxCvDEPTHCvGVCvREFCNT_incCvREFCNT_inc_simpleCvREFCNT_inc_simple_NNCvSTASHfind_runcvget_cvget_cvn_flagsget_cvsNullcv
๐ 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_dumpdebdeb_nocontextvdebdebstackDEBUG_UDEBUG_UvDEBUG_U_TESTDEBUG_Uv_TESTdump_alldump_c_backtracedump_evaldump_formdump_packsubsdump_subget_c_backtrace_dumpgv_dumpHAS_BACKTRACEhv_dumpmagic_dumpop_classop_dumpopdump_printfPERL_POISONPL_DBsubPL_opPL_runopsPL_sv_serialpmop_dumpPoisonFreePoisonPoisonNewPoisonWithsv_dumpsv_dump_depthvdeb*
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:
formform_nocontextvformmessmess_nocontextvmessmess_svpv_displaypv_escapepv_prettyvform*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_atexitcv_clonecv_namecv_undeffind_rundefsvget_op_descsget_op_namesHAS_SKIP_LOCALE_INITintro_myload_moduleload_module_nocontextvload_modulemy_exitmy_failure_exitnewPADNAMELISTnewPADNAMEouternewPADNAMEpvnnothreadhookpad_add_anonpad_add_name_pvpad_add_name_pvnpad_add_name_pvspad_add_name_svpad_allocpad_findmy_pvpad_findmy_pvnpad_findmy_pvspad_findmy_svpad_tidypadnamelist_fetchpadnamelist_storeperl_allocPERL_ASYNC_CHECKperl_cloneperl_constructperl_destructperl_freePERL_GET_CONTEXTperl_parseperl_runPERL_SET_CONTEXTPERL_SYS_INITPERL_SYS_INIT3PERL_SYS_TERMPerlInterpreterPL_exit_flagsPERL_EXIT_DESTRUCT_ENDPERL_EXIT_ABORTPERL_EXIT_WARNPERL_EXIT_EXPECTEDPL_origalenPL_perl_destruct_levelโ and its levels are literally listed as:0 - none,1 - full,2 or greater - full with checksptr_table_fetchptr_table_freeptr_table_newptr_table_splitptr_table_storerequire_pvsv_dupsv_dup_incvload_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:
dXCPTJMPENV_JUMPJMPENV_PUSHPL_restartopXCPT_CATCHXCPT_RETHROWXCPT_TRY_ENDXCPT_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:
DIRNAMLENDOSUIDEOF_NONBLOCKFCNTL_CAN_LOCKFFLUSH_ALLFFLUSH_NULLFILE_baseFILE_bufsizFILE_cntFILE_ptrFLEXFILENAMESHAS_DIR_DD_FDHAS_DUP2HAS_DUP3HAS_FAST_STDIOHAS_FCHDIRHAS_FCNTLHAS_FDCLOSEHAS_FDOPENDIRHAS_FPATHCONFHAS_FPOS64_THAS_FSTATFSHAS_FSTATVFSHAS_GETFSSTATHAS_GETMNTHAS_GETMNTENTHAS_HASMNTOPTHAS_LSEEK_PROTOHAS_MKDIRHAS_OFF64_THAS_OPENATHAS_OPEN3HAS_POLLHAS_READDIRHAS_READDIR64_RHAS_REWINDDIRHAS_RMDIRHAS_SEEKDIRHAS_SELECTHAS_SETVBUFHAS_STDIO_STREAM_ARRAYHAS_STRUCT_FS_DATAHAS_STRUCT_STATFSHAS_STRUCT_STATFS_F_FLAGSHAS_TELLDIRHAS_USTATI_FCNTLI_SYS_DIRI_SYS_FILEI_SYS_NDIRI_SYS_STATFSLSEEKSIZERD_NODATAREADDIR64_R_PROTOST_INO_SIGNST_INO_SIZESTDCHARSTDIO_CNT_LVALUESTDIO_PTR_LVAL_NOCHANGE_CNTSTDIO_PTR_LVAL_SETS_CNTSTDIO_PTR_LVALUESTDIO_STREAM_ARRAYVAL_EAGAINVAL_O_NONBLOCKVOID_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:
CASTFLAGSCASTNEGFLOATDOUBLE_HAS_INFDOUBLE_HAS_NANDOUBLE_HAS_NEGATIVE_ZERODOUBLE_HAS_SUBNORMALSDOUBLE_STYLE_CRAYDOUBLE_STYLE_IBMDOUBLE_STYLE_IEEEDOUBLE_STYLE_VAXDOUBLEINFBYTESDOUBLEKINDDOUBLEMANTBITSDOUBLENANBYTESDOUBLESIZEGconvertHAS_ATOLFHAS_CLASSHAS_FINITEHAS_FINITELHAS_FP_CLASSHAS_FP_CLASSIFYHAS_FP_CLASSLHAS_FPCLASSHAS_FPCLASSIFYHAS_FPCLASSLHAS_FPGETROUNDHAS_FREXPLHAS_ILOGBHAS_ISFINITEHAS_ISFINITELHAS_ISINFHAS_ISINFLHAS_ISNANHAS_ISNANLHAS_ISNORMALHAS_J0HAS_J0LHAS_LDBL_DIGHAS_LDEXPLHAS_LLRINTHAS_LLRINTLHAS_LLROUNDLHAS_LONG_DOUBLEHAS_LRINTHAS_LRINTLHAS_LROUNDLHAS_MODFLHAS_NANHAS_NEXTTOWARDHAS_REMAINDERHAS_SCALBNHAS_SIGNBITHAS_SQRTLHAS_STRTOD_LHAS_STRTOLDHAS_STRTOLD_LHAS_TRUNCHAS_UNORDEREDI_FENVI_QUADMATHLONG_DOUBLE_STYLE_IEEELONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLELONG_DOUBLE_STYLE_IEEE_EXTENDEDLONG_DOUBLE_STYLE_IEEE_STDLONG_DOUBLE_STYLE_VAXLONG_DOUBLEKINDLONG_DOUBLESIZELONGDBLINFBYTESLONGDBLMANTBITSLONGDBLNANBYTESNVNV_OVERFLOWS_INTEGERS_ATNV_PRESERVES_UVNV_PRESERVES_UV_BITSNV_ZERO_IS_ALLBITS_ZERONVMANTBITSNVSIZENVTYPE
โญ 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:
ASCIIishBYTEORDERCAT2CHARBITSDB_VERSION_MAJOR_CFGDB_VERSION_MINOR_CFGDB_VERSION_PATCH_CFGDEFAULT_INC_EXCLUDES_DOTDLSYM_NEEDS_UNDERSCOREDrand01EBCDICHAS_CSHHAS_GETHOSTNAMEHAS_GNULIBCHAS_LGAMMAHAS_LGAMMA_RHAS_NON_INT_BITFIELDSHAS_PRCTL_SET_NAMEHAS_PROCSELFEXEHAS_PSEUDOFORKHAS_REGCOMPHAS_SETPGIDHAS_SIGSETJMPHAS_STRUCT_CMSGHDRHAS_STRUCT_MSGHDRHAS_TGAMMAHAS_UNAMEHAS_UNION_SEMUNI_DIRENTI_POLLI_SYS_RESOURCELIBM_LIB_VERSIONNEED_VA_COPYOSNAMEOSVERSPERL_USE_GCC_BRACE_GROUPSPHOSTNAMEPROCSELFEXE_PATHPTRSIZERANDBITSseedDrand01SELECT_MIN_BITSSETUID_SCRIPTS_ARE_SECURE_NOWST_DEV_SIGNST_DEV_SIZESTRINGIFY- 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_checkPL_infix_pluginPL_keyword_pluginPL_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_callAMGf_noleftAMGf_norightAMGf_unaryAMGf_assignAMGf_force_scalarAMGf_force_overloadamagic_deref_callgv_add_by_typeGv_AMupdateโ and the return vibes are spelled out as:1on success and there is some overload,0if there is no overload,-1if some error occurred and it couldn't croak (because"destructing"is true)gv_autoload_pvgv_autoload_pvngv_autoload_svgv_autoload4gv_AVaddgv_HVaddgv_IOaddgv_SVaddgv_const_svgv_efullname3gv_efullname4gv_fullname3gv_fullname4gv_fetchfilegv_fetchfile_flagsgv_fetchmethgv_fetchmeth_autoloadgv_fetchmeth_pvgv_fetchmeth_pv_autoloadgv_fetchmeth_pvngv_fetchmeth_pvn_autoloadgv_fetchmeth_svgv_fetchmeth_sv_autoloadIf -1If 0gv_fetchmethodgv_fetchmethod_autoloadgv_fetchpvgv_fetchpvngv_fetchpvn_flagsgv_fetchpvsgv_fetchsvgv_fetchsv_nomggv_fullname3*gv_fullname4*gv_HVadd*gv_initgv_init_pvgv_init_pvngv_init_svgv_IOadd*gv_name_setgv_stashpvgv_stashpvngv_stashpvsgv_stashsvgv_SVadd*GvAVGvCVGvHVGvREFCNT_incGvREFCNT_inc_simpleGvREFCNT_inc_simple_NNGvSVGvSVnnewGVgennewGVgen_flagsPL_curstashPL_defgvPL_defoutgvPL_defstashsave_gpsetdefout
๐ซถ Hook manipulation ๐ซถ
Little reference-county string things and the one that lets you sneak a wrapper around an op checker, iconic:
rcpv_copyrcpv_freercpv_newwrap_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_hvHEHEf_SVKEYHeHASHHeKEYHeKLENHePVHeSVKEYHeSVKEY_forceHeSVKEY_setHeUTF8HeVALHVhv_asserthv_bucket_ratiohv_clearhv_clear_placeholdershv_copy_hints_hvhv_deletehv_deleteshv_delete_enthv_existshv_existsshv_exists_enthv_fetchhv_fetchshv_fetch_enthv_iterinithv_iterkeyhv_iterkeysvhv_iternexthv_iternext_flagshv_iternextsvhv_itervalhv_ksplithv_magichv_name_sethv_name_setshv_scalarhv_storehv_storeshv_store_enthv_stores*hv_undefHvENAMEHvENAMELENHvENAMEUTF8HvFILLHvHasAUXHvNAMEHvNAMELENHvNAMEUTF8HvREFCNT_incHvREFCNT_inc_simpleHvREFCNT_inc_simple_NNnewHVnewHVhvNullhvPERL_HASHPL_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_CHILDPerlIO_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,IVTYPEI8*,I8SIZE,I8TYPE,I16*,I16SIZE,I16TYPE,I32*,I32df,I32SIZE,I32TYPE,I64*,I64SIZE,I64TYPE,LONGLONGSIZE,LONGSIZE,memzeroPERL_INT_FAST8_T,PERL_INT_FAST16_T,PERL_UINT_FAST8_T,PERL_UINT_FAST16_TPERL_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_MINPERL_UINT_FAST8_T*,PERL_UINT_FAST16_T*,SHORTSIZE,UINTMAX_C,UV,U8,U16,U32,U64,UV_BITS*,UV_DIG*,UV_MAX,UV_MIN,UVSIZE,UVTYPEU8*,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_OKSVf,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_unstuffparse_arithexpr,parse_barestmt,parse_block,parse_fullexpr,parse_fullstmt,parse_label,parse_listexpr,parse_stmtseq,parse_subsignature,parse_termexprPL_parser,PL_parser->bufend,PL_parser->bufptr,PL_parser->linestart,PL_parser->linestrresume_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_XLOCALEIN_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_PAIRSPerl_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_INsv_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_setMGf_COPY,MGf_DUP,MGf_LOCAL,MGVTBLPERL_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_ABSPerl_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_tanhPerl_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,LOOPnewANONATTRSUB,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,newXSOA_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_optreepeep_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:
CvPADLISTpad_newPadARRAYPadlistARRAYPadlistMAXPadlistNAMESPadlistNAMESARRAYPadlistNAMESMAXPadlistREFCNTPadMAXPadnameLENPadnamelistARRAYPadnamelistMAXPadnamelistREFCNTPadnamelistREFCNT_decPadnamePVPadnameREFCNTPadnameREFCNT_decPadnameREFCNT_incPadnameSVPadnameUTF8PL_comppadPL_comppad_namePL_curpadSVs_PADMYSVs_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:
GRPASSWDHAS_ENDGRENTHAS_ENDGRENT_RHAS_ENDPWENTHAS_ENDPWENT_RHAS_GETGRENTHAS_GETGRENT_RHAS_GETPWENTHAS_GETPWENT_RHAS_SETGRENTHAS_SETGRENT_RHAS_SETPWENTHAS_SETPWENT_RPWAGEPWCHANGEPWCLASSPWCOMMENTPWEXPIREPWGECOSPWPASSWDPWQUOTA
๐ฆ Paths to system commands ๐ฆ
Tiny section, iconic content โ where Perl thinks your shell, sed, and sh actually live:
CSHLOC_SEDSH_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_PROTOCTERMID_R_PROTODRAND48_R_PROTOENDGRENT_R_PROTOENDHOSTENT_R_PROTOENDNETENT_R_PROTOENDPROTOENT_R_PROTOENDPWENT_R_PROTOENDSERVENT_R_PROTOGDBM_NDBM_H_USES_PROTOTYPESGDBMNDBM_H_USES_PROTOTYPESGETGRENT_R_PROTOGETGRGID_R_PROTOGETGRNAM_R_PROTOGETHOSTBYADDR_R_PROTOGETHOSTBYNAME_R_PROTOGETHOSTENT_R_PROTOGETLOGIN_R_PROTOGETNETBYADDR_R_PROTOGETNETBYNAME_R_PROTOGETNETENT_R_PROTOGETPROTOBYNAME_R_PROTOGETPROTOBYNUMBER_R_PROTOGETPROTOENT_R_PROTOGETPWENT_R_PROTOGETPWNAM_R_PROTOGETPWUID_R_PROTOGETSERVBYNAME_R_PROTOGETSERVBYPORT_R_PROTOGETSERVENT_R_PROTOGETSPNAM_R_PROTOHAS_DBMINIT_PROTOHAS_DRAND48_PROTOHAS_FLOCK_PROTOHAS_GETHOST_PROTOSHAS_GETNET_PROTOSHAS_GETPROTO_PROTOSHAS_GETSERV_PROTOSHAS_MODFL_PROTOHAS_SBRK_PROTOHAS_SETRESGID_PROTOHAS_SETRESUID_PROTOHAS_SHMAT_PROTOTYPEHAS_SOCKATMARK_PROTOHAS_SYSCALL_PROTOHAS_TELLDIR_PROTONDBM_H_USES_PROTOTYPESRANDOM_R_PROTOREADDIR_R_PROTOSETGRENT_R_PROTOSETHOSTENT_R_PROTOSETLOCALE_R_PROTOSETNETENT_R_PROTOSETPROTOENT_R_PROTOSETPWENT_R_PROTOSETSERVENT_R_PROTOSRANDOM_R_PROTOSRAND48_R_PROTOSTRERROR_R_PROTOTMPNAM_R_PROTOTTYNAME_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_contextrpp_extendrpp_invoke_xsrpp_is_lonerpp_pop_1_norcrpp_popfree_torpp_popfree_to_NNrpp_popfree_1rpp_popfree_1_NNrpp_popfree_2rpp_popfree_2_NNrpp_push_1rpp_push_IMMrpp_push_2rpp_xpush_1rpp_xpush_IMMrpp_xpush_2rpp_push_1_norcrpp_push_2*rpp_replace_atrpp_replace_at_NNrpp_replace_at_norcrpp_replace_at_norc_NNrpp_replace_1_1rpp_replace_1_1_NNrpp_replace_1_IMM_NNrpp_replace_2_1rpp_replace_2_1_NNrpp_replace_2_IMM_NNrpp_stack_is_rcrpp_try_AMAGIC_1rpp_try_AMAGIC_2rpp_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" ๐:
pregcomppregexecre_compilere_dup_gutsREGEX_LOCALE_CHARSETREGEXPregexpregexp_engineregexp_paren_pairregmatch_infoREXEC_COPY_SKIP_POSTREXEC_COPY_SKIP_PREREXEC_COPY_STRRX_BUFF_IDX_CARET_FULLMATCHRX_BUFF_IDX_CARET_POSTMATCHRX_BUFF_IDX_CARET_PREMATCHRX_BUFF_IDX_FULLMATCHRX_BUFF_IDX_POSTMATCHRX_BUFF_IDX_PREMATCHRX_MATCH_COPIEDRXapif_ALLRXapif_CLEARRXapif_DELETERXapif_EXISTSRXapif_FETCHRXapif_FIRSTKEYRXapif_NEXTKEYRXapif_ONERXapif_REGNAMERXapif_REGNAMESRXapif_REGNAMES_COUNTRXapif_SCALARRXapif_STORERXf_NO_INPLACE_SUBSTRXf_NULLRXf_SKIPWHITERXf_SPLITRXf_START_ONLYRXf_WHITERXf_PMf_EXTENDEDRXf_PMf_FOLDRXf_PMf_KEEPCOPYRXf_PMf_MULTILINERXf_PMf_SINGLELINERXf_SKIPWHITE*RXf_SPLIT*RXf_START_ONLY*RXf_WHITE*struct regexpSV_SAVED_COPYSvRXSvRXOK
๐ Reports and Formats ๐
The IO slots that hold your format header, body, and footer โ top, bottom, and the line counters in between ๐ฆ:
IoBOTTOM_GVIoBOTTOM_NAMEIoFMT_GVIoFMT_NAMEIoLINESIoLINES_LEFTIoPAGEIoPAGE_LENIoTOP_GVIoTOP_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_ADDRHAS_SIGINFO_SI_BANDHAS_SIGINFO_SI_ERRNOHAS_SIGINFO_SI_PIDHAS_SIGINFO_SI_STATUSHAS_SIGINFO_SI_UIDHAS_SIGINFO_SI_VALUEPERL_SIGNALS_UNSAFE_FLAGrsignalrsignal_stateSIG_NAMESIG_NUMSIG_SIZESigjmp_bufSiglongjmpSigsetjmpwhichsigwhichsig_pvwhichsig_pvnwhichsig_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 ๐:
ARCHLIBARCHLIB_EXPARCHNAMEBINBIN_EXPINSTALL_USR_BIN_PERLMULTIARCHPERL_INC_VERSION_LISTPERL_OTHERLIBDIRSPERL_RELOCATABLE_INCPERL_TARGETARCHPERL_USE_DEVELPERL_VENDORARCHPERL_VENDORARCH_EXPPERL_VENDORLIB_EXPPERL_VENDORLIB_STEMPRIVLIBPRIVLIB_EXPSITEARCHSITEARCH_EXPSITELIBSITELIB_EXPSITELIB_STEMSTARTPERLUSE_BSD_GETPGRPUSE_BSD_SETPGRPUSE_C_BACKTRACEUSE_CPLUSPLUSUSE_CROSS_COMPILEUSE_DTRACEUSE_DYNAMIC_LOADINGUSE_FAST_STDIOUSE_ITHREADSUSE_KERN_PROC_PATHNAMEUSE_LARGE_FILESUSE_LONG_DOUBLEUSE_MORE_BITSUSE_NSGETEXECUTABLEPATHUSE_PERLIOUSE_QUADMATHUSE_REENTRANT_APIUSE_SEMCTL_SEMID_DSUSE_SEMCTL_SEMUNUSE_SITECUSTOMIZEUSE_SOCKSUSE_STAT_BLOCKSUSE_STDIO_BASEUSE_STDIO_PTRUSE_STRICT_BY_DEFAULTUSE_THREADSUSE_64_BIT_ALLUSE_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_IN6HAS_SOCKADDR_SA_LENHAS_SOCKADDR_STORAGEHAS_SOCKATMARKHAS_SOCKETHAS_SOCKETPAIRHAS_SOCKS5_INITI_SOCKSI_SYS_SOCKIO
๐ธ Source Filters ๐ธ
Source-filter machinery plus a couple of subparsing helpers โ filter_add, filter_del, and friends:
apply_builtin_cv_attributesfilter_addfilter_delfilter_readscan_vstringstart_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_CALLunaryAMG_CALLunary_flagsdMARKdORIGMARKdSPdTARGETEXTENDMARKmPUSHimPUSHnmPUSHpmPUSHpvsmPUSHsmPUSHumXPUSHimXPUSHnmXPUSHpmXPUSHpvsmXPUSHsmXPUSHunewXSprotoORIGMARKPL_markstackPL_markstack_ptrPL_savestackPL_savestack_ixPL_scopestackPL_scopestack_ixPL_scopestack_namePL_stack_basePL_stack_spPL_tmps_floorPL_tmps_ixPL_tmps_stackPOPiPOPlPOPnPOPpPOPpxPOPpbytexPOPpx*POPsPOPuPOPulPUSHiPUSHMARKPUSHmortalPUSHnPUSHpPUSHpvsPUSHsPUSHuPUTBACKSAVEt_INTSPSPAGAINSSNEWSSNEWaSSNEWatSSNEWtSSPTRSSPTRtTARGTOPsXPUSHiXPUSHmortalXPUSHnXPUSHpXPUSHpvsXPUSHsXPUSHuXS_APIVERSION_BOOTCHECKXS_VERSIONXS_VERSION_BOOTCHECKXSRETURNXSRETURN_EMPTYXSRETURN_IVXSRETURN_NOXSRETURN_NVXSRETURN_PVXSRETURN_UNDEFXSRETURN_UVXSRETURN_YESXST_mIVXST_mNOXST_mNVXST_mPVXST_mUNDEFXST_mUVXST_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" ๐:
CopyCopyDdelimcpydo_joindo_sprintffbm_compilefbm_instrfoldEQfoldEQ_localeibcmpibcmp_localeibcmp_utf8instrmemCHRsmemEQmemEQsmemNEmemNEsMoveMoveDmy_snprintfmy_sprintfmy_strlcatmy_strlcpymy_strnlenmy_vsnprintfNewCopyninstrNullchPL_narninstrsavepvsavepvnsavepvssavesvpvsavesharedpvsavesharedpvnsavesharedpvssavesharedsvpvnon-sharedformssharedformsSTR_WITH_LENstrEQstrGEstrGTstrLESTRLENstrLTstrNEstrnEQstrnNEZeroZeroD
๐ SV Flags ๐
The SVt_ type enums and the svtype itself โ every kind of scalar a scalar can be, periodt:
SVt_IVSVt_NULLSVt_NVSVt_PVSVt_PVAVSVt_PVCVSVt_PVFMSVt_PVGVSVt_PVHVSVt_PVIOSVt_PVIVSVt_PVLVSVt_PVMGSVt_PVNVSVt_PVOBJSVt_REGEXPsvtype
๐ 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_REFCV_FROM_REFGV_FROM_REFHV_FROM_REFBOOL_INTERNALS_sv_isboolBOOL_INTERNALS_sv_isbool_falseBOOL_INTERNALS_sv_isbool_trueboolSVcroak_xs_usageCV_FROM_REF*DEFSVDEFSV_setget_svGV_FROM_REF*HV_FROM_REF*isGV_with_GPlooks_like_numberMUTABLE_AVMUTABLE_CVMUTABLE_GVMUTABLE_HVMUTABLE_IOMUTABLE_PTRMUTABLE_SVnewRVnewRV_incnewRV_noincnewSVnewSV_falsenewSV_truenewSV_typenewSV_type_mortalnewSVboolnewSVheknewSVhek_mortalnewSVivnewSVnvnewSVpadnamenewSVpvnewSVpv_sharenewSVpvfnewSVpvf_nocontextvnewSVpvfnewSVpvnnewSVpvn_flagsnewSVpvn_sharenewSVpvn_utf8newSVpvsnewSVpvs_flagsnewSVpvs_sharenewSVpvznewSVrvnewSVsvnewSVsv_flagsnewSVsv_nomgnewSVsv_flags_NNnewSVsv_nomg*newSVuvNullsvPL_sv_noPL_sv_undefPL_sv_yesPL_sv_zeroSAVE_DEFSVsortsvsortsv_flagsSVsv_backoffsv_blesssv_catpvsv_catpv_flagssv_catpv_mgsv_catpv_nomgsv_catpvnsv_catpvn_flagssv_catpvn_mgsv_catpvn_nomgsv_catpvn_nomg_maybeutf8sv_catpvssv_catpvs_flagssv_catpvs_mgsv_catpvs_nomgsv_catpvfsv_catpvf_nocontextsv_catpvf_mgsv_catpvf_mg_nocontextsv_vcatpvfsv_vcatpvf_mgsv_vcatpvfnsv_vcatpvfn_flagssv_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_catsvsv_catsv_flagssv_catsv_mgsv_catsv_nomgSV_CHECK_THINKFIRSTSV_CHECK_THINKFIRST_COW_DROPsv_chopsv_clearsv_cmpsv_cmp_flagssv_cmp_localesv_cmp_locale_flagssv_collxfrmsv_collxfrm_flagssv_copypvsv_copypv_flagssv_copypv_nomgsv_decsv_dec_nomgsv_derived_fromsv_derived_from_hvsv_derived_from_pvsv_derived_from_pvnsv_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_doessv_does_pvsv_does_pvnsv_does_svsv_eqsv_eq_flagssv_streqsv_streq_flags- overloading
- treatment of a NULL SV parameter
sv_force_normalsv_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_flagsifSV_COW_DROP_PVis set inflags sv_freesv_get_backrefssv_getssv_incsv_inc_nomgsv_insertsv_insert_flagssv_isasv_isa_svsv_isobjectsv_lensv_len_utf8sv_len_utf8_nomgsv_magicsv_magicextsv_mortalcopysv_mortalcopy_flagssv_newmortalsv_numcmpsv_numcmp_flagssv_numeqsv_numeq_flagssv_numnesv_numne_flagssv_numgesv_numge_flagssv_numgtsv_numgt_flagssv_numlesv_numle_flagssv_numltsv_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_numeqsv_numeq_flagssv_numnesv_numne_flagssv_numlesv_numle_flagssv_numltsv_numlt_flagssv_numgesv_numge_flagssv_numgtsv_numgt_flagsSV_GMAGICSV_SKIP_OVERLOADSV_FORCE_OVERLOADsv_pos_b2usv_pos_b2u_flagssv_pos_u2bsv_pos_u2b_flagssv_pvn_force_flagssv_refsv_reftypesv_replacesv_report_usedsv_resetsv_rvunweakensv_rvweakensv_set_boolsv_set_falsesv_set_truesv_set_undefsv_setboolsv_setbool_mgsv_setivsv_setiv_mgsv_setnvsv_setnv_mgsv_setpvsv_setpv_mgsv_setpvnsv_setpvn_freshsv_setpvn_mgsv_setpvssv_setpvs_mg
the setpv corner of the internet ๐ธ:
sv_setpv_bufsizesv_setpv_mg*sv_setpvfsv_setpvf_mgsv_setpvf_mg_nocontextsv_setpvf_nocontextsv_vsetpvfsv_vsetpvf_mgsv_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_ivsv_setref_nvsv_setref_pvsv_setref_pvnsv_setref_pvssv_setref_uvsv_setrv_incsv_setrv_inc_mgsv_setrv_noincsv_setrv_noinc_mgsv_setsvsv_setsv_flagssv_setsv_mgsv_setsv_nomgsv_setuvsv_setuv_mgsv_streq*sv_streq_flags*sv_unmagicsv_unmagicextsv_unrefsv_unref_flagssv_upgradesv_usepvnsv_usepvn_flagssv_usepvn_mgsv_utf8_decodesv_utf8_downgradesv_utf8_downgrade_flagssv_utf8_downgrade_nomgsv_utf8_encodesv_utf8_upgradesv_utf8_upgrade_flagssv_utf8_upgrade_flags_growsv_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_2cvsv_2iosv_2iv_flagssv_2mortalsv_2nv_flagssv_2pvsv_2pv_flagssv_2pvbytesv_2pvbyte_flagssv_2pvutf8sv_2pvutf8_flagssv_2uv_flagsSvAMAGICSvAMAGIC_offSvAMAGIC_onSvBoolFlagsOKSvCURSvCUR_setSvENDSvGAMAGICSvGETMAGICSvGMAGICALSvGROWSvIandPOKSvIandPOK_offSvIandPOK_onSvIOKSvIOK_notUVSvIOK_offSvIOK_onSvIOK_onlySvIOK_only_UVSvIOK_UVSvIOKpSvIsBOOLSvIsCOWSvIsCOW_shared_hashSvIVSvIV_nomgSvIVxSvIV_setSvIVXSvIVx*SvLENSvLEN_setSvLOCKSvMAGIC_setSvMAGICALSvNIOKSvNIOK_offSvNIOKpSvNOKSvNOK_offSvNOK_onSvNOK_onlySvNOKpSvNVSvNV_nomgSvNVxSvNV_setSvNVXSvNVx*SvOKSvOOKSvOOK_offSvOOK_offsetSvPOKSvPOK_offSvPOK_onSvPOK_onlySvPOK_only_UTF8SvPOKpSvPVSvPV_constSvPV_flagsSvPV_flags_constSvPV_flags_mutableSvPV_mutableSvPV_nolenSvPV_nolen_constSvPV_nomgSvPV_nomg_constSvPV_nomg_const_nolenSvPV_nomg_nolenSvPVbyteSvPVbyte_nolenSvPVbyte_nomgSvPVbyte_or_nullSvPVbyte_or_null_nomgSvPVbytexSvPVbytex_nolenSvPVutf8SvPVutf8_nolenSvPVutf8_nomgSvPVutf8_or_nullSvPVutf8_or_null_nomgSvPVutf8xSvPVxSvPVx_constSvPVx_nolenSvPVx_nolen_const
the force girlies ๐ช:
SvPV_forceSvPV_force_flagsSvPV_force_flags_mutableSvPV_force_flags_nolenSvPV_force_mutableSvPV_force_nolenSvPV_force_nomgSvPV_force_nomg_nolenSvPVbyte_forceSvPVbytex_forceSvPVutf8_forceSvPVutf8x_forceSvPVx_force
then the big star-heavy block, alphabetically serving as usual ๐:
SvPV_freeSvPV_mutable*SvPV_nolen*SvPV_nolen_const*SvPV_nomg*SvPV_nomg_const*SvPV_nomg_const_nolen*SvPV_nomg_nolen*SvPV_renewSvPV_setSvPV_shrink_to_curSvPVbyte*SvPVbyte_force*SvPVbyte_nolen*SvPVbyte_nomg*SvPVbyte_or_null*SvPVbyte_or_null_nomg*SvPVbytex*SvPVbytex_force*SvPVbytex_nolen*SvPVCLEARSvPVCLEAR_FRESHSvPVutf8*SvPVutf8_force*SvPVutf8_nolen*SvPVutf8_nomg*SvPVutf8_or_null*SvPVutf8_or_null_nomg*SvPVutf8x*SvPVutf8x_force*SvPVXSvPVX_constSvPVX_mutableSvPVXxSvPVx*SvPVx_const*SvPVx_force*SvPVx_nolen*SvPVx_nolen_const*SvPVXtrueSvPVXx*SvREADONLYSvREADONLY_offSvREADONLY_onSvREFCNTSvREFCNT_decSvREFCNT_dec_set_NULLSvREFCNT_dec_ret_NULLSvREFCNT_dec_NN
refcount squad, second verse same as the first ๐:
SvREFCNT_incSvREFCNT_inc_NNSvREFCNT_inc_simpleSvREFCNT_inc_simple_NNSvREFCNT_inc_simple_voidSvREFCNT_inc_simple_void_NNSvREFCNT_inc_voidSvREFCNT_inc_void_NN
and the last stretch of the Sv* wall, we made it, hydrate bestie ๐ง:
SvRMAGICALSvROKSvROK_offSvROK_onSvRVSvRV_setSvSETMAGICSvSetMagicSVSvSetMagicSV_nostealSvSetSVSvSetSV_nostealSvSHARESvSHARED_HASHSvSMAGICALSvSTASHSvSTASH_setSvTRUESvTRUE_NNSvTRUE_nomgSvTRUE_nomg_NNSvTRUExSvTYPESvUNLOCKSvUOKSvUPGRADESvUTF8SvUTF8_offSvUTF8_onSvUVSvUV_nomgSvUVxSvUV_setSvUVXSvUVXxSvUVx*SvVOKSvVSTRING_mguiv_2bufvnewSVpvf*
Tainting
four macros, whole personality, taint mode's entire press tour ๐ธ:
SvTAINTSvTAINTEDSvTAINTED_offSvTAINTED_on
Time
โฐ clocks, zones, and a whole lotta HAS_ macros, plus isdst living its three-mood era:
ASCTIME_R_PROTOCTIME_R_PROTOGMTIME_MAXGMTIME_MINGMTIME_R_PROTOHAS_ASCTIME_RHAS_ASCTIME64HAS_CTIME_RHAS_CTIME64HAS_DIFFTIMEHAS_DIFFTIME64HAS_FUTIMESHAS_GETITIMERHAS_GETTIMEOFDAYHAS_GMTIME_RHAS_GMTIME64HAS_LOCALTIME_RHAS_LOCALTIME64HAS_MKTIMEHAS_MKTIME64HAS_NANOSLEEPHAS_SETITIMERHAS_STRFTIMEHAS_TIMEHAS_TIMEGMHAS_TIMESHAS_TM_TM_GMTOFFHAS_TM_TM_ZONEHAS_TZNAMEHAS_USLEEPHAS_USLEEP_PROTOI_TIMEI_UTIMEL_R_TZSETLOCALTIME_MAXLOCALTIME_MINLOCALTIME_R_NEEDS_TZSETLOCALTIME_R_PROTOmini_mktimesv_strftime_intssv_strftime_tmmy_strftimeisdstis 0isdstis >0isdstis <0
Typedef names
the ID cards of the C side, every single type Perl bothered to name ๐ชช:
DB_Hash_tDB_Prefix_tDirentry_tFpos_tFree_tGid_tGid_t_fGid_t_signGid_t_sizeGroups_tMalloc_tMmap_tMode_tNetdb_hlen_tNetdb_host_tNetdb_name_tNetdb_net_tOff_tOff_t_sizePid_tRand_seed_tSelect_fd_set_tShmat_tSignal_tSize_tSize_t_sizeSock_size_tSSize_tTime_tUid_tUid_t_fUid_t_signUid_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_UTF8bytes_cmp_utf8bytes_from_utf8*bytes_to_utf8bytes_to_utf8_free_mebytes_to_utf8_temp_pvc9strict_utf8_to_uv*DO_UTF8extended_utf8_to_uv*foldEQ_utf8is_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_flagsis_utf8_fixed_width_buf_loc_flagsis_utf8_fixed_width_buf_loclen_flags
next clump, same section, keep going ๐:
is_utf8_invariant_stringis_utf8_invariant_string_locis_ascii_stringis_invariant_string
and the next one, we're still in here, we live here now ๐ฆ:
is_utf8_stringis_utf8_string_locis_utf8_string_loclenis_strict_utf8_stringis_strict_utf8_string_locis_strict_utf8_string_loclenis_c9strict_utf8_stringis_c9strict_utf8_string_locis_c9strict_utf8_string_loclenis_utf8_string_flagsis_utf8_string_loc_flagsis_utf8_string_loclen_flags
and more, still the same subsection, no we are not done ๐ญ:
is_utf8_valid_partial_charis_utf8_valid_partial_char_flagsisUTF8_CHARisSTRICT_UTF8_CHARisC9_STRICT_UTF8_CHARisUTF8_CHAR_flagsis_utf8_char_buf
this next clump is a whole curriculum, displays and hops and conversions and all of it ๐ฅ:
LATIN1_TO_NATIVENATIVE_TO_LATIN1NATIVE_TO_UNIpv_uni_displayUNI_DISPLAY_ISPRINTUNI_DISPLAY_BACKSLASHUNI_DISPLAY_BACKSPACEUNI_DISPLAY_REGEXUNI_DISPLAY_QQREPLACEMENT_CHARACTER_UTF8strict_utf8_to_uv*sv_cat_decodesv_recode_to_utf8sv_uni_displayUNI_TO_NATIVEUNICODE_IS_NONCHARUNICODE_IS_REPLACEMENTUNICODE_IS_SUPERUNICODE_IS_SURROGATEUNICODE_REPLACEMENTUTF8_CHK_SKIP*utf8_distanceutf8_hoputf8_hop_backutf8_hop_back_overshootutf8_hop_forwardutf8_hop_forward_overshootutf8_hop_safeutf8_hop_overshootUTF8_IS_INVARIANTUTF8_IS_NONCHARUTF8_IS_REPLACEMENTUTF8_IS_SUPERUTF8_IS_SURROGATEutf8_lengthUTF8_MAXBYTESUTF8_MAXBYTES_CASEUTF8_SAFE_SKIP*UTF8_SKIP*utf8_to_bytes_overwriteutf8_to_bytes_new_pvutf8_to_bytes_temp_pvutf8_to_bytesbytes_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_overwriteutf8_to_bytes_new_pvutf8_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_pvandutf8_to_bytes_temp_pv utf8_to_bytes- If the conversion was a noop
- If the conversion was successful
- If the conversion failed
bytes_from_utf8utf8_to_uvextended_utf8_to_uvstrict_utf8_to_uvc9strict_utf8_to_uvutf8_to_uv_or_dieutf8_to_uvchr_bufutf8_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/
- Module tests,
- Documentation
- Hacking tools and documentation
check*,Maintainers,Maintainers.pl, andMaintainers.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 internalsmy_exit(), level 3: perl-leveldie()and internalscroak(), level 1: unused, level 0: normal return
- level 2: perl-level
- 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")
- Don't begin a file-level symbol name with an underscore; (e.g., don't use:
- 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
- Gprof Profiling
- MISCELLANEOUS TRICKS
PERL_DESTRUCT_LEVEL- Leaked SV spotting:
sv_mark_arenas()andsv_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
- Linux, OS X,
- Poison
- Read-only optrees
- When is a bool not a bool?
- Finding unsafe truncations
- The .i Targets
- AUTHOR
๐ perlpolicy โ Various and sundry policies and commitments related to the Perl core
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
- Terminology
- 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>
- Steering Council Members
๐ 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.
DESCRIPTIONCLONING THE REPOSITORYWORKING WITH THE REPOSITORYFinding out your statusPatch workflowA note on derived filesCleaning a working directoryBisectingTopic branches and rewriting historyGrafts
WRITE ACCESS TO THE GIT REPOSITORYWorking with GitHub pull requestsAccepting a patchCommitting to bleadOn merging and rebasingCommitting to maintenance versionsUsing 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 ๐
DESCRIPTIONINTRODUCTIONTHE KEEPERS OF THE PUMPKINPUMPKIN?
THE RECORDSSELECTED RELEASE SIZESSELECTED 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.
DESCRIPTIONCore EnhancementsNamed Parameters in SignaturesMulti-variable "foreach" can now use aliased referencesEnhanced operation of regular expression patterns under /xxUnicode 17.0 is supportedNew source of entropy for PRNG seeding
SecurityCVE-2026-8376 - Buffer overflow in Perl_study_chunkCVE-2026-57432 - Buffer overflow in S_measure_structCVE-2026-13221 - Regex trie 16-bit field overflow
Incompatible ChangesUnicode rules are now fully enforced on identifier and regular expression group names.
DeprecationsPerformance EnhancementsModules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
DiagnosticsChanges to Existing Diagnosticsold message, new message
New Diagnostics
Configuration and CompilationTestingPlatform SupportPlatform-Specific NotesWindows, 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 ChangesSelected Bug FixesINTERFACE keyword in XS"&CORE::__CLASS__" no longer returns invalid resultsparse_subsignature() can now handle empty subroutine signatures
Known ProblemsObituaryAcknowledgementsReporting BugsGive ThanksSEE ALSO
๐ฆ perl5440delta, perldelta โ what is new for perl v5.44.0
same energy, two names, one release ๐ (aliases are iconic like that)
DESCRIPTIONCore EnhancementsNamed Parameters in SignaturesMulti-variable "foreach" can now use aliased referencesEnhanced operation of regular expression patterns under /xxUnicode 17.0 is supportedNew source of entropy for PRNG seeding
SecurityCVE-2026-8376 - Buffer overflow in Perl_study_chunkCVE-2026-57432 - Buffer overflow in S_measure_structCVE-2026-13221 - Regex trie 16-bit field overflow
Incompatible ChangesUnicode rules are now fully enforced on identifier and regular expression group names.
DeprecationsPerformance EnhancementsModules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
DiagnosticsChanges to Existing Diagnosticsold message, new message
New Diagnostics
Configuration and CompilationTestingPlatform SupportPlatform-Specific NotesWindows, 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 ChangesSelected Bug FixesINTERFACE keyword in XS"&CORE::__CLASS__" no longer returns invalid resultsparse_subsignature() can now handle empty subroutine signatures
Known ProblemsObituaryAcknowledgementsReporting BugsGive ThanksSEE ALSO
๐ธ perl5422delta โ what is new for perl v5.42.2
a lil maintenance drop, but with a security fix so read it bestie ๐ญ
DESCRIPTIONSecurity[CVE-2026-4176] Vulnerability in Compress::Raw::Zlib
Incompatible ChangesModules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
TestingAcknowledgementsReporting BugsGive ThanksSEE ALSO
๐ perl5421delta โ what is new for perl v5.42.1
small but mighty, platform gworls got some attention ๐
DESCRIPTIONIncompatible ChangesModules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
Configuration and CompilationTestingPlatform SupportPlatform-Specific NotesAIX, Win32
Selected Bug FixesAcknowledgementsReporting BugsGive ThanksSEE 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.
DESCRIPTIONCore EnhancementsMore CORE:: subsNew pragma "source::encoding"New ":writer" attribute on field variablesNew "any" and "all" operatorsApostrophe as a global name separator can be disabledLexical method declaration using "my method"Lexical method invocation operator "->&"Switch and Smart Match operator kept, behind a featureUnicode 16.0 supportedAssigning 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 ChangesRemoved containing function references for functions without eval
Performance EnhancementsModules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
DiagnosticsNew DiagnosticsChanges to Existing Diagnostics
Utility ChangesPorting/test-dist-modules.pl
Configuration and CompilationTestingPlatform SupportPlatform-Specific Notesarm64 Darwin, Android, Cygwin, MacOS (Darwin)
Internal ChangesSelected Bug FixesObituariesAbe TimmermanAndrew Main
AcknowledgementsReporting BugsGive ThanksSEE ALSO
๐ perl5404delta โ what is new for perl v5.40.4
maintenance branch said "not today, zlib" ๐ก๏ธ
DESCRIPTIONSecurity[CVE-2026-4176] Vulnerability in Compress::Raw::Zlib
Incompatible ChangesModules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
TestingAcknowledgementsReporting BugsGive ThanksSEE ALSO
๐ง perl5403delta โ what is new for perl v5.40.3
threads + working directory = chaos, so they patched it ๐
DESCRIPTIONSecurity[CVE-2025-40909] Perl threads have a working directory race condition where file operations may target unintended paths
Incompatible ChangesModules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
TestingAcknowledgementsReporting BugsGive ThanksSEE ALSO
๐ perl5402delta โ what is new for perl v5.40.2
tr// said "let me overflow real quick" and got handled ๐
DESCRIPTIONSecurity[CVE-2024-56406] Heap buffer overflow vulnerability with tr//
Incompatible ChangesModules and PragmataUpdated Modules and Pragmata
AcknowledgementsReporting BugsGive ThanksSEE ALSO
๐ perl5401delta โ what is new for perl v5.40.1
a tidy lil point release, bugs got squished ๐ซถ
DESCRIPTIONIncompatible ChangesModules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
Configuration and CompilationTestingSelected Bug FixesAcknowledgementsReporting BugsGive ThanksSEE 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. ๐
DESCRIPTIONCore EnhancementsNew "__CLASS__" Keyword":reader" attribute for field variablesPermit a space in "-M" command-line optionRestrictions to "use VERSION" declarationsNew "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 experimentalThe ":5.40" feature bundle adds "try""use v5.40;" imports builtin functions
SecurityCVE-2023-47038 - Write past buffer end via illegal user-defined Unicode propertyCVE-2023-47039 - Perl for Windows binary hijacking vulnerability
Incompatible Changesreset EXPR now calls set-magic on scalarsCalling the import method of an unknown package produces a warning"return" no longer allows an indirect objectClass barewords no longer resolved as file handles in method calls under "no feature "bareword_filehandles""
DeprecationsPerformance EnhancementsModules and PragmataNew Modules and PragmataUpdated Modules and Pragmata
DocumentationChanges to Existing Documentation
DiagnosticsNew DiagnosticsChanges to Existing Diagnostics
Configuration and CompilationTestingPlatform SupportNew PlatformsSerenity 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
- Discontinued Platforms
- 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
- Platform-Specific Notes
- 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
- perl5db.pl (the debugger)
- 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
- New Platforms
- 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
- Platform-Specific Notes
- 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
opASSIGNmacro 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:utf8handles 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::PPenablesallow_nonrefby 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 inS_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"%jformat 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
AUTOLOADfor 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::Codesand its associated Country, Currency and Language modules
๐ Performance Enhancements
๐ฆ Modules and Pragmata
- Removal of
use vars - Use of
DynaLoaderchanged toXSLoaderin 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 moduleArchive::Tar[CVE-2018-18311]Integer overflow leading to buffer overflow and segmentation fault[CVE-2018-18312]Heap-buffer-overflow write inS_regatom(regcomp.c)[CVE-2018-18313]Heap-buffer-overflow read inS_grok_bslash_N(regcomp.c)[CVE-2018-18314]Heap-buffer-overflow write inS_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_recAssertion 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
- Platform-Specific Notes
- 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
- Platform-Specific Notes
- 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 @INCConfigure -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
- Removal of the current directory (
- 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 removedrequire ::Foo::Baris now illegal- Literal control character variable names are no longer permissible
"NBSP"is no longer permissible in"\N{...}"
- Unescaped literal
- 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,
readlineis faster
- New Faster Hash Function on 64 bit builds,
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- New Documentation
- Changes to Existing Documentation
- Diagnostics
- New Diagnostics
- Changes to Existing Diagnostics
- Utility Changes
c2phandpstructPorting/pod_lib.plPorting/sync-with-cpanperf/benchmarksPorting/checkAUTHORS.plt/porting/regen.tutils/h2xs.PLperlbug
- 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
- New Platforms
- 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_recAssertion 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
- Platform-Specific Notes
- Selected Bug Fixes
- Acknowledgements
- Reporting Bugs
- SEE ALSO
perl5242delta - what is new for perl v5.24.2 โจ
- DESCRIPTION
- Security
- Improved handling of
'.'in @INC inbase.pm "Escaped"colons and relative paths in PATH
- Improved handling of
- 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
-Diswitch 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 printfandsprintfnow allow reordered precision arguments- More fields provided to
"sigaction"callback with"SA_SIGINFO" - Hashbang redirection to Perl 6
- Security
- Set proper
umaskbefore callingmkstemp(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"
- Set proper
- 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::MaxArgNumshas been fixed - Only blanks and tabs are now allowed within
"[...]"within"(?[...])"
- The
- Deprecations
- Using code points above the platform's
"IV_MAX"is now deprecated - Doing bitwise operations on strings containing code points above
0xFFis deprecated sysread(),syswrite(),recv()andsend()are deprecated on:utf8handles
- Using code points above the platform's
- 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()andsort()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
- AmigaOS, Cygwin, EBCDIC, UTF-EBCDIC extended, EBCDIC
- Platform-Specific Notes
- 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 inbase.pm "Escaped"colons and relative paths in PATH
- Improved handling of
- 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
-Diswitch 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
umaskbefore callingmkstemp(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
- Platform-Specific Notes
- 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
- Platform-Specific Notes
- 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,CPANPLUSplus everyCPANPLUS::*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
- Module removals
- 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
- Discontinued Platforms
- 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
- Platform-Specific Notes
- Selected Bug Fixes
- fix
/\\h/equivalence with/[\h]/
- fix
- 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
- Platform-Specific Notes
- 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
CORENamespace - Other Changes
- Security
- Use
is_utf8_char_buf()and notis_utf8_char() - Malformed UTF-8 input could cause attempts to read beyond the end of the buffer
File::Glob::bsd_glob()memory error withGLOB_ALTDIRFUNC(CVE-2011-2728)- Privileges are now set correctly when assigning to
$(
- Use
- Deprecations
- Don't read the Unicode data base files in
lib/unicore - XS functions
is_utf8_char(),utf8_to_uvchr()andutf8_to_uvuni()
- Don't read the Unicode data base files in
- Future Deprecations
- Core Modules
- Platforms with no supporting programmers
- Other Future Deprecations
- Incompatible Changes
- Special blocks called in void context
- The
overloadingpragma 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::Open3no longer providesxfork(),xclose_on_exec()andxpipe_anon()$$no longer caches PID$$andgetppid()no longer emulate POSIX semantics under LinuxThreads$<,$>,$(and$)are no longer cached- Which Non-ASCII characters get quoted by
quotemetaand\Qhas changed
- Performance Enhancements
- Modules and Pragmata
- Deprecated Modules
Version::Requirements
- New Modules and Pragmata
- Updated Modules and Pragmata
- Removed Modules and Pragmata
- Deprecated Modules
- 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_unheap-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_startuse-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
Digestunsafe 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 withGLOB_ALTDIRFUNC(CVE-2011-2728)Encodedecode_xsn-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()andpop()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
SVandHVstructures - Memory consumption improvements to
Exporter - Memory savings for weak references
- "
%+" and "%-" use less memory - Multiple small improvements to threads
- Adjacent pairs of
nextstateopcodes 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%sdoesn'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
@ISAarrays 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(), andeach()work on arrayssplit()and@_
๐ฏ๏ธ Obituary
๐ Acknowledgements
๐ Reporting Bugs
๐ SEE ALSO
perl5125delta - what is new for perl v5.12.5
๐ DESCRIPTION
๐ Security
- "Encode"
decode_xsn-byte heap-overflow (CVE-2011-2939) File::Glob::bsd_glob()memory error withGLOB_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
qroverloading- 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
substrarguments removed
๐ง Potentially Incompatible Changes
- Deprecations warn by default
- Version number formats
@INCreorganization- 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
:lockedon 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"
- "Illegal character in prototype for
๐ ๏ธ 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:
AIXCygwinDarwin (Mac OS X)DragonFly BSDFreeBSDIrixNetBSDOpenVMSStratus VOSSymbianWindows
๐ 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:
autodieCompress::Raw::Bzip2parentParse::CPAN::Meta
๐ง Pragmata Changes
These pragmata all got updated, one by one, no skips:
attributesattrsbasebigintbignumbigratcharnamesconstantfeaturefieldslibopenoverloadoverloadingversion
๐ 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 %sCan't locate package %s for the parents of %sv-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.tt/io/perlio_fail.tt/io/perlio_leaks.tt/io/perlio_open.tt/io/perlio.tt/io/pvbm.tt/mro/package_aliases.tt/op/dbm.tt/op/index_thr.tt/op/pat_thr.tt/op/qr_gc.tt/op/reg_email_thr.tt/op/regexp_qr_embed_thr.tt/op/regexp_unicode_prop.tt/op/regexp_unicode_prop_thr.tt/op/reg_nc_tie.tt/op/reg_posixcc.tt/op/re.tt/op/setpgrpstack.tt/op/substr_thr.tt/op/upgrade.tt/uni/lex_utf8.tt/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
\Kescape - Vertical and horizontal whitespace, and linebreak
- Optional pre-match and post-match captures with the
/pflag
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:
featuremro- Scoping of the
sortpragma - Scoping of
bignum,bigint,bigrat,base,strictandwarnings versionwarningsless
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()andstrlcpy()d_pseudoforkandd_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.hfiles- 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 valuesPERL5SHELLand tainting- Using
*FILE{IO} - Overloading and reblessing
- Overloading and UTF-8
evalmemory leaks fixed- Random device on Windows
PERLIO_DEBUGPerlIO::scalarand read-only scalarsstudy()and UTF-8- Critical signals
@INC-hook fix-tswitch 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 declarationreaddir()/closedir()/etc. attempted on invalid dirhandle- Opening dirhandle/filehandle
%salso as a file/directory - Use of
-Pis deprecated - v-string in
use/requireis 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, iconich2xsโ 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 %sMaximal count of pending signals (%s) exceededpanic: attempt to call %s in %sFETCHSIZE returned a negative valueCan't upgrade %s (%d) to %d%s argument is not a HASH or ARRAY element or a subroutineCannot make the non-overridable builtin %s fatalUnrecognized character '%s' in column %dOffset outside stringInvalid 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 arrayNon-string passed as bitmaskSearch 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
$_Insidefor(..) mod_perl 1.26Doesn't Build With Threaded Perllib/ftmp-securitytests warn'system possibly insecure'libwww-perl(LWP) failsbase/date #51PDLfailing some testsPerl_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.torDigest::MD5 - HP-UX
lib/posixSubtest 9 Fails When LP64-Configured - Linux with glibc 2.2.5 fails
t/op/intsubtest #6 with-Duse64bitint - Linux With Sfio Fails
op/miscTest 48 - Mac OS X
- Mac OS X dyld undefined symbols
- OS/2 Test Failures
op/sprintftests 91, 129, and 130- SCO
- Solaris 2.5
- Solaris x86 Fails Tests With
-Duse64bitint - SUPER-UX (NEC SX)
Term::ReadKeynot working on Win32- UNICOS/mk
- UTS
- VOS (Stratus)
- VMS
- Win32
XML::Parsernot 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()#linedirectives- Subroutine prototypes
map()- Debugger
PERL5OPTchop()- Unicode support
- 64-bit support
- Compiler
- Lvalue subroutines
IO::SocketFile::Findxsubpp"no Module;"- Tests
- Core features
- Configuration issues
- Documentation
- Bundled modules
B::ConciseFile::TempPod::LaTeXPod::Text::OverstrikeCGICPANClass::StructDB_FileDevel::PeekFile::FindGetopt::LongIO::PollIPC::Open3Math::BigFloatMath::ComplexNet::PingOpcodePod::ParserPod::TextSDBM_FileSys::SyslogTie::RefHashTie::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
CHECKblocks - POSIX character class syntax
[: :]supported - Better pseudo-random number generator
- Improved
"qw//"operator - Better worst-case behavior of hashes
pack()format'Z'supportedpack()format modifier'!'supportedpack()andunpack()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 namesexists()anddelete()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:crlfand:rawmodes"-T"filetest recognizes UTF-8 encoded files as"text"system(), backticks and pipe open now reflectexec()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$^Xvariables may now have names longer than one character- New variable
$^Creflects"-c"switch - New variable
$^Vcontains 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
attributesBBenchmarkByteLoaderconstantcharnamesData::DumperDBDB_FileDevel::DProfDevel::PeekDumpvalueDynaLoaderEnglishEnvFcntlFile::CompareFile::FindFile::GlobFile::SpecFile::Spec::FunctionsGetopt::LongIOJPLlibMath::BigIntMath::ComplexMath::TrigPod::ParserPod::InputObjectsPod::CheckerpodcheckerPod::ParseUtilsPod::FindPod::SelectpodselectPod::Usagepod2usagePod::Text and Pod::ManSDBM_FileSys::SyslogSys::HostnameTerm::ANSIColorTime::LocalWin32XSLoader- DBM Filters
- Pragmata
โจ Utility Changes
The little command-line besties got some love too:
dprofppfind2perlh2xsperlccperldoc- The Perl Debugger
๐ฆ Improved Documentation
Docs got a glow up, we love to see it:
perlapi.podperlboot.podperlcompile.podperldbmfilter.podperldebug.podperldebguts.podperlfork.podperlfilter.podperlhack.podperlintern.podperllexwarn.podperlnumber.podperlopentut.podperlreftut.podperltootc.podperltodo.podperlunicode.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
-Dusethreadsmeans something different- New Configure flags
- Threadedness and 64-bitness now more daring
- Long Doubles
-Dusemorebits-Duselargefilesinstallusrbinperl- 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"andAUTOLOAD"-bareword"allowed under"use integer"- Failures in
DESTROY() - Locale bugs fixed
- Memory leaks
- Spurious subroutine stubs after failed subroutine calls
- Taint failures under
"-U" ENDblocks and the"-c"switch- Potential to leak
DATAfilehandles
๐ฉบ 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 quotesAttempt to join selfBad evalled substitution patternBad realloc() ignoredBareword found in conditionalBinary number > 0b11111111111111111111111111111111 non-portableBit vector size > 32 non-portableBuffer overflow in prime_env_iter: %sCan'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 defaultCan't modify non-lvalue subroutine callCan't read CRTL environCan't remove %s: %s, skipping fileCan't return %s from lvalue subroutineCan't weaken a nonreferenceCharacter class [:%s:] unknownCharacter class syntax [%s] belongs inside character classesConstant is not %s referenceconstant(%s): %sCORE::%s is not a keyworddefined(@array) is deprecateddefined(%hash) is deprecatedDid not produce a valid header(Did you mean "local" instead of "our"?)Document contains no dataentering effective %s failedfalse [] range "%s" in regexpFilehandle %s opened only for outputflock() on closed filehandle %sGlobal symbol "%s" requires explicit package nameHexadecimal number > 0xffffffff non-portableIll-formed CRTL environ value "%s"Ill-formed message in prime_env_iter: |%s|Illegal binary digit %sIllegal binary digit %s ignoredIllegal number of bits in vecInteger overflow in %s numberInvalid %s attribute: %sInvalid %s attributes: %sinvalid [] range "%s" in regexpInvalid separator character %s in attribute listInvalid separator character %s in subroutine attribute listleaving effective %s failedLvalue subs returning %s not implemented yetMethod %s not permittedMissing %sbrace%s on \N{}Missing command in piped openMissing name in "my sub"No %s specified for -%cNo package name allowed for variable %s in "our"No space allowed after -%cno UTC offset information; assuming local time is UTCOctal number > 037777777777 non-portablepanic: del_backrefpanic: kid popen errno readpanic: magic_killbackrefsParentheses missing around "%s" listPossible unintended interpolation of %s in stringPossible Y2K bug: %spragma "attrs" is deprecated, use "sub NAME : ATTRS" insteadPremature end of script headersRepeat count in pack overflowsRepeat count in unpack overflowsrealloc() of freed memory ignoredReference is already weaksetpgrp can't take argumentsStrange *+?{} on zero-length expressionswitching effective %s is not implementedThis Perl can't reset CRTL environ elements (%s)This Perl can't set CRTL environ elements (%s=%s)Too late to run %s blockUnknown open() mode '%s'Unknown process %x sent message to prime_env_iter: %sUnrecognized escape \\%c passed throughUnterminated attribute parameter in attribute listUnterminated attribute listUnterminated attribute parameter in subroutine attribute listUnterminated subroutine attribute listValue of CLI symbol "%s" too longVersion 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 keywordTreatment of list slices of undef has changedFormat of $English::PERL_VERSION is differentLiterals of the form 1.2.3 parse differentlyPossibly changed pseudo-random number generatorHashing function for hash keys has changed"undef" fails on read only valuesClose-on-exec bit may be set on pipe and socket handlesWriting "$$1" to mean "${$}1" is unsupporteddelete(), each(), values() and "\(%h)"vec(EXPR,OFFSET,BITS) enforces powers-of-two BITSText of some diagnostic output has changed"%@" has been removedParenthesized not() behaves like a list operatorSemantics of bareword prototype "(*)" have changedSemantics of bit operators may have changed on 64-bit platformsMore 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 ๐ง
ThreadsUnicode64-bit supportLvalue subroutinesWeak referencesThe pseudo-hash data typeThe Compiler suiteInternal implementation of file globbingThe DB moduleThe 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 extensionsIll-formed logical name |%s| in prime_env_iterIn string, @%s now must be written as \@%sProbable precedence problem on %sregexp too bigUse 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 concurrencyLexically scoped warning categoriesUnicode and UTF-8 supportSupport for interpolating named characters"our" declarationsSupport for strings represented as a vector of ordinalsImproved Perl version numbering systemNew syntax for declaring subroutine attributesFile and directory handles can be autovivifiedopen() with more than two arguments64-bit supportLarge file supportLong doubles"more bits"Enhanced support for sort() subroutines"sort $coderef @foo" allowedFile globbing implemented internallySupport for CHECK blocksPOSIX character class syntax [: :] supportedBetter pseudo-random number generatorImproved "qw//" operatorBetter worst-case behavior of hashespack() format 'Z' supportedpack() format modifier '!' supportedpack() and unpack() support counted stringsComments in pack() templatesWeak referencesBinary numbers supportedLvalue subroutinesSome arrows may be omitted in calls through referencesBoolean assignment operators are legal lvaluesexists() is supported on subroutine namesexists() and delete() are supported on array elementsPseudo-hashes work betterAutomatic flushing of output buffersBetter diagnostics on meaningless filehandle operationsWhere possible, buffered data discarded from duped input filehandleeof() 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() failureImproved diagnosticsDiagnostics follow STDERRMore consistent close-on-exec behaviorsyswrite() ease-of-useBetter syntax checks on parenthesized unary operatorsBit operators support full native integer widthImproved security featuresMore functional bareword prototype (*)"require" and "do" may be overridden$^X variables may now have names longer than one characterNew variable $^C reflects "-c" switchNew variable $^V contains Perl version as a stringOptional Y2K warningsArrays now always interpolate into double-quoted strings@- and @+ provide starting/ending offsets of regex matches
๐ฆ Modules and Pragmata ๐ฆ
๐งฉ Modules ๐งฉ
attributesBBenchmarkByteLoaderconstantcharnamesData::DumperDBDB_FileDevel::DProfDevel::PeekDumpvalueDynaLoaderEnglishEnvFcntlFile::CompareFile::FindFile::GlobFile::SpecFile::Spec::FunctionsGetopt::LongIOJPLlibMath::BigIntMath::ComplexMath::TrigPod::ParserPod::InputObjectsPod::CheckerpodcheckerPod::ParseUtilsPod::FindPod::SelectpodselectPod::Usagepod2usagePod::Text and Pod::ManSDBM_FileSys::SyslogSys::HostnameTerm::ANSIColorTime::LocalWin32XSLoaderDBM Filters
๐ช Pragmata ๐ช
heading's there, list is empty in the TOC ๐
๐ ๏ธ Utility Changes ๐ ๏ธ
dprofppfind2perlh2xsperlccperldocThe Perl Debugger
๐ Improved Documentation ๐
perlapi.podperlboot.podperlcompile.podperldbmfilter.podperldebug.podperldebguts.podperlfork.podperlfilter.podperlhack.podperlintern.podperllexwarn.podperlnumber.podperlopentut.podperlreftut.podperltootc.podperltodo.podperlunicode.pod
โก Performance enhancements โก
Simple sort() using { $a <=> $b } and the like are optimizedOptimized assignments to lexical variablesFaster subroutine callsdelete(), each(), values() and hash iteration are faster
โ๏ธ Installation and Configuration Improvements โ๏ธ
-Dusethreads means something differentNew Configure flagsThreadedness and 64-bitness now more daringLong Doubles-Dusemorebits-DuselargefilesinstallusrbinperlSOCKS support"-A" flagEnhanced 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 quotesAttempt to join selfBad evalled substitution patternBad realloc() ignoredBareword found in conditionalBinary number > 0b11111111111111111111111111111111 non-portableBit vector size > 32 non-portableBuffer overflow in prime_env_iter: %sCan'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 defaultCan't modify non-lvalue subroutine callCan't read CRTL environCan't remove %s: %s, skipping fileCan't return %s from lvalue subroutineCan't weaken a nonreferenceCharacter class [:%s:] unknownCharacter class syntax [%s] belongs inside character classesConstant is not %s referenceconstant(%s): %sCORE::%s is not a keyworddefined(@array) is deprecateddefined(%hash) is deprecatedDid not produce a valid header(Did you mean "local" instead of "our"?)Document contains no dataentering effective %s failedfalse [] range "%s" in regexpFilehandle %s opened only for outputflock() on closed filehandle %sGlobal symbol "%s" requires explicit package nameHexadecimal number > 0xffffffff non-portableIll-formed CRTL environ value "%s"Ill-formed message in prime_env_iter: |%s|Illegal binary digit %sIllegal binary digit %s ignoredIllegal number of bits in vecInteger overflow in %s numberInvalid %s attribute: %sInvalid %s attributes: %sinvalid [] range "%s" in regexpInvalid separator character %s in attribute listInvalid separator character %s in subroutine attribute listleaving effective %s failedLvalue subs returning %s not implemented yetMethod %s not permittedMissing %sbrace%s on \N{}Missing command in piped openMissing name in "my sub"No %s specified for -%cNo package name allowed for variable %s in "our"No space allowed after -%cno UTC offset information; assuming local time is UTCOctal number > 037777777777 non-portablepanic: del_backrefpanic: kid popen errno readpanic: magic_killbackrefsParentheses missing around "%s" listPossible unintended interpolation of %s in stringPossible Y2K bug: %spragma "attrs" is deprecated, use "sub NAME : ATTRS" insteadPremature end of script headersRepeat count in pack overflowsRepeat count in unpack overflowsrealloc() of freed memory ignoredReference is already weaksetpgrp can't take argumentsStrange *+?{} on zero-length expressionswitching effective %s is not implementedThis Perl can't reset CRTL environ elements (%s)This Perl can't set CRTL environ elements (%s=%s)Too late to run %s blockUnknown open() mode '%s'Unknown process %x sent message to prime_env_iter: %sUnrecognized escape \%c passed throughUnterminated attribute parameter in attribute listUnterminated attribute listUnterminated attribute parameter in subroutine attribute listUnterminated subroutine attribute listValue of CLI symbol "%s" too longVersion 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 extensionsIll-formed logical name |%s| in prime_env_iterIn string, @%s now must be written as \@%sProbable precedence problem on %sregexp too bigUse 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 hashBareword "%s" refers to nonexistent packageCan't call method "%s" on an undefined valueCan't check filesystem of script "%s" for nosuidCan't coerce array into hashCan't goto subroutine from an eval-stringCan't localize pseudo-hash elementCan't use %%! because Errno.pm is not availableCannot find an opnumber for "%s"Character class syntax [. .] is reserved for future extensionsCharacter class syntax [: :] is reserved for future extensionsCharacter 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 timeExplicit blessing to '' (assuming package main)Illegal hex digit ignoredNo such array fieldNo such field "%s" in variable %s of type %sOut of memory during ridiculously large requestRange iterator outside integer rangeRecursive inheritance detected while looking for method '%s' %sReference found where even-sized list expectedUndefined value assigned to typeglobUse of reserved word "%s" is deprecatedperl: warning: Setting locale failed
๐ Obsolete Diagnostics
Can't mktemp()Can't write to temp file for -e: %sCannot open temporary fileregexp 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
%ENVworks - Change to "Can't locate Foo.pm in @INC" error
- Compilation option: Binary compatibility with 5.003
$PERL5OPTenvironment variable- Limitations on
-M,-m, and-Toptions - More precise warnings
- Deprecated: Inherited
"AUTOLOAD"for non-methods - Previously deprecated
%OVERLOADis 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$TERMdoesn't look like a terminal name
- No
- 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
- List assignment to
- 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
- pod2html
- 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
- "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
- BUGS
- SEE ALSO
- HISTORY
๐ perlbook โ Books about and related to Perl
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
- The most popular books
๐ perlcommunity โ a brief overview of the Perl community
The group chat for the whole language fr fr ๐ซถ find your people:
- DESCRIPTION
- Where to Find the Community
- Mailing Lists and Newsgroups
- IRC
- Websites
- User Groups
- Workshops
- Hackathons
- Conventions
- The Perl Conference, OSCON
- AUTHOR
๐ 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:valueor-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)
- Current experiments
- 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,getprioritysystem()extprocon the first line- Additional modules:
- Prebuilt methods:
File::Copy::syscopy,DynaLoader::mod2fnameCwd::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,FillWinErrorFillOSError(rc)- Loading DLLs and ordinals in DLLs
Perl flavors
the whole why are there four of you situation:
perl.exeperl_.exeperl__.exeperl___.exe- Why strange names?
- Why dynamic linking?
- Why chimera build?
ENVIRONMENT
the env vars, slay:
PERLLIB_PREFIXPERL_BADLANGPERL_BADFREEPERL_SH_DIRUSE_PERL_FLOCKTMPorTEMP
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
BEGINLIBPATHandENDLIBPATH.fromLIBPATH
- 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
- Error message
- 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_Filetests 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
perlboot - Links to information on object-oriented programming in Perl
DESCRIPTION
perlbot - Links to information on object-oriented programming in Perl
DESCRIPTION
perlrepository - Links to current information on the Perl source repository
DESCRIPTION
perltodo - Link to the Perl to-do list
DESCRIPTION
perltooc - Links to information on object-oriented programming in Perl
DESCRIPTION
perltoot - Links to information on object-oriented programming in Perl
DESCRIPTION
๐ PRAGMA DOCUMENTATION ๐
the pragma era, bestie. buckle up ๐
attributes - get/set subroutine or variable attributes
SYNOPSIS
DESCRIPTION
- What
importdoes - 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
printflocksystem/exec
GOTCHAS
DIAGNOSTICS
:void cannot be used with lexical scopeNo 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 subroutinefail 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 emptyClass 'Foo' tried to inherit from itself
- HISTORY
- CAVEATS
- SEE ALSO
๐ bigfloat โ transparent big floating point number support for Perl
- SYNOPSIS
- DESCRIPTION
- Options
aoraccuracy,porprecision,tortrace,l,lib,try, oronly,hex,oct,vorversion
- Math Library
- Method calls
- Methods
inf(),NaN(),e,PI,bexp(),bpi(),accuracy(),precision(),round_mode(),div_scale(),upgrade(),downgrade(),in_effect()
- Options
- 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 integervs.use bigint- Options
aoraccuracy,porprecision,tortrace,l,lib,try, oronly,hex,oct,vorversion
- 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
aoraccuracy,porprecision,l,lib,try, oronly,hex,oct,vorversion
- Math Library
- Method calls
- Methods
inf(),NaN(),e,PI,bexp(),bpi(),accuracy(),precision(),round_mode(),div_scale(),upgrade(),downgrade(),in_effect()
- CAVEATS
- The
upgrade()anddowngrade()methods - Hexadecimal, octal, and binary floating point literals
- Operator vs literal overloading
- Ranges
in_effect()hex()/oct()
- The
- 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
aoraccuracy,porprecision,tortrace,l,lib,try, oronly,hex,oct,vorversion
- Math Library
- Method calls
- Methods
inf(),NaN(),e,PI,bexp(),bpi(),accuracy(),precision(),round_mode(),div_scale(),in_effect()
- Options
- 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 ๐ซ
truefalseis_boolinfnanweakenunweakenis_weakblessedrefaddrreftypecreated_as_stringcreated_as_numberstringifyceilfloorindexedtrimis_taintedexport_lexicallyload_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
diagnosticsPragma - The
splainProgram
- The
- 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
STDINand/orSTDOUTindividually - The
:localesub-pragma
- Setting
- 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-EUCdoublebyte encodingstr///- 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
STDINandSTDOUTget the encoded stream - literals in regex that are longer than 127 bytes
- EBCDIC
format- See also
CAVEATSin 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
STDINandSTDOUT - 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"โ allowpush,each,keys, and other built-ins on references"bitwise"โ allow the new stringwise bit operators"builtin"โ allow the use of the functions in thebuiltin::namespace"const_attr"โ allow the:constattribute on subs"class"โ enables theclass,field, andmethodsyntax"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 withfor"isa"โ allow the use of theisainfix operator"keyword_all"โ enables thealloperator"keyword_any"โ enables theanyoperator"lexical_topic"โ allow the use of lexical$_viamy $_"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, andwhen"try"โ allow the use of"try"and"catch""win32_perlio"โ allows the use of the:win32IO 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
- The
- 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
newphash
- SEE ALSO
๐ filetest โ Perl pragma to control the filetest permission operators
- SYNOPSIS
- DESCRIPTION
- Consider this carefully
- The
accesssub-pragma - Limitation with regard to
_
๐ซถ if โ use a Perl module if a condition holds
- SYNOPSIS
- DESCRIPTION
use ifno 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
- Adding directories to
- 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::methodnext::canmaybe::next::method
- SEE ALSO
- The original Dylan paper
"/citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.19.3910&rep=rep1&type=pdf" in http:
- Python 2.3 MRO
- Class::C3
Class::C3
- The original Dylan paper
- 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
- defined, but FALSE,
- 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
- Method names in the
- 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
- Odd number of arguments for
- 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
- Compile related options,
- 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
- SIGNAL HANDLERS
- 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)"
- Utility functions
- 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
- How to
- OBJECT METHODS
is_alpha()is_qv()normal()numify()to_decimalto_dotted_decimaltuple()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
-wand$^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::registerwarnings::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 ๐ซถ
COPYRIGHT
๐ฆ 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_SYMLINKwill worksnonespeed(default)memory
$Archive::Tar::EXTRACT_BLOCK_SIZE$Archive::Tar::MAX_FILE_SIZE
FAQ โ๏ธ
- What's the minimum perl version required to run Archive::Tar?
- Isn't Archive::Tar slow?
- Isn't Archive::Tar heavier on memory than /bin/tar?
- Can you lazy-load data instead?
- How much memory will an X kb tar file need?
- What do you do with unsupported filetypes in an archive?
- I'm using WinZip, or some other non-POSIX client, and files are not being extracted properly!
- How do I extract only files that have property X from an archive?
- How do I access .tar.Z files?
- How do I handle Unicode strings?
CAVEATS โ ๏ธ
TODO
- Check if passed in handles are open for read/write
- Allow archives to be passed in as string
- Facilitate processing an opened filehandle of a compressed archive
SEE ALSO ๐
- The GNU tar specification
- The PAX format specification
AUTHOR ๐ซถ
ACKNOWLEDGEMENTS ๐
COPYRIGHT
๐ฆ Archive::Tar::File - a subclass for in-memory extracted file from Archive::Tar
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
COPYRIGHT AND LICENSE ๐
๐ฆ 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 ๐ซถ
COPYRIGHT AND LICENSE ๐
๐ฆ AutoSplit - split a package for autoloading
SYNOPSIS
DESCRIPTION โจ
$keep,$check,$modtime- Multiple packages
DIAGNOSTICS ๐ฉบ
AUTHOR ๐ซถ
COPYRIGHT AND LICENSE ๐
๐ฆ B - The Perl Compiler Backend
SYNOPSIS
DESCRIPTION โจ
OVERVIEW
Utility Functions ๐ ๏ธ
- Functions Returning
B::SV,B::AV,B::HV, andB::CVobjectssv_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::OPobjects or for walking op treesmain_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 โ
OP-RELATED CLASSES
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.plperl -MDigest::MD5=md5 -MO=Concise,md5 -e1perl -MPOSIX -MO=Concise,_POSIX_ARG_MAX -e1perl -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
newambient_pragmasโstrict,$[,bytes,utf8,integer,re,warnings,hint_bits,warning_bits,%^Hambient_pragmas_from_callercoderef2text
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::Shellautobundlehostsinstall_testedis_testedmkmyconfigr [Module|/Regexp/]...recent ***EXPERIMENTAL COMMAND***recompilereport Bundle|Distribution|Modulesmoke ***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 getcwdcwd,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::authorCPAN::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 allo 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 firewallftp firewallOne-way visibilitySOCKSIP 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 ๐ ๏ธ
newcreateload_fileload_yaml_stringload_json_stringload_stringsavemeta_spec_versioneffective_prereqsshould_index_fileshould_index_packagefeaturesfeatureas_structas_string
STRING DATA ๐ค
LIST DATA ๐
MAP DATA ๐บ๏ธ
CUSTOM DATA ๐จ
BUGS ๐
SEE ALSO ๐
SUPPORT ๐
Bugs / Feature Requests ๐
Source Code ๐ป
AUTHORS โ๏ธ
CONTRIBUTORS ๐ค
COPYRIGHT AND LICENSE ๐
CPAN::Meta::Converter - Convert CPAN distribution metadata structures ๐
VERSION ๐ข
SYNOPSIS ๐
DESCRIPTION ๐
METHODS ๐ ๏ธ
newconvertupgrade_fragment
BUGS ๐
AUTHORS โ๏ธ
COPYRIGHT AND LICENSE ๐
CPAN::Meta::Feature - an optional feature provided by a CPAN distribution โจ
VERSION ๐ข
DESCRIPTION ๐
METHODS ๐ ๏ธ
newidentifierdescriptionprereqs
BUGS ๐
AUTHORS โ๏ธ
COPYRIGHT AND LICENSE ๐
CPAN::Meta::History - history of CPAN Meta Spec changes ๐
VERSION ๐ข
DESCRIPTION ๐
HISTORY ๐ฐ๏ธ
- Version 2
- Version 1.4
- Version 1.3
- Version 1.2
- Version 1.1
- Version 1.0
AUTHORS โ๏ธ
COPYRIGHT AND LICENSE ๐
CPAN::Meta::History::Meta_1_0 - Version 1.0 metadata specification for META.yml ๐
PREFACE ๐
DESCRIPTION ๐
Format ๐
Fields ๐ท๏ธ
nameversionlicenseperlgpllgplartisticbsdopen_sourceunrestrictedrestrictivedistribution_typerequiresrecommendsbuild_requiresconflictsdynamic_configgenerated_by
Related Projects ๐
DOAP
History ๐ฐ๏ธ
CPAN::Meta::History::Meta_1_1 - Version 1.1 metadata specification for META.yml ๐
PREFACE ๐
DESCRIPTION ๐
Format ๐
Fields ๐ท๏ธ
nameversionlicenseperlgpllgplartisticbsdopen_sourceunrestrictedrestrictivelicense_uridistribution_typeprivaterequiresrecommendsbuild_requiresconflictsdynamic_configgenerated_by
Ingy's suggestions ๐ก
short_descriptiondescriptionmaturityauthor_idowner_idcategorizationkeywordchapter_idURL for further informationnamespaces
History ๐ฐ๏ธ
CPAN::Meta::History::Meta_1_2 - Version 1.2 metadata specification for META.yml ๐
PREFACE ๐
SYNOPSIS ๐
DESCRIPTION ๐
FORMAT ๐
TERMINOLOGY ๐
distributionmodule
VERSION SPECIFICATIONS ๐ข
HEADER ๐
FIELDS ๐ท๏ธ
meta-spec
name
version
abstract
author
license
perlgpllgplartisticbsdopen_sourceunrestrictedrestrictive
distribution_type
requires
recommends
build_requires
conflicts
dynamic_config
private
provides
no_index
keywords
resources
homepagelicensebugtracker
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 ๐
distributionmodule
HEADER ๐
FIELDS ๐ท๏ธ
meta-spec
name
version
abstract
author
license
apacheartisticbsdgpllgplmitmozillaopen_sourceperlrestrictiveunrestricted
distribution_type
requires
recommends
build_requires
conflicts
dynamic_config
private
provides
no_index
keywords
resources
homepagelicensebugtracker
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 ๐
distributionmodule
HEADER ๐
FIELDS ๐ท๏ธ
meta-spec
name
version
abstract
author
license
apacheartisticbsdgpllgplmitmozillaopen_sourceperlrestrictiveunrestricted
distribution_type
requires
recommends
build_requires
configure_requires
conflicts
dynamic_config
private
provides
no_index
keywords
resources
homepagelicensebugtracker
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 ๐ ๏ธ
newmerge(@fragments)
MERGE STRATEGIES ๐ง
identicalset_additionuniq_mapimprovise
AUTHORS โ๏ธ
COPYRIGHT AND LICENSE ๐
๐ 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
newrequirements_forphasestypes_inwith_merged_prereqsmerged_requirementsas_string_hashis_finalizedfinalizeclone
- 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
newadd_minimumadd_maximumadd_exclusionexact_versionversion_range_for_moduleadd_requirementsaccepts_moduleclear_requirementrequirements_for_modulestructured_requirements_for_modulerequired_modulescloneis_simpleis_finalizedfinalizeas_string_hashadd_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_rangewith_exact_versionwith_minimumwith_maximumwith_exclusionas_structas_stringacceptsis_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
- REQUIRED FIELDS
- VERSION NUMBERS
- Version Formats
- Decimal versions, Dotted-integer versions
- Version Ranges
- Version Formats
- PREREQUISITES
- Prereq Spec
configure, build, test, runtime, develop, requires, recommends, suggests, conflicts
- Merging and Resolving Prerequisites
- Prereq Spec
- 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
newis_validerrors- 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_mirrorbest_mirrorsget_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_requiresdistribution_objectdistributiondistribution_infobuild_diris_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')
- Scalar (
- Initializing with "new"
- The
- 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::memGzipCompress::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
โ๏ธ COPYRIGHT AND LICENSE
๐ธ 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
โ๏ธ COPYRIGHT
๐ 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:
SYNOPSISDESCRIPTIONSEE ALSOAUTHOR
๐ฆ DBM_Filter::utf8 โ a filter for DBM_Filter
same energy, same sections:
SYNOPSISDESCRIPTIONSEE ALSOAUTHOR
๐ฅ 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:
SYNOPSISDESCRIPTION, and under it:DB_HASH,DB_BTREE,DB_RECNO- Using
DB_Filewith 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:
- The
$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.
- DBM Filter Low-level API
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?
REFERENCESHISTORYBUGSSUPPORTAVAILABILITYCOPYRIGHTSEE ALSOAUTHOR
๐ Data::Dumper โ stringified perl data structures, suitable for both printing and eval
the icon that stringifies everything. inside:
SYNOPSISDESCRIPTION- Methods
PACKAGE->new(ARRAYREF [, ARRAYREF]),$OBJ->DumporPACKAGE->Dump(ARRAYREF [, ARRAYREF]),$OBJ->Seen([HASHREF]),$OBJ->Values([ARRAYREF]),$OBJ->Names([ARRAYREF]),$OBJ->Reset
- Functions
Dumper(LIST)
- Configuration Variables or Methods
- Exports
Dumper
- Methods
EXAMPLESBUGSNOTE
AUTHORVERSIONSEE ALSO
๐ Devel::PPPort โ Perl/Pollution/Portability
the XS bestie. here's its whole map:
SYNOPSIS- Start using
Devel::PPPortfor XS projects DESCRIPTION- Why use
ppport.h? - How to use
ppport.h - Running
ppport.h
- Why use
FUNCTIONSWriteFileGetFileContents
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
BUGSAUTHORSCOPYRIGHTSEE ALSO
โญ Devel::Peek โ A data debugging tool for the XS programmer
peek behind the curtain, bestie ๐:
SYNOPSISDESCRIPTION- 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
EXPORTSBUGSAUTHORSEE ALSO
๐ Devel::SelfStubber โ generate stubs for a SelfLoading module
short and sweet, it's giving minimal:
SYNOPSISDESCRIPTION
๐ง Digest โ Modules that calculate message digests
the parent class of all the hash-y besties:
SYNOPSISDESCRIPTIONbinary,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 ALSOAUTHOR
๐ธ Digest::MD5 โ Perl interface to the MD5 Algorithm
the classic. here's the layout:
SYNOPSISDESCRIPTIONFUNCTIONSmd5($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)
EXAMPLESSEE ALSOCOPYRIGHTAUTHORS
๐ฆ Digest::SHA โ Perl extension for SHA-1/224/256/384/512
so many algorithm flavors, obsessed:
SYNOPSISSYNOPSIS (HMAC-SHA)ABSTRACTDESCRIPTIONUNICODE AND SIDE EFFECTSNIST STATEMENT ON SHA-1PADDING OF BASE64 DIGESTSEXPORTEXPORTABLE 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 ALSOAUTHORACKNOWLEDGMENTSCOPYRIGHT AND LICENSE
๐ซถ Digest::base โ Digest base class
the foundation, the blueprint:
SYNOPSISDESCRIPTIONSEE ALSO
๐
Digest::file โ Calculate digests of files
yes, it digests whole files, slay:
SYNOPSISDESCRIPTION- 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 ๐
SYNOPSISDESCRIPTION
๐ Dumpvalue โ provides screen dump of Perl data.
so much config, honestly iconic:
SYNOPSISDESCRIPTION- Creation
- the whole knob list, exactly as listed (and yes,
quoteHighBitshows up twice โ keep it both times, no cap):
- the whole knob list, exactly as listed (and yes,
- Creation
"arrayDepth", "hashDepth", "compactDump", "veryCompact", "globPrint", "dumpDBFiles", "dumpPackages", "dumpReused", "tick", "quoteHighBit", "printUndef", "usageOnly", unctrl, subdump, bareStringify, quoteHighBit, stopDbSignal
- Methods
dumpValue,dumpValues,stringify,dumpvars,set_quote,set_unctrl,compactDump,veryCompact,set,get
๐ฆ DynaLoader โ Dynamically load C libraries into Perl code
loading C libs into Perl like it's nothing:
SYNOPSISDESCRIPTION- 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
- Table of Contents
DESCRIPTIONTERMINOLOGY
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
perlqqmode (CHECK =Encode::FB_PERLQQ), HTML charref mode (CHECK =Encode::FB_HTMLCREF), XML charref mode (CHECK =Encode::FB_XMLCREF)
- coderef for CHECK
- List of CHECK values
- 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 ๐
SYNOPSISDESCRIPTIONโ 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 ๐
SYNOPSISABSTRACTDESCRIPTIONSEE ALSO
๐ง Encode::CJKConstants -- Internally used by Encode::??::ISO_2022_*
internal plumbing, not your business fr ๐
๐ซถ Encode::CN โ China-based Chinese Encodings
SYNOPSISDESCRIPTIONNOTESBUGSSEE 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
SYNOPSISABSTRACTDESCRIPTIONSEE ALSO
๐ Encode::Encoder -- Object Oriented Encoder
ooh she's the fancy OO one, literally giving object-oriented ๐
SYNOPSISABSTRACT- Description
- Predefined Methods โ
$e = Encode::Encoder->new([$data, $encoding]);,encoder(),$e->data([$data]),$e->encoding([$encoding]),$e->bytes([$encoding]) - Example: base64 transcoder
- Operator Overloading
- Predefined Methods โ
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 ๐ง
SYNOPSISDESCRIPTION- 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
- Methods you should implement โ
- Why the heck Encode API is different?
- Compiled Encodings
SEE ALSO- Scheme 1, Scheme 2, Other Schemes
๐ Encode::GSM0338 -- ETSI GSM 03.38 Encoding
SYNOPSISDESCRIPTION- Septets
BUGSSEE 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" ๐ต๏ธโโ๏ธ
SYNOPSISABSTRACTDESCRIPTIONEncode::Guess->set_suspects,Encode::Guess->add_suspects,Encode::decode("Guess" ...),Encode::Guess->guess($data),guess_encoding($data, [, list of suspects])
CAVEATSTO DOSEE ALSO
๐ธ Encode::JP โ Japanese Encodings
SYNOPSISABSTRACTDESCRIPTION- Note on
ISO-2022-JP(-1)? BUGSSEE 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
SYNOPSISDESCRIPTIONBUGSSEE 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 ๐งโจ
SYNOPSISABSTRACTDESCRIPTIONBUGSAUTHORSSEE 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 encodingsEncode::Byte-- Extended ASCIIISO-8859and corresponding vendor mappings,KOI8- De Facto Standard for the Cyrillic world
gsm0338- Hentai Latin 1 ๐gsm0338support 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
- Encoding vs. Charset -- terminology
- Encoding Classification (by Anton Tagunov and Dan Kogai)
- Microsoft-related naming mess
KS_C_5601-1987,GB2312,Big5,Shift_JIS
- Microsoft-related naming mess
- 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
- ECMA,
๐ Encode::Symbol โ Symbol Encodings
SYNOPSISABSTRACTDESCRIPTIONSEE ALSO
๐ธ Encode::TW โ Taiwan-based Chinese Encodings
SYNOPSISDESCRIPTIONNOTESBUGSSEE ALSO
โจ Encode::Unicode -- Various Unicode Transformation Formats
SYNOPSISABSTRACT<http://www.unicode.org/glossary/> says:, Quick Reference
- 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
SYNOPSISABSTRACT- 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 ๐
โจ
SYNOPSISDESCRIPTIONPERFORMANCE
๐ซถ Env - perl module that imports environment variables as scalars or arrays
your env vars but as actual perl variables, so convenient fr ๐
SYNOPSISDESCRIPTIONLIMITATIONSAUTHOR
๐ Errno - System errno constants
SYNOPSISDESCRIPTIONCAVEATSAUTHORCOPYRIGHT
๐ Exporter - Implements default import method for modules
THEE exporter, the one, the only, the reason use Thing qw(stuff) even works ๐ periodt
SYNOPSISDESCRIPTION- 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_OKand Friends - Playing Safe
- What Not to Export
- Declaring
SEE ALSOLICENSE
๐ฆ Exporter::Heavy - Exporter guts
the lore behind the icon, the internal organs, if you will ๐
SYNOPSISDESCRIPTION
๐ฅ ExtUtils::CBuilder - Compile and link C code for Perl modules
C compilation but from perl, bestie's doing cross-language communication ๐ซถ
SYNOPSISDESCRIPTIONMETHODSnew, 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 DOHISTORYSUPPORTAUTHORCOPYRIGHTSEE ALSO
๐ ExtUtils::CBuilder::Platform::Windows - Builder class for Windows platforms
windows-specific flavour, she said "pc rights" ๐ชโจ
DESCRIPTIONAUTHORSEE 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 ๐
SYNOPSISDESCRIPTIONFUNCTIONS
cateqtimerm_rfrm_ftouchmvcpchmodmkpathtest_ftest_ddos2unixSEE ALSOAUTHOR
๐ ExtUtils::Command::MM - Commands for the MM's to use in Makefiles
SYNOPSISDESCRIPTIONtest_harness
pod2manwarn_if_old_packlistperllocal_installuninstalltest_scp_nonempty
โจ ExtUtils::Constant - generate XS code to import C header constants
generating XS to yoink constants out of C headers, gatekeeping who? not her ๐ง
SYNOPSISDESCRIPTIONUSAGEIV, UV, NV, PV, PVN, SV, YES, NO, UNDEF
FUNCTIONSconstant_typesXS_constant PACKAGE, TYPES, XS_SUBNAME, C_SUBNAMEautoload PACKAGE, VERSION, AUTOLOADERWriteMakefileSnippetWriteConstants ATTRIBUTE => VALUE [, ...], NAME, DEFAULT_TYPE, BREAKOUT_AT, NAMES, PROXYSUBS, C_FH, C_FILE, XS_FH, XS_FILE, XS_SUBNAME, C_SUBNAMEAUTHOR
๐ ExtUtils::Constant::Base - base class for ExtUtils::Constant objects
the base class, the mother, the blueprint ๐ธ
SYNOPSISDESCRIPTIONUSAGEheadermemEQ_clause args_hashrefdump_names arg_hashref, ITEM..assign arg_hashref, VALUE..return_clause arg_hashref, ITEMswitch_clause arg_hashref, NAMELEN, ITEMHASH, ITEM..params WHATdogfood 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, weightBUGSAUTHOR
๐ซถ ExtUtils::Constant::Utils - helper functions for ExtUtils::Constant
the little helpers, unsung heroes honestly ๐ญ
SYNOPSISDESCRIPTIONUSAGEC_stringify NAME
perl_stringify NAMEAUTHOR
๐ ExtUtils::Constant::XS - generate C code for XS modules' constants.
SYNOPSISDESCRIPTIONBUGSAUTHOR
๐ฅ ExtUtils::Embed - Utilities for embedding Perl in C/C++ applications
shoving perl inside your C/C++ app like a little matryoshka doll ๐ชโจ
SYNOPSISDESCRIPTION@EXPORTFUNCTIONSxsinit(), Examples, ldopts(), Examples, perl_inc(), ccflags(), ccdlflags(), ccopts(), xsi_header(), xsi_protos(@modules), xsi_body(@modules)
EXAMPLESSEE ALSOAUTHOR
๐ฆ ExtUtils::Install - install files from here to there
the mover and shaker, literally moving your files from here to there ๐
SYNOPSISVERSIONDESCRIPTION_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_cleanupinstall_rooted_file( $file )install_rooted_dir( $dir )forceunlink( $file, $tryhard )directory_not_empty( $dir )install_defaultuninstallinc_uninstall($filepath,$libdir,$verbose,$dry_run,$ignore,$results)run_filter($cmd,$src,$dest)pm_to_blib_autosplit_invokantENVIRONMENTPERL_INSTALL_ROOT,EU_INSTALL_IGNORE_SKIP,EU_INSTALL_SITE_SKIPFILE,EU_INSTALL_ALWAYS_COPY
AUTHORLICENSE
๐ ExtUtils::Installed - Inventory management of installed modules
keeping receipts on everything you've installed, she's organised fr ๐๏ธโจ
SYNOPSISDESCRIPTIONUSAGEMETHODSnew(), modules(), files(), directories(), directory_tree(), validate(), packlist(), version()
EXAMPLEAUTHOR
๐ธ 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 ๐
SYNOPSISDESCRIPTION- For static extensions, For dynamic extensions at build/link time, For dynamic extensions at load time
EXTRALIBSLDLOADLIBSandLD_RUN_PATHBSLOADLIBS
kay so that entry's tail end is literally just these last few bits:
PORTABILITYVMS implementationWin32 implementation
SEE ALSO
ExtUtils::MM โ OS adjusted ExtUtils::MakeMaker subclass
the vibes-adjuster for whatever OS you're on ๐ it's got:
SYNOPSISDESCRIPTION
ExtUtils::MM_AIX โ AIX specific subclass of ExtUtils::MM_Unix
AIX girlies, this one is for you โจ
SYNOPSISDESCRIPTIONOverridden methods
AUTHORSEE ALSO
ExtUtils::MM_Any โ Platform-agnostic MM methods
no cap, this one doesn't care what platform you're on ๐ฆ
SYNOPSISDESCRIPTIONMETHODSCross-platform helper methods
TargetsInit methodsToolsFile::Spec wrappersMiscAUTHOR
ExtUtils::MM_BeOS โ methods to override UN*X behaviour in ExtUtils::MakeMaker
SYNOPSISDESCRIPTIONos_flavorinit_linker
ExtUtils::MM_Cygwin โ methods to override UN*X behaviour in ExtUtils::MakeMaker
SYNOPSISDESCRIPTIONos_flavor
cflagsreplace_manpage_separatorinit_linkermaybe_commanddynamic_libinstall
ExtUtils::MM_DOS โ DOS specific subclass of ExtUtils::MM_Unix
SYNOPSISDESCRIPTIONOverridden methodsos_flavor
replace_manpage_separatorxs_static_lib_is_xsAUTHORSEE ALSO
ExtUtils::MM_Darwin โ special behaviors for OS X
SYNOPSISDESCRIPTIONOverridden Methods
ExtUtils::MM_MacOS โ once produced Makefiles for MacOS Classic
the "back in my day" module, lowkey iconic ๐
SYNOPSISDESCRIPTION
ExtUtils::MM_NW5 โ methods to override UN*X behaviour in ExtUtils::MakeMaker
SYNOPSISDESCRIPTIONos_flavorinit_platform,platform_constantsstatic_lib_pure_cmdxs_static_lib_is_xsdynamic_lib
ExtUtils::MM_OS2 โ methods to override UN*X behaviour in ExtUtils::MakeMaker
SYNOPSISDESCRIPTIONMETHODSinit_dist
init_linkeros_flavorxs_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 ๐)
SYNOPSISDESCRIPTIONOverriden methodsxs_make_dynamic_lib
AUTHORSEE ALSO
ExtUtils::MM_QNX โ QNX specific subclass of ExtUtils::MM_Unix
SYNOPSISDESCRIPTIONOverridden methods
AUTHORSEE ALSO
ExtUtils::MM_UWIN โ U/WIN specific subclass of ExtUtils::MM_Unix
SYNOPSISDESCRIPTIONOverridden methodsos_flavor
replace_manpage_separatorAUTHORSEE 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 ๐
SYNOPSISDESCRIPTIONMETHODSMethodsos_flavor
c_o (o)xs_obj_optdbgoutflagcflags (o)const_cccmd (o)const_config (o)const_loadlibs (o)constants (o)dep_constants (o)depend (o)init_DESTinit_distdist (o)dist_basics (o)dist_ci (o)dist_core (o)dist_targettardist_targetzipdist_targettarfile_targetzipfile_targetuutardist_targetshdist_targetdlsyms (o)dynamic_bs (o)dynamic_lib (o)xs_dynamic_lib_macrosxs_make_dynamic_libexescanextliblistfind_perlfixinforce (o)guess_namehas_link_codeinit_dirscaninit_MANPODSinit_MAN1PODSinit_MAN3PODSinit_PMinit_DIRFILESEPinit_maininit_toolsinit_linkerinit_lib2archinit_PERLinit_platform,platform_constantsinit_PERMinit_xsinstall (o)installbin (o)linkext (o)lsdirmacro (o)makeaperl (o)xs_static_lib_is_xs (o)makefile (o)maybe_commandneeds_linking (o)parse_abstractparse_versionpasthru (o)perl_scriptperldepend (o)pm_to_blibppdprefixifyprocessPL (o)specify_shellquote_parenreplace_manpage_separatorcdonelinerquote_literalescape_newlinesmax_exec_lenstatic (o)xs_make_static_libstatic_lib_closuresstatic_lib_fixturesstatic_lib_pure_cmdstaticmake (o)subdir_x (o)subdirs (o)test (o)test_via_harness (override)test_via_script (override)tool_xsubpp (o)all_targettop_targets (o)writedocxs_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 ๐
SYNOPSISDESCRIPTIONMethods always loadedwraplist
Methodsguess_name (override)
find_perl (override)_fixin_replace_shebang (override)maybe_command (override)pasthru (override)pm_to_blib (override)perl_script (override)replace_manpage_separatorinit_DESTinit_DIRFILESEPinit_main (override)init_tools (override)init_platform (override)platform_constantsinit_VERSION (override)constants (override)special_targetscflags (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_optdynamic_lib (override)xs_make_static_lib (override)static_lib_pure_cmd (override)xs_static_lib_is_xsextra_clean_fileszipfile_target,tarfile_target,shdist_targetinstall (override)perldepend (override)makeaperl (override)maketext_filter (override)prefixify (override)cdonelinerechoquote_literalescape_dollarsignsescape_all_dollarsignsescape_newlinesmax_exec_leninit_linkercatdir (override),catfile (override)eliminate_macrosfixpathos_flavoris_make_type (override)make_type (override)AUTHOR
ExtUtils::MM_VOS โ VOS specific subclass of ExtUtils::MM_Unix
SYNOPSISDESCRIPTIONOverridden methods
AUTHORSEE 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 ๐ซถ
SYNOPSISDESCRIPTIONOverridden methodsdlsyms
xs_dlsyms_extreplace_manpage_separatormaybe_commandinit_DIRFILESEPinit_toolsinit_othersinit_platform,platform_constantsspecify_shellconstantsdep_constantsspecial_targetsstatic_lib_pure_cmddynamic_libextra_clean_filesinit_linkerperl_scriptquote_depxs_obj_optpasthruarch_check (override)onelinercdmax_exec_lenos_flavordbgoutflagcflagsmake_type
ExtUtils::MM_Win95 โ method to customize MakeMaker for Win9X
singular "method", it's a whole one-method situation, minimalist queen ๐ง
SYNOPSISDESCRIPTIONOverridden methodsmax_exec_len
os_flavorAUTHOR
ExtUtils::MY โ ExtUtils::MakeMaker subclass for customization
SYNOPSISDESCRIPTION
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:
SYNOPSISDESCRIPTIONHow To Write A Makefile.PLDefault Makefile Behaviourmake testmake testdbmake installINSTALL_BASEPREFIX and LIB attributeAFS usersStatic Linking of a new Perl BinaryDetermination of Perl Library and Installation LocationsWhich architecture dependent directory?Using Attributes and ParametersABSTRACTABSTRACT_FROMAUTHORBINARY_LOCATIONBUILD_REQUIRESCCCFLAGSCONFIGCONFIGURECONFIGURE_REQUIRESDEFINEDESTDIRDIRDISTNAMEDISTVNAMEDLEXTDL_FUNCSDL_VARSEXCLUDE_EXTEXE_FILESFIRST_MAKEFILEFULLPERLFULLPERLRUNFULLPERLRUNINSTFUNCLISTHIMPORTSINCINCLUDE_EXTINSTALLARCHLIBINSTALLBININSTALLDIRSINSTALLMAN1DIRINSTALLMAN3DIRINSTALLPRIVLIBINSTALLSCRIPTINSTALLSITEARCHINSTALLSITEBININSTALLSITELIBINSTALLSITEMAN1DIRINSTALLSITEMAN3DIRINSTALLSITESCRIPTINSTALLVENDORARCHINSTALLVENDORBININSTALLVENDORLIBINSTALLVENDORMAN1DIRINSTALLVENDORMAN3DIRINSTALLVENDORSCRIPTINST_ARCHLIBINST_BININST_LIBINST_MAN1DIRINST_MAN3DIRINST_SCRIPTLDLDDLFLAGSLDFROMLIBLIBPERL_ALIBSLICENSELINKTYPEMAGICXSMAKEMAKEAPERLMAKEFILE_OLDMAN1PODSMAN3PODSMAP_TARGETMETA_ADDMETA_MERGEMIN_PERL_VERSIONMYEXTLIBNAMENEEDS_LINKINGNOECHONORECURSNO_METANO_MYMETANO_PACKLISTNO_PERLLOCALNO_VCOBJECTOPTIMIZEPERLPERL_COREPERLMAINCCPERL_ARCHLIBPERL_LIBPERL_MALLOC_OKPERLPREFIXPERLRUNPERLRUNINSTPERL_SRCPERM_DIRPERM_RWPERM_RWXPL_FILESPMPMLIBDIRSPM_FILTERPOLLUTEPPM_INSTALL_EXECPPM_INSTALL_SCRIPTPPM_UNINSTALL_EXECPPM_UNINSTALL_SCRIPTPREFIXPREREQ_FATALPREREQ_PMPREREQ_PRINTPRINT_PREREQSITEPREFIXSIGNSKIPTEST_REQUIRESTYPEMAPSVENDORPREFIXVERBINSTVERSIONVERSION_FROMVERSION_SYMXSXSBUILDXSMULTIXSOPTXSPROTOARGXS_VERSION
Additional lowercase attributescleandependdistdynamic_liblinkextmacropostamblerealcleantesttool_autosplit
Overriding MakeMaker MethodsThe End Of Cargo Cult Programming"MAN3PODS => ' '"
Hintsfile supportDistribution Supportmake distcheckmake skipcheckmake distcleanmake verycleanmake manifestmake distdirmake disttestmake tardistmake distmake uutardistmake shdistmake zipdistmake ci
Module Meta-Data (META and MYMETA)Disabling an extensionOther Handy Functionspromptos_unsupported
Supported versions of Perl
ENVIRONMENTPERL_MM_OPTPERL_MM_USE_DEFAULTPERL_CORE
SEE ALSOAUTHORSLICENSE
ExtUtils::MakeMaker::Config โ Wrapper around Config.pm
SYNOPSISDESCRIPTION
ExtUtils::MakeMaker::FAQ โ Frequently Asked Questions About MakeMaker
the "bestie I already googled this" section ๐
DESCRIPTIONModule InstallationHow 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::CookbookGenerating *.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
$VERSIONup to date without resetting it manually? - What's this
META.ymlthing and how did it get in myMANIFEST?! - 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.PLMANIFESTlib/t/ChangesREADMEINSTALLMANIFEST.SKIPbin/
SEE ALSO
ExtUtils::Manifest โ Utilities to write and check a MANIFEST file ๐
VERSION
SYNOPSIS
DESCRIPTION
FUNCTIONS
mkmanifestmanifindmanicheckfilecheckfullcheckskipcheckmanireadmaniskipmanicopymaniadd
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
COPYRIGHT AND LICENSE
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
DLBASEDL_FUNCSDL_VARSFILEFUNCLISTIMPORTSNAME
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
COPYRIGHT AND LICENSE
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()filenameC++hiertypeexcepttypemapprototypesversionchecklinenumbersoptimizeinoutargtypessdie_on_error$pxs->report_error_count()
AUTHOR
COPYRIGHT
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
newfileadd_typemapadd_inputmapadd_outputmapadd_stringremove_typemapremove_inputmapremove_outputmapget_typemapget_inputmapget_outputmapwriteas_stringas_embedded_typemapmergeis_emptylist_mapped_ctypes_get_typemap_hash_get_inputmap_hash_get_outputmap_hash_get_prototype_hashclonetidy_type
CAVEATS
SEE ALSO
AUTHOR
COPYRIGHT & LICENSE
ExtUtils::Typemaps::Cmd โ Quick commands for handling typemaps โก
SYNOPSIS
DESCRIPTION
EXPORTED FUNCTIONS
embeddable_typemap
SEE ALSO
AUTHOR
COPYRIGHT & LICENSE
ExtUtils::Typemaps::InputMap โ Entry in the INPUT section of a typemap ๐ฅ
SYNOPSIS
DESCRIPTION
METHODS
newcodexstypecleaned_code
SEE ALSO
AUTHOR
COPYRIGHT & LICENSE
ExtUtils::Typemaps::OutputMap โ Entry in the OUTPUT section of a typemap ๐ค
SYNOPSIS
DESCRIPTION
METHODS
newcodexstypecleaned_codetargetable_legacytargetable
SEE ALSO
AUTHOR
COPYRIGHT & LICENSE
ExtUtils::Typemaps::Type โ Entry in the TYPEMAP section of a typemap ๐ท๏ธ
SYNOPSIS
DESCRIPTION
METHODS
newprotoxstypectypetidy_ctype
SEE ALSO
AUTHOR
COPYRIGHT & LICENSE
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 %sis not a Perl subroutine%sis neither a builtin, nor a Perl subroutine- Cannot make the non-overridable
%sfatal - 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
copymovesyscopyrmscopy($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 ๐ฆ
$ff = File::Fetch->new( uri => 'http://some.where.com/dir/file.txt' );$where = $ff->fetch( [to => /my/output/dir/ | \$scalar] )$ff->error([BOOL])
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::diris the current directory name,,$_is the current filename within that directory,$File::Find::nameis 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) specifiedNo such file or directorycannot 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::Callimport()filter_add()filter()and anonymous sub$_,$status,filter_readandfilter_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
$Binor$Dir,$Script,$RealBinor$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_errnogdbm_check_syserr
DATABASE METHODS
The whole toolkit, bestie โ every method your handle fesses up to, in this exact order:
closeerrnosyserrnostrerrorclear_errorneeds_recoveryreorganizesynccountflagsdbnamecache_sizeblock_sizesync_modecentfreecoalescemmapmmapsizerecoverโ 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
convertdumpbinary => 1,mode => MODE,overwrite => 1
loadreplace => 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_statusfailure_atomiclatest_snapshotGDBM_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 suppliedGetOptions does not split the command line correctlyUndefined subroutine &main::GetOptions calledHow do I put a "-?" option into a Getopt::Long?
AUTHOR
COPYRIGHT AND DISCLAIMER
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
COPYRIGHT AND DISCLAIMER
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
newget|head|put|post|patch|deletepost_formmirrorrequestwww_form_urlencodecan_sslconnected
TLS/SSL SUPPORT
PROXY SUPPORT
LIMITATIONS
SEE ALSO
SUPPORT
- Bugs / Feature Requests
- Source Code
AUTHORS
CONTRIBUTORS
COPYRIGHT AND LICENSE
Hash::Util - A selection of general-utility hash subroutines
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
legal_keys, hidden_keys, all_keys, hash_seed, hash_value, bucket_info, bucket_stats, bucket_array
bucket_stats_formatted
hv_store, hash_traversal_mask, bucket_ratio, used_buckets, num_buckets
Operating on references to hashes
lock_ref_keys,unlock_ref_keys,lock_ref_keys_plus,lock_ref_value,unlock_ref_value,lock_hashref,unlock_hashref,lock_hashref_recurse,unlock_hashref_recurse,hash_ref_unlocked,legal_ref_keys,hidden_ref_keys
CAVEATS
BUGS
AUTHOR
SEE ALSO
Hash::Util::FieldHash - Support for Inside-Out Classes
Inside-out classes?? 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
COPYRIGHT AND LICENSE
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
COPYRIGHT
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
COPYRIGHT
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)
๐ COPYRIGHT AND DISCLAIMER ๐
(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_fooitems ๐
๐ EXPORT
๐ BUGS
๐ SEE ALSO
โ๏ธ AUTHOR
โ๏ธ COPYRIGHT AND LICENSE
๐ฆ IO โ load various IO modules ๐
๐ SYNOPSIS
๐ฌ DESCRIPTION
๐ DEPRECATED
๐๏ธ IO::Compress โ read/write compressed data in multiple formats โจ
๐ฌ DESCRIPTION
โ๏ธ AUTHOR
โ๏ธ COPYRIGHT
๐งฑ IO::Compress::Base โ Base Class for IO::Compress modules ๐ซถ
๐ SYNOPSIS
๐ฌ DESCRIPTION
๐ SUPPORT
๐ SEE ALSO
โ๏ธ AUTHOR
๐ MODIFICATION HISTORY
โ๏ธ COPYRIGHT AND LICENSE
๐ IO::Compress::Bzip2 โ Write bzip2 files/buffers ๐ฅ
๐ SYNOPSIS
๐ฌ DESCRIPTION
๐ ๏ธ Functional Interface
bzip2 $input_filename_or_reference => $output_filename_or_reference [, OPTS]
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
printprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])
๐ Importing
:all
๐ EXAMPLES
- Apache::GZip Revisited
- Working with Net::FTP
๐ SUPPORT
๐ SEE ALSO
โ๏ธ AUTHOR
๐ MODIFICATION HISTORY
โ๏ธ COPYRIGHT AND LICENSE
๐ IO::Compress::Deflate โ Write RFC 1950 files/buffers ๐
๐ SYNOPSIS
๐ฌ DESCRIPTION
๐ ๏ธ Functional Interface
deflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]
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
printprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])deflateParams
๐ Importing
:all:constants:flush:level:strategy
๐ EXAMPLES
- Apache::GZip Revisited
- Working with Net::FTP
๐ SUPPORT
๐ SEE ALSO
โ๏ธ AUTHOR
๐ MODIFICATION HISTORY
โ๏ธ COPYRIGHT AND LICENSE
โ IO::Compress::FAQ โ Frequently Asked Questions about IO::Compress ๐ฆ
๐ฌ 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::Unzipsupport?- Store (method 0)
- Deflate (method 8)
- Bzip2 (method 12)
- Lzma (method 14)
- Can I Read/Write Zip files larger the 4 Gig?
- Can I write more that 64K entries is a Zip files?
- Zip Resources
๐ GZIP
- Gzip Resources
- Dealing with concatenated gzip files
- Reading bgzip files with IO::Uncompress::Gunzip
๐ฌ๏ธ ZLIB
- Zlib Resources
๐ Bzip2
- Bzip2 Resources
- Dealing with Concatenated bzip2 files
- Interoperating with Pbzip2
๐ HTTP & NETWORK
- Apache::GZip Revisited
- Compressed files and Net::FTP
๐งฉ MISC
- Using
"InputLength"to uncompress data embedded in a larger file/buffer.
๐ SUPPORT
๐ SEE ALSO
โ๏ธ AUTHOR
๐ MODIFICATION HISTORY
โ๏ธ COPYRIGHT AND LICENSE
๐ซง IO::Compress::Gzip โ Write RFC 1952 files/buffers ๐
๐ SYNOPSIS
๐ฌ DESCRIPTION
๐ ๏ธ Functional Interface
gzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]
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
printprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])deflateParams
๐ Importing
:all:constants:flush:level:strategy
๐ EXAMPLES
- Apache::GZip Revisited
- Working with Net::FTP
๐ SUPPORT
๐ SEE ALSO
โ๏ธ AUTHOR
๐ MODIFICATION HISTORY
โ๏ธ COPYRIGHT AND LICENSE
๐ชถ IO::Compress::RawDeflate โ Write RFC 1951 files/buffers ๐
๐ SYNOPSIS
๐ฌ DESCRIPTION
๐ ๏ธ Functional Interface
rawdeflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]
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
printprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])deflateParams
๐ Importing
:all:constants:flush:level:strategy
๐ EXAMPLES
- Apache::GZip Revisited
- Working with Net::FTP
๐ SUPPORT
๐ SEE ALSO
โ๏ธ AUTHOR
๐ MODIFICATION HISTORY
โ๏ธ COPYRIGHT AND LICENSE
๐๏ธ IO::Compress::Zip โ Write zip files/buffers ๐
๐ 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
$inputparameter 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 ๐ซถ
printprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])deflateParams
๐ Importing ๐
the little tags you can yank in ๐
:all:constants:flush:level:strategy:zip_method
๐ฅ EXAMPLES ๐ฅ
Apache::GZip RevisitedWorking with Net::FTP
๐ SUPPORT ๐
๐ฆ SEE ALSO ๐ฆ
๐ธ AUTHOR ๐ธ
โญ MODIFICATION HISTORY โญ
๐ COPYRIGHT AND LICENSE ๐
(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 โจ
๐ซ COPYRIGHT ๐ซ
๐ฆ 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 ๐ธ
๐ซ COPYRIGHT ๐ซ
โญ 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 ๐ธ
๐ซ COPYRIGHT ๐ซ
๐ 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 )handlescan_read ( [ TIMEOUT ] )can_write ( [ TIMEOUT ] )has_exception ( [ TIMEOUT ] )count ()bits()select ( READ, WRITE, EXCEPTION [, TIMEOUT ] )
๐ฅ EXAMPLE ๐ฅ
๐ธ AUTHOR ๐ธ
๐ซ COPYRIGHT ๐ซ
๐ฆ IO::Socket โ Object interface to socket communications ๐ฆ
the big socket mama, everything networking starts here ngl
๐ SYNOPSIS ๐
๐ DESCRIPTION ๐
๐ CONSTRUCTOR ARGUMENTS ๐
BlockingDomainListenTimeoutType
๐ CONSTRUCTORS ๐
new
โจ METHODS โจ
acceptatmarkautoflushbindconnectedgetsockoptlistenpeernameprotocolrecvsendsetsockoptshutdownsockdomainsocketsocketpairsocknamesockoptsocktypetimeout
๐ฅ EXAMPLES ๐ฅ
๐ LIMITATIONS ๐
๐ฎ SEE ALSO ๐ฎ
๐ธ AUTHOR ๐ธ
๐ซ COPYRIGHT ๐ซ
๐ธ 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 ()
- โจ METHODS โจ
๐ฅ SEE ALSO ๐ฅ
๐ธ AUTHOR ๐ธ
๐ซ COPYRIGHT ๐ซ
๐ง 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 => NUMnew (one arg)
โจ METHODS โจ
sockhost_servicesockhostsockportsockhostnamesockservicesockaddrpeerhost_servicepeerhostpeerportpeerhostnamepeerservicepeeraddras_inet
๐ NON-BLOCKING ๐
๐ "PeerHost" AND "LocalHost" PARSING ๐
split_addrjoin_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 ๐ธ
๐ซ COPYRIGHT ๐ซ
๐ 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 โจ
readreadgetlinegetcungetcinflateSyncgetHeaderInfotelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
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 โญ
๐ COPYRIGHT AND LICENSE ๐
๐ง 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 โจ
readreadgetlinegetcungetcgetHeaderInfotelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
๐ Importing ๐
:all
๐ฅ EXAMPLES ๐ฅ
๐ SUPPORT ๐
๐ฎ SEE ALSO ๐ฎ
๐ธ AUTHOR ๐ธ
โญ MODIFICATION HISTORY โญ
๐ COPYRIGHT AND LICENSE ๐
๐ซถ 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 โญ
๐ COPYRIGHT AND LICENSE ๐
๐ 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 โจ
readreadgetlinegetcungetcgetHeaderInfotelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
๐ Importing ๐
:all
๐ฅ EXAMPLES ๐ฅ
Working with Net::FTP
๐ SUPPORT ๐
๐ฎ SEE ALSO ๐ฎ
๐ธ AUTHOR ๐ธ
โญ MODIFICATION HISTORY โญ
๐ COPYRIGHT AND LICENSE ๐
๐ 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 hereInputLength => $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 gzipFEXTRAheader 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 ๐
readread(yes bestie it's listed twice, that's just how it is)getlinegetcungetcinflateSyncgetHeaderInfoโ withName,Commenttelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
๐ Importing ๐
:all
๐ธ EXAMPLES ๐ธ
- Working with Net::FTP
SUPPORT
SEE ALSO
AUTHOR
MODIFICATION HISTORY
COPYRIGHT AND LICENSE
๐ฆ 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 ๐ซถ
readreadgetlinegetcungetcinflateSyncgetHeaderInfotelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
๐ Importing ๐
:all
โจ EXAMPLES โจ
- Working with Net::FTP
SUPPORT
SEE ALSO
AUTHOR
MODIFICATION HISTORY
COPYRIGHT AND LICENSE
๐ 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 โญ
readreadgetlinegetcungetcinflateSyncgetHeaderInfotelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
๐ Importing ๐
:all
๐ EXAMPLES ๐
- Working with Net::FTP
SUPPORT
SEE ALSO
AUTHOR
MODIFICATION HISTORY
COPYRIGHT AND LICENSE
๐ 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 ๐
readreadgetlinegetcungetcinflateSyncgetHeaderInfotelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
๐ฆ 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
COPYRIGHT AND LICENSE
๐ง IO::Zlib - IO:: style interface to Compress::Zlib
SYNOPSIS
DESCRIPTION
CONSTRUCTOR
new ( [ARGS] )
OBJECT METHODS
open ( FILENAME, MODE )openedclosegetcgetlinegetlinesprint ( ARGS... )read ( BUF, NBYTES, [OFFSET] )eofseek ( OFFSET, WHENCE )tellsetpos ( POS )getpos ( POS )
USING THE EXTERNAL GZIP
CLASS METHODS
has_Compress_Zlibgzip_externalgzip_usedgzip_read_opengzip_write_open
DIAGNOSTICS
These are the messages it'll throw at you, bestie:
IO::Zlib::getlines: must be called in list contextIO::Zlib::gzopen_external: mode '...' is illegalIO::Zlib::import: '...' is illegalIO::Zlib::import: ':gzip_external' requires an argumentIO::Zlib::import: 'gzip_read_open' requires an argumentIO::Zlib::import: 'gzip_read' '...' is illegalIO::Zlib::import: 'gzip_write_open' requires an argumentIO::Zlib::import: 'gzip_write_open' '...' is illegalIO::Zlib::import: no Compress::Zlib and no external gzipIO::Zlib::open: needs a filenameIO::Zlib::READ: NBYTES must be specifiedIO::Zlib::WRITE: too long LENGTH
SEE ALSO
HISTORY
COPYRIGHT
๐ฅ 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:
commandverbosebuffertimeoutsuccesserror messagefull_bufferout_buffererror_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
COPYRIGHT
๐ IPC::Msg - SysV Msg IPC object class
SYNOPSIS
DESCRIPTION
METHODS
new ( KEY , FLAGS )idrcv ( BUF, LEN [, TYPE [, FLAGS ]] )removeset ( STAT )set ( NAME => VALUE [, NAME => VALUE ...] )snd ( TYPE, MSG [, FLAGS ] )stat
SEE ALSO
AUTHORS
COPYRIGHT
๐ซถ 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 )getallgetncnt ( SEM )getpid ( SEM )getval ( SEM )getzcnt ( SEM )idop ( OPLIST )removeset ( STAT )set ( NAME => VALUE [, NAME => VALUE ...] )setall ( VALUES )setval ( N , VALUE )stat
SEE ALSO
AUTHORS
COPYRIGHT
๐ IPC::SharedMem - SysV Shared Memory IPC object class
SYNOPSIS
DESCRIPTION
METHODS
new ( KEY , SIZE , FLAGS )idread ( POS, SIZE )write ( STRING, POS, SIZE )removeis_removedstatattach ( [FLAG] )detachaddr
SEE ALSO
AUTHORS
COPYRIGHT
โญ 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
COPYRIGHT
๐ฆ Internals - Reserved special namespace for internals related functions
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_jsondecode_jsonJSON::PP::is_bool
OBJECT-ORIENTED INTERFACE
newasciilatin1utf8prettyindentspace_beforespace_afterrelaxed
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
canonicalallow_nonrefallow_unknownallow_blessedconvert_blessedallow_tagsboolean_valuescore_boolsfilter_json_objectfilter_json_single_key_objectshrinkmax_depthmax_sizeencodedecodedecode_prefix
๐ FLAGS FOR JSON::PP ONLY ๐
okay so THESE ones? only for JSON::PP, don't try them on anything else bestie ๐
allow_singlequoteallow_barekeyallow_bignumlooseescape_slashindent_lengthsort_by
โจ INCREMENTAL PARSING โจ
the "feed it a bit at a time" era, we love a streaming moment ๐ฆ
incr_parseincr_textincr_skipincr_reset
๐บ๏ธ MAPPING ๐บ๏ธ
JSON -> PERL
object,array,string,number,true,false,null,shell-stylecomments ("# 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:
"allow_tags"is enabled and the object has a"FREEZE"method,"convert_blessed"is enabled and the object has a"TO_JSON"method,"allow_bignum"is enabled and the object is a"Math::BigInt"or"Math::BigFloat","allow_blessed"is enabled,- 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 โญ
๐ COPYRIGHT AND LICENSE ๐
๐ง 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
head
tail
zip
mesh
๐ CONFIGURATION VARIABLES ๐
$RAND
๐ KNOWN BUGS ๐
RT #95409uniqnum()on oversized bignums
๐ธ SUGGESTED ADDITIONS ๐ธ
๐ SEE ALSO ๐
๐ COPYRIGHT ๐
๐ List::Util::XS - Indicate if List::Util was compiled with a C compiler ๐
SYNOPSIS
DESCRIPTION
SEE ALSO
COPYRIGHT
๐ Locale::Maketext - framework for localization ๐
SYNOPSIS
DESCRIPTION
QUICK OVERVIEW
METHODS
Construction Methods
The "maketext" Method
$lh->fail_withor$lh->fail_with(PARAM),$lh->failure_handler_auto,$lh->denylist(@list)<or>$lh->blacklist(@list),$lh->allowlist(@list)<or>$lh->whitelist(@list)
Utility Methods
$language->quant($number, $singular),$language->quant($number, $singular, $plural),$language->quant($number, $singular, $plural, $negative),$language->numf($number),$language->numerate($number, $singular, $plural, $negative),$language->sprintf($format, @items),$language->language_tag(),$language->encoding()
Language Handle Attributes and Internals
๐ฃ๏ธ LANGUAGE CLASS HIERARCHIES ๐ฃ๏ธ
๐ ENTRIES IN EACH LEXICON ๐
๐ฒ BRACKET NOTATION ๐ฒ
๐ BRACKET NOTATION SECURITY ๐
๐ค AUTO LEXICONS ๐ค
๐ READONLY LEXICONS ๐
๐ญ CONTROLLING LOOKUP FAILURE ๐ญ
๐ HOW TO USE MAKETEXT ๐
๐ SEE ALSO ๐
โ๏ธ COPYRIGHT AND DISCLAIMER โ๏ธ
โ๏ธ AUTHOR โ๏ธ
๐ Locale::Maketext::Cookbook - recipes for using Locale::Maketext ๐
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 ๐
๐ COPYRIGHT ๐
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 ๐
COPYRIGHT
SEE ALSO
๐ MIME::QuotedPrint - Encoding and decoding of quoted-printable strings ๐
SYNOPSIS
DESCRIPTION
encode_qp( $str),encode_qp( $str, $eol),encode_qp( $str, $eol, $binmode ),decode_qp( $str )
COPYRIGHT
SEE ALSO
๐ Math::BigFloat - arbitrary size floating point math package ๐
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 )andbround ( 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)
- all the API goodies:
- API version 2
CLASS->_1ex(N),CLASS->_nok(OBJ1, OBJ2),CLASS->_alen(OBJ)
- General Notes
- 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_distancegreat_circle_directiongreat_circle_bearinggreat_circle_destinationgreat_circle_midpointgreat_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"
- Difference between
- 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)oris_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()
- Public Methods
โจ 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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:
SMNTHELPMODESYSTSTATSTRUREIN
๐ฆ EXPORTS ๐ฆ
๐ KNOWN BUGS ๐
๐จ Reporting Bugs ๐จ
๐ SEE ALSO ๐
๐ซถ ACKNOWLEDGEMENTS ๐ซถ
โ๏ธ AUTHOR โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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_REACHCONFNYI$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_resultpingecho($host [, $timeout]);wakeonlan($mac, [$host, [$port]])
๐ NOTES ๐
๐ ๏ธ INSTALL ๐ ๏ธ
๐ BUGS ๐
โ๏ธ AUTHORS โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ง 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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 โ๏ธ
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
๐ 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
โ๏ธ Author and Copyright Information โ๏ธ
โ ๏ธ Disclaimer โ ๏ธ
๐ฅ Obtaining and installing libnet ๐ฅ
- What is libnet ?
- Which version of perl do I need ?
- What other modules do I need ?
- What machines support libnet ?
- Where can I get the latest libnet release
๐ Using Net::FTP ๐
- How do I download files from an FTP server ?
- How do I transfer files in binary mode ?
- How can I get the size of a file on a remote FTP server ?
- How can I get the modification time of a file on a remote FTP server ?
- How can I change the permissions of a file on a remote server ?
- Can I do a reget operation like the ftp command ?
- How do I get a directory listing from an FTP server ?
- Changing directory to "" does not fail ?
- I am behind a SOCKS firewall, but the Firewall option does not work ?
- I am behind an FTP proxy firewall, but cannot access machines outside ?
- My ftp proxy firewall does not listen on port 21
- Is it possible to change the file permissions of a file on an FTP server ?
- I have seen scripts call a method message, but cannot find it documented ?
- Why does Net::FTP not implement mput and mget methods
๐จ Using Net::SMTP ๐จ
- Why can't the part of an Email address after the @ be used as the hostname ?
- Why does Net::SMTP not do DNS MX lookups ?
- The verify method always returns true ?
๐ Debugging scripts ๐
- How can I debug my scripts that use Net::* modules ?
โ๏ธ AUTHOR AND COPYRIGHT โ๏ธ
๐ Net::netent โ by-name interface to Perl's built-in getnet*() functions ๐
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:
SYNOPSISDESCRIPTIONCONVENTIONSIMPLEMENTATIONBUGS๐AUTHOR
๐ธ ODBM_File โ Tied access to odbm files ๐ธ
tied-access realness for odbm files, bestie. here's the map:
SYNOPSISDESCRIPTION"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:
SYNOPSISDESCRIPTIONNOTEWARNINGโ ๏ธ- 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 ALSOAUTHORS
๐ 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:
SYNOPSISDESCRIPTIONCAVEATSโ ๏ธ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"
- Constants,
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:
SYNOPSISDESCRIPTION- 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๐AUTHORCOPYRIGHT
๐ 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:
VERSIONSYNOPSISDESCRIPTIONMETHODSload_fileload_yaml_stringload_json_stringload_stringyaml_backendjson_backendjson_decoder
FUNCTIONSLoadLoadFile
ENVIRONMENTCPAN_META_JSON_DECODERCPAN_META_JSON_BACKENDPERL_JSON_BACKENDPERL_YAML_BACKEND
AUTHORSCOPYRIGHT 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:
VERSIONSYNOPSISDESCRIPTIONUSAGEos_type()is_os_type()
SEE ALSOSUPPORT- Bugs / Feature Requests
- Source Code
AUTHORCONTRIBUTORSCOPYRIGHT 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:
SYNOPSISDESCRIPTION- 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
- Layers
AUTHORSEE ALSO
๐ PerlIO::encoding โ encoding layer ๐
it's the encoding layer, and that's the tea. ๐ซ
SYNOPSISDESCRIPTIONSEE ALSO
๐ PerlIO::mmap โ Memory mapped IO ๐
memory mapped IO, bestie. mm, mm. contents:
SYNOPSISDESCRIPTIONIMPLEMENTATION NOTE๐
๐ฆ PerlIO::scalar โ in-memory IO, scalar IO ๐ฆ
in-memory IO, scalar IO โ doing the most with a plain scalar. obsessed. contents:
SYNOPSISDESCRIPTIONIMPLEMENTATION 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:
SYNOPSISDESCRIPTIONEXPECTED 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:
SYNOPSISDESCRIPTIONEXPORTSKNOWN BUGS๐FEEDBACKSEE ALSOACKNOWLEDGEMENTS๐ซถAVAILABILITYINSTALLATIONAUTHORCOPYRIGHTLICENCEVERSIONDATEHISTORY
๐ 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:
SYNOPSISOPTIONS/ARGUMENTSpodchecker()-warnings => val,-quiet => val
DESCRIPTIONDIAGNOSTICS- Errors ๐
- empty
=headn =overon line N without closing=back- You forgot a
'=back'before'=headN' =overis the last thing in the document?!'=item'outside of any'=over'=backwithout=over- Can't have a 0 in
=over N =overshould be:'=over'or'=over positive_number'=begin TARGETwithout matching=end TARGET=beginwithout a target?=end TARGETwithout matching=begin'=end'without a target?'=end TARGET'is invalid=end CONTENTdoesn't match=begin TARGET=forwithout 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 =backdoesn't take any parameters, but you said=back ARGUMENT=poddirectives shouldn't be over one line long! Ignoring all N lines of content=cutfound outside a pod block- Invalid
=encodingsyntax: CONTENT
- empty
- Errors ๐
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)
- pod2html โ the whole option menu fr:
- 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
๐ Pod::ParseLink โ Parse an L<> formatting code in POD text ๐
- 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
- Call
Pod::Perldoc::GetOptsOO::getopts($object, \@ARGV, $truth) - Given
-n, if there's aopt_n_with, it'll call$object->opt_n_with( ARGUMENT )(e.g.,"-n foo"=>$object->opt_n_with('foo'). Ditto"-nfoo") - Otherwise (given
-n) if there's anopt_n, we'll call it$object->opt_n($truth)(Truth defaults to 1) - Otherwise we try calling
$object->handle_unknown_option('n')(and we increment the error count by the return value of it) - If there's no
handle_unknown_option, then we just warn, and then increment the error counter
- Call
- 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 Pearceyhdp@cpan.org, David E. Wheelerdwheeler@cpan.org, Karl Williamsonkhw@cpan.org, Gabor Szaboszabgab@gmail.com, Shawn H CoreySHCOREY 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 Pearceyhdp@cpan.org, David E. Wheelerdwheeler@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 Pearceyhdp@cpan.org, David E. Wheelerdwheeler@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 Pearceyhdp@cpan.org, David E. Wheelerdwheeler@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 Pearceyhdp@cpan.org, David E. Wheelerdwheeler@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 Pearceyhdp@cpan.org, David E. Wheelerdwheeler@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"
Pod::Simple::LinkSection โ represent "section" attributes of L codes โจ
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_titlemy $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_nameofDocument - events with an
element_nameofPara - events with an
element_nameofB,C,F,I, orU - events with an
element_nameofS - events with an
element_nameofX - events with an
element_nameofL - events with an
element_nameofEorZ - events with an
element_nameofVerbatim - events with an
element_nameofhead1..head4 - events with an
element_nameofencoding - events with an
element_nameofover-bullet - events with an
element_nameofover-number - events with an
element_nameofover-text - events with an
element_nameofover-block - events with an
element_nameofover-empty - events with an
element_nameofitem-bullet - events with an
element_nameofitem-number - events with an
element_nameofitem-text - events with an
element_nameoffor - events with an
element_nameofData
- 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_prefixperldoc_url_postfixman_url_prefixman_url_postfixtitle_prefix,title_postfixhtml_csshtml_javascripthtml_doctypehtml_charsethtml_header_tagshtml_h_leveldefault_titleforce_titlehtml_header,html_footerindexanchor_itemsbacklink
SUBCLASSING๐ฆ โ the hooks bestie, the ones you're allowed to reach in and poke:handle_texthandle_codeaccept_targets_as_htmlresolve_pod_page_linkresolve_man_page_linkidifybatch_mode_page_object_init
SEE ALSOSUPPORT๐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
SYNOPSISDESCRIPTIONSEE ALSOABOUT EXTENDING PODSEE ALSOโ yes it's in there twice, that's canon, don't @ meSUPPORTCOPYRIGHT AND DISCLAIMERSAUTHORAllison Randal "allison@perl.org",Hans Dieter Pearcey "hdp@cpan.org",David E. Wheeler "dwheeler@cpan.org"
๐ Pod::Text โ Convert POD data to formatted text
SYNOPSISDESCRIPTIONEncoding
CLASS METHODSnew(ARGS)altcodeencodingerrorsguessworkquotingindentloosemarginnourlsquotessentencestderrutf8width
INSTANCE METHODSoutput_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)
FUNCTIONSpod2text([[-a,] [-NNN,]] INPUT[, OUTPUT])
DIAGNOSTICS๐จBizarre space in itemItem called without tagCan't open %s for reading: %sInvalid errors setting "%s"Invalid quote specification "%s"POD document had syntax errors
COMPATIBILITYCAVEATSAUTHORCOPYRIGHT AND LICENSESEE ALSO
๐ Pod::Text::Color โ Convert POD data to formatted color ASCII text
SYNOPSISDESCRIPTIONCOMPATIBILITYCAVEATSAUTHORCOPYRIGHT AND LICENSESEE ALSO
โจ Pod::Text::Overstrike โ Convert POD data to formatted overstrike text
SYNOPSISDESCRIPTIONBUGSCOMPATIBILITYCAVEATSAUTHORCOPYRIGHT AND LICENSESEE ALSO
๐ฅ๏ธ Pod::Text::Termcap โ Convert POD data to ASCII text with format escapes
SYNOPSISDESCRIPTIONCOMPATIBILITYCAVEATSAUTHORCOPYRIGHT AND LICENSESEE ALSO
๐ซถ Pod::Usage โ extracts POD documentation and shows usage information
SYNOPSISARGUMENTS"-message" string"-msg" string"-exitval" value"-verbose" value"-sections" spec"-output" handle"-input" handle"-pathlist" string"-noperldoc""-perlcmd""-perldoc" path-to-perldoc"-perldocopt" stringFormatting base classPass-through options
DESCRIPTIONScripts
EXAMPLESRecommended Use
CAVEATSSUPPORTAUTHORLICENSEACKNOWLEDGMENTSSEE ALSO
๐๏ธ SDBM_File โ Tied access to sdbm files
SYNOPSISDESCRIPTIONTie
EXPORTSDIAGNOSTICS"sdbm store returned -1, errno 22, key "..." at ..."
SECURITY WARNINGโ ๏ธBUGS AND WARNINGS
๐ Safe โ Compile and execute code in restricted compartments
SYNOPSISDESCRIPTIONa new namespacean operator mask
WARNING๐จMETHODSpermit (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 (...)
RISKSMemoryCPUSnoopingSignalsState Changes
AUTHOR
๐ง Scalar::List::Utils โ A distribution of general-utility subroutines
SYNOPSISDESCRIPTIONMODULESList::UtilScalar::UtilSub::Util
๐ Scalar::Util โ A selection of general-utility scalar subroutines
SYNOPSISDESCRIPTIONCore Perl "builtin" Functions
FUNCTIONS FOR REFERENCESblessedrefaddrreftypeweakenunweakenisweak
OTHER FUNCTIONSdualvarisdualisvstringlooks_like_numberopenhandlereadonlyset_prototypetainted
DIAGNOSTICSVstrings are not implemented in this version of perl
KNOWN BUGSSEE ALSOCOPYRIGHT
๐ Search::Dict โ look - search for key in dictionary file
SYNOPSISDESCRIPTION
๐พ SelectSaver โ save and restore selected file handle
SYNOPSISDESCRIPTION
๐ง SelfLoader โ load functions only on demand
SYNOPSISDESCRIPTIONThe __DATA__ tokenSelfLoader autoloadingAutoloading and package lexicalsSelfLoader and AutoLoader__DATA__, __END__, and the FOOBAR::DATA filehandleClasses and inherited methods
Multiple packages and fully qualified subroutine namesAUTHORCOPYRIGHT AND LICENSEa)b)
๐ Socket, "Socket" โ networking constants and support functions
SYNOPSISDESCRIPTIONCONSTANTSPF_INET, PF_INET6, PF_UNIX, ...AF_INET, AF_INET6, AF_UNIX, ...SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, ...SOCK_NONBLOCK. SOCK_CLOEXECSOL_SOCKETSO_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_WRINADDR_ANY, INADDR_BROADCAST, INADDR_LOOPBACK, INADDR_NONEIPPROTO_IP, IPPROTO_IPV6, IPPROTO_TCP, ...TCP_CORK, TCP_KEEPALIVE, TCP_NODELAY, ...IN6ADDR_ANY, IN6ADDR_LOOPBACKIPV6_ADD_MEMBERSHIP, IPV6_MTU, IPV6_V6ONLY, ...STRUCTURE MANIPULATORSsockaddr_familypack_sockaddr_inunpack_sockaddr_insockaddr_inpack_sockaddr_in6unpack_sockaddr_in6sockaddr_in6pack_sockaddr_ununpack_sockaddr_unsockaddr_unpack_ip_mrequnpack_ip_mreqpack_ip_mreq_sourceunpack_ip_mreq_sourcepack_ipv6_mrequnpack_ipv6_mreq
FUNCTIONSinet_atoninet_ntoainet_ptoninet_ntopgetaddrinfoflags => INT, family => INT, socktype => INT, protocol => INTfamily => INT, socktype => INT, protocol => INTaddr => STRINGcanonname => STRINGAI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST
getnameinfoNI_NUMERICHOST, NI_NUMERICSERV, NI_NAMEREQD, NI_DGRAMNIx_NOHOST, NIx_NOSERV
getaddrinfo() / getnameinfo() ERROR CONSTANTSEAI_AGAIN, EAI_BADFLAGS, EAI_FAMILY, EAI_NODATA, EAI_NONAME, EAI_SERVICE
EXAMPLESLookup for connect()Making a human-readable string out of an addressResolving hostnames into IP addressesAccessing socket options
AUTHOR
๐ฆ Storable โ persistence for Perl data structures
SYNOPSISDESCRIPTIONMEMORY STOREADVISORY LOCKINGSPEEDCANONICAL REPRESENTATIONCODE REFERENCESFORWARD COMPATIBILITYutf8 datarestricted hasheshuge objectsfiles from future versions of Storable
ERROR REPORTINGWIZARDS 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"
RecursionDeep 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 )
EXAMPLESSECURITY WARNINGโ ๏ธWARNINGREGULAR EXPRESSIONSBUGS64 bit data in perl 5.6.0 and 5.6.1
CREDITSAUTHORSEE ALSO
๐ ๏ธ Sub::Util โ A selection of utility subroutines for subs and CODE references
SYNOPSISDESCRIPTIONFUNCTIONSprototypeset_prototypesubnameset_subnameAUTHOR
๐ฃ Symbol โ manipulate Perl symbols and their names
SYNOPSISDESCRIPTIONBUGS
๐ Sys::Hostname โ Try every conceivable way to get hostname
SYNOPSISDESCRIPTIONAUTHOR
๐ Sys::Syslog โ Perl interface to the UNIX syslog(3) calls
VERSIONSYNOPSISDESCRIPTIONEXPORTSFUNCTIONSopenlog($ident, $logopt, $facility)syslog($priority, $message)syslog($priority, $format, @args)Notesetlogmask($mask_priority)setlogsock()Notecloselog()
THE RULES OF SYS::SYSLOGEXAMPLESCONSTANTSFacilitiesLevels
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"
HISTORYSEE ALSOOther modulesManual PagesRFCsArticlesEvent Log
AUTHORS & ACKNOWLEDGEMENTSBUGSSUPPORTPerl DocumentationMetaCPANSearch CPANAnnoCPAN: Annotated CPAN documentationCPAN RatingsRT: CPAN's request tracker
COPYRIGHTLICENSE
๐งฑ TAP::Base โ Base class that provides common functionality to TAP::Parser and TAP::Harness
VERSIONSYNOPSISDESCRIPTIONMETHODSClass Methods
๐จ๏ธ TAP::Formatter::Base โ Base class for harness output delegates
VERSIONDESCRIPTIONSYNOPSISMETHODSClass 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
VERSIONDESCRIPTIONSYNOPSISMETHODSClass Methods
๐ฎ TAP::Formatter::Console โ Harness output delegate for default console output
VERSIONDESCRIPTIONSYNOPSIS"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.
VERSIONDESCRIPTIONSYNOPSISMETHODS- Class Methods
โจ TAP::Formatter::Console::Session โจ
Harness output delegate for default console output. yes, the default one, the main character of console output ngl.
VERSIONDESCRIPTION"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.
VERSIONDESCRIPTIONSYNOPSIS"open_test"
๐ธ TAP::Formatter::File::Session ๐ธ
Harness output delegate for file output โ yes again, but the session flavor.
VERSIONDESCRIPTIONMETHODS- 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.
VERSIONMETHODS- Class Methods
"formatter","parser","name","show_count"
- Class Methods
๐ฅ TAP::Harness ๐ฅ
Run test scripts with statistics. this is the big one, the icon, the legend of the whole family.
VERSIONDESCRIPTIONSYNOPSISMETHODS- 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
- Class 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.
VERSIONSYNOPSISDESCRIPTIONMETHODScreate( \%args )
๐ ENVIRONMENTAL VARIABLES ๐
"HARNESS_PERL_SWITCHES""HARNESS_VERBOSE""HARNESS_SUBCLASS""HARNESS_OPTIONS"j<n>ca<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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- Class Methods
- Instance Methods
๐ TAP::Parser ๐
Parse TAP output. the literal parser, the brains of the operation.
VERSIONSYNOPSISDESCRIPTIONMETHODS- Class Methods
"source","tap","exec","sources","callback","switches","test_args","spool","merge","grammar_class","result_factory_class","iterator_factory_class"
- Instance Methods
- Class Methods
๐ INDIVIDUAL RESULTS ๐
- Result types
- Version, Plan, Pragma, Test, Comment, Bailout, Unknown
- Common type methods
"plan"methods"pragma"methods"comment"methods"bailout"methods"unknown"methods"test"methods
TOTAL RESULTS
- Individual Results
Pragmas
Summary Results
"ignore_exit"
- Misplaced plan, No plan, More than one plan, Test numbers out of sequence
๐ CALLBACKS ๐
"test","version","plan","comment","bailout","yaml","unknown","ELSE","ALL","EOF"
TAP GRAMMAR
BACKWARDS COMPATIBILITY
- Differences
- TODO plans, 'Missing' tests
SUBCLASSING
- Parser Components
- option 1, option 2
โจ ACKNOWLEDGMENTS โจ
- Michael Schwern, Andy Lester, chromatic, GEOFFR, Shlomi Fish, Torsten Schoenfeld, Jerry Gay, Aristotle, Adam Kennedy, Yves Orton, Adrian Howard, Sean & Lil, Andreas J. Koenig, Florian Ragwitz, Corion, Mark Stosberg, Matt Kraai, David Wheeler, Alex Vandiver, Cosimo Streppone, Ville Skyttรค
AUTHORS
BUGS
COPYRIGHT & LICENSE
๐ TAP::Parser::Aggregator ๐
Aggregate TAP::Parser results โ it scoops up all your results and mushes them into one summary, slay.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- Class Methods
- Instance Methods
SUBCLASSING
- Example
SEE ALSO
๐ TAP::Parser::Iterator::Array ๐
Iterator for array-based TAP sources. arrays? it eats arrays. periodt.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONDESCRIPTIONOVERRIDDEN METHODS"as_string"
- Instance Methods
๐ TAP::Parser::Result::Comment ๐
Comment result token. the little side-notes of TAP, the whispers in the group chat.
VERSIONDESCRIPTIONOVERRIDDEN METHODS"as_string"
- Instance Methods
โจ TAP::Parser::Result::Plan โจ
Plan result token. the "here's how many tests we're running" announcement.
VERSIONDESCRIPTIONOVERRIDDEN METHODS"as_string","raw"
- Instance Methods
๐
TAP::Parser::Result::Pragma ๐
TAP pragma token.
VERSIONDESCRIPTIONOVERRIDDEN METHODS"as_string","raw"
- Instance Methods
๐ TAP::Parser::Result::Test ๐
Test result token. the actual test result itself, the star of the show ngl.
VERSIONDESCRIPTIONOVERRIDDEN 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.
VERSIONDESCRIPTIONOVERRIDDEN METHODS"as_string","raw"
๐ฆ TAP::Parser::Result::Version ๐ฆ
TAP syntax version token. it tells you which version of TAP we're vibing with.
VERSIONDESCRIPTIONOVERRIDDEN METHODS"as_string","raw"
- Instance Methods
๐ TAP::Parser::Result::YAML ๐
YAML result token.
VERSIONDESCRIPTIONOVERRIDDEN 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.
SYNOPSISVERSIONDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- Class Methods
SUBCLASSING
- Example
SEE ALSO
๐ TAP::Parser::SourceHandler::File ๐
Stream TAP from a text file. just a plain file chilling with TAP inside.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- Class Methods
SUBCLASSING
SEE ALSO
๐ TAP::Parser::SourceHandler::Perl ๐
Stream TAP from a Perl executable โ it's Perl running Perl, very meta, very iconic.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- 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.
VERSIONSYNOPSISDESCRIPTIONMETHODS- Class Methods
- Instance Methods
AUTHOR
SEE ALSO
COPYRIGHT
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.
COPYRIGHT
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 %sBad escape sequence %sBareword "%s" not allowed while "strict subs" in useCannot alias standard color %sCannot alias standard color %s in %sInvalid alias name %sInvalid alias name %s in %sInvalid attribute name %sInvalid attribute name %s in %sName "%s" used only once: possible typoNo comma allowed after filehandleNo name for escape sequence %s
ENVIRONMENT
the env vars that change the vibe:
ANSI_COLORS_ALIASESANSI_COLORS_DISABLEDNO_COLOR
COMPATIBILITY
RESTRICTIONS
NOTES
AUTHORS
COPYRIGHT AND LICENSE
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,TERMTpad,$string,$cnt,$FHTputs,$cap,$cnt,$FHTgoto,$cap,$col,$row,$FHTrequire
EXAMPLES
COPYRIGHT AND LICENSE
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 => $boolmax_width => $numpad => $numallow_overflow => $boolsanitize => $boolmark_tail => $boolshow_header => $boolauto_columns => $boolno_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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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_valueok(...)"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>
COPYRIGHT
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 => $intwrapped => $intstack => $stackhub => $hubon_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_disabledtest2_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_formattertest2_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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT ยฉ๏ธ
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>
COPYRIGHT ยฉ๏ธ
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 => $BOOLargs => \@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>
COPYRIGHT ยฉ๏ธ
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_failSTRING_OR_EMPTY_LIST = $event->brief$hashref = $event->flatten$hashref = $event->flatten(include_subevents => 1)always presentPresent if the event has a trace facetIf an assertion is presentIf a plan is present:If amnesty facets are presentIf Info (note/diag) facets are presentIf error facets are presentPresent if the event is a subtestIf 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->assertEMPTY_LIST_OR_STRING = $event->assert_brief
SUBTESTS (PARENT FACET) ๐ถ
$bool = $event->has_subtest$undef_or_hashref = $event->the_subtest@list_of_facets = $event->subtestEMPTY_LIST_OR_OBJECT = $event->subtest_result
CONTROL FACET (BAILOUT, ENCODING) ๐
$bool = $event->has_bailout$undef_hashref = $event->the_bailoutEMPTY_LIST_OR_HASHREF = $event->bailoutEMPTY_LIST_OR_STRING = $event->bailout_briefEMPTY_LIST_OR_STRING = $event->bailout_reason
PLAN FACET ๐
$bool = $event->has_plan$undef_or_hashref = $event->the_plan@list_if_hashrefs = $event->planEMPTY_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>
COPYRIGHT ยฉ๏ธ
Test2::API::InterceptResult::Hub - Hub used by InterceptResult.
SOURCE ๐
MAINTAINERS ๐
- Chad Granum <exodist@cpan.org>
AUTHORS ๐ซถ
- Chad Granum <exodist@cpan.org>
COPYRIGHT ยฉ๏ธ
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>
COPYRIGHT ยฉ๏ธ
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>
COPYRIGHT ยฉ๏ธ
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 => 1silent => 1no_plan => 1skip => "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>
COPYRIGHT ยฉ๏ธ
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>
COPYRIGHT ยฉ๏ธ
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>
COPYRIGHT ยฉ๏ธ
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 <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Bundle โ Documentation for bundles ๐ธ
DESCRIPTION
FAQ Should my bundle subclass Test2::Bundle?
HOW DO I WRITE A BUNDLE?
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
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 classicpass($name)โ slay, you passed ๐fail($name)โ rip, you didn't ๐ญdiag($message)โ the little note to your future selfnote($message)โ same vibe$todo = todo($reason)โ mark it todo ๐todo $reason => sub { ... }โ todo, but wrapped around a blockskip($reason, $count)โ not today bestieplan($count)โ set the planskip_all($reason)โ bail on the whole thingdone_testing()โ we're done here periodtbail_out($reason)โ emergency exit ๐จ
COMPARE
is($got, $want, $name)โ equal checkisnt($got, $do_not_want, $name)โ not-equal checklike($got, qr/match/, $name)โ regex matchunlike($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 matchend()โ end itetc()โ 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 checkref_is($got, $want)โ same refref_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 <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
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_okaccepts different arguments
THESE FUNCTIONS AND VARIABLES HAVE BEEN REMOVED
$TODOuse_ok()require_ok()todo_skip()eq_array()eq_hash()eq_set()explain()new_ok()
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Bundle::Simple โ ALMOST a drop-in replacement for Test::Simple ๐
DESCRIPTION
SYNOPSIS
PLUGINS
TOOLS
ok($bool, $name)plan($count)skip_all($reason)done_testing();
KEY DIFFERENCES FROM Test::Simple
- You cannot plan at import
- You have three subs imported for use in planning
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
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 buildpush_build($build)โ push the build onto the stack$build = pop_build($build)โ pop it offbuild($class, sub { ... })โ build something new$check = convert($thing)โ turn a thing into a check$check = convert($thing, $config)โ with config this timeimplicit_end => 1โ option flaguse_regex => 1โ option flaguse_code => 0โ option flag$check = strict_convert($thing)โ strict convertimplicit_end => 1โ option flaguse_code => 0โ option flaguse_regex => 0โ option flag$compare = relaxed_convert($thing)โ relaxed convertimplicit_end => 0โ option flaguse_code => 1โ option flaguse_regex => 1โ option flag
WRITING A VARIANT OF IS/LIKE
compare()\&convert$delta
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Array โ Internal representation of an array comparison. ๐
DESCRIPTION
METHODS
$ref = $arr->inref()$bool = $arr->ending$arr->set_ending($bool)$hashref = $arr->items()$arr->set_items($hashref)$arrayref = $arr->order()$arr->set_order($arrayref)$name = $arr->name()$bool = $arr->verify(got => $got, exists => $bool)$idx = $arr->top_index()$arr->add_item($item)$arr->add_item($idx => $item)$arr->add_filter(sub { ... })@deltas = $arr->deltas(got => $got, convert => \&convert, seen => \%seen)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Bag โ Internal representation of a bag comparison. ๐
DESCRIPTION
METHODS
$bool = $arr->ending$arr->set_ending($bool)$arrayref = $arr->items()$arr->set_items($arrayref)$name = $arr->name()$bool = $arr->verify(got => $got, exists => $bool)$arr->add_item($item)@deltas = $arr->deltas(got => $got, convert => \&convert, seen => \%seen)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
- Gianni Ceccarelli <dakkar@thenautilus.net>
AUTHORS
- Chad Granum <exodist@cpan.org>
- Gianni Ceccarelli <dakkar@thenautilus.net>
COPYRIGHT
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 <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Bool โ Compare two values as booleans โจ
DESCRIPTION
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Custom โ Custom field check for comparisons. ๐
DESCRIPTION
SYNOPSIS
ARGUMENTS
got$_existsoperatorname
METHODS
$code = $cus->code$name = $cus->name$op = $cus->operator$stringify = $cus->stringify_got$bool = $cus->verify(got => $got, exists => $bool)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
- Daniel Bรถhmer <dboehmer@cpan.org>
COPYRIGHT
Test2::Compare::DeepRef โ Ref comparison ๐ซถ
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Delta โ Representation of differences between nested data structures. ๐ญ
DESCRIPTION
METHODS
CLASS METHODS
$class->add_column($NAME => sub { ... })$class->add_column($NAME, %PARAMS)$bool = $class->remove_column($NAME)$class->set_column_alias($NAME, $ALIAS)
ATTRIBUTES
$bool = $delta->verified$delta->set_verified($bool)$aref = $delta->id$delta->set_id([$type, $name])$val = $delta->got$delta->set_got($val)$check = $delta->chk$check = $delta->check$delta->set_chk($check)$delta->set_check($check)$aref = $delta->children$delta->set_children([$delta1, $delta2, ...])$dne = $delta->dne$delta->set_dne($dne)$e = $delta->exception$delta->set_exception($e)
OTHER
$string = $delta->render_got$string = $delta->render_check$bool = $delta->should_show$aref = $delta->filter_visible$aref = $delta->table_header$string = $delta->table_op$string = $delta->table_check_lines$string = $delta->table_got_lines$aref = $delta->table_rows@table_lines = $delta->table
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Event โ Event specific Object subclass. ๐ธ
DESCRIPTION
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::EventMeta โ Meta class for events in deep comparisons ๐ง
DESCRIPTION
DEFINED CHECKS
filelinepackagesubnamedebugtidpid
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Float โ Compare two values as numbers with tolerance. โจ
DESCRIPTION
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
AUTHORS
Andrew Grangaard <spazm@cpan.org>
COPYRIGHT
(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>
COPYRIGHT
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>
COPYRIGHT
Test2::Compare::Meta โ Check library for meta-checks โจ
DESCRIPTION
DEFINED CHECKS
blessedreftypeisathissize
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Negatable โ Poor mans 'role' for compare objects that can be negated. ๐
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>
COPYRIGHT
Test2::Compare::Number โ Compare two values as numbers ๐ข
DESCRIPTION
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Object โ Representation of an object during deep comparison. ๐ฆ
DESCRIPTION
METHODS
$class = $obj->meta_class$class = $obj->object_base$obj->add_prop(...)$obj->add_field(...)$obj->add_item(...)$obj->add_call($method, $check)$obj->add_call($method, $check, $name)$obj->add_call($method, $check, $name, $context)
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::OrderedSubset โ Internal representation of an ordered subset. ๐ธ
DESCRIPTION
METHODS
$ref = $arr->inref()$arrayref = $arr->items()$arr->set_items($arrayref)$name = $arr->name()$bool = $arr->verify(got => $got, exists => $bool)$arr->add_item($item)@deltas = $arr->deltas(got => $got, convert => \&convert, seen => \%seen)
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Pattern โ Use a pattern to validate values in a deep comparison. ๐
DESCRIPTION
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Ref โ Ref comparison ๐ซถ
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Regex โ Regex direct comparison ๐ฅ
DESCRIPTION
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Scalar โ Representation of a Scalar Ref in deep comparisons ๐
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Set โ Allows a field to be matched against a set of checks. ๐
DESCRIPTION
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::String โ Compare two values as strings ๐ค
DESCRIPTION
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Undef โ Check that something is undefined ๐
DESCRIPTION
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Compare::Wildcard โ Placeholder check. โญ
DESCRIPTION
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Env โ Documentation for environment variables used or set by Test2. ๐
okay so this one is 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>
COPYRIGHT
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 => $BOOLabout => {...}assert => {...}control => {...}meta => {...}parent => {...}plan => {...}trace => {...}amnesty => [{...}, ...]errors => [{...}, ...]info => [{...}, ...]
- LEGACY API
$bool = $e->causes_fail$bool = $e->increments_count$e->callback($hub)$num = $e->nested$bool = $e->global$code = $e->terminate$msg = $e->summary($count, $directive, $reason) = $e->sets_plan()$bool = $e->diagnostics$bool = $e->no_display$id = $e->in_subtest$id = $e->subtest_id
THIRD PARTY META-DATA
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Event::Bail โ Bailout! ๐จ
DESCRIPTION
SYNOPSIS
METHODS
$reason = $e->reason
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Event::Diag โ Diag event type ๐ฌ
DESCRIPTION
SYNOPSIS
ACCESSORS
$diag->message
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Event::Encoding โ Set the encoding for the output stream ๐บ
DESCRIPTION
SYNOPSIS
METHODS
$encoding = $e->encoding
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Event::Exception โ Exception event ๐ญ
DESCRIPTION
SYNOPSIS
METHODS
$reason = $e->error
CAVEATS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Event::Fail โ Event for a simple failed assertion ๐
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
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>
COPYRIGHT
Test2::Event::Note โ Note event type ๐
DESCRIPTION
SYNOPSIS
ACCESSORS
$note->message
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Event::Ok โ Ok event type โ
DESCRIPTION
SYNOPSIS
ACCESSORS
$rb = $e->pass$name = $e->name$b = $e->effective_pass
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Event::Pass โ Event for a simple passing assertion ๐
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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_faildiagnosticsglobalincrements_countno_displaysets_plansubtest_idsummaryterminate
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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ธ 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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ง 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>
COPYRIGHT
๐ฅ 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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ฆ 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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ซ 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>
COPYRIGHT
โจ 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>
COPYRIGHT
๐ 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
DISCOURAGED HUB RELATED FIELDS
$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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ธ 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>
COPYRIGHT
๐ซถ Test2::Handle โ Base class for Test2 handles used in V# bundles.
DESCRIPTION
SYNOPSIS
RECOMMENDED
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>
COPYRIGHT
๐ 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>
COPYRIGHT
๐ฆ Test2::Hub::Interceptor - Hub used by interceptor to grab results.
๐ SOURCE
๐ง MAINTAINERS
- Chad Granum <exodist@cpan.org>
๐ AUTHORS
- Chad Granum <exodist@cpan.org>
๐ COPYRIGHT
๐ฆ Test2::Hub::Interceptor::Terminator - Exception class used by Test2::Hub::Interceptor
๐ SOURCE
๐ง MAINTAINERS
- Chad Granum <exodist@cpan.org>
๐ AUTHORS
- Chad Granum <exodist@cpan.org>
๐ COPYRIGHT
๐ธ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ฅ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ง 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ฆ 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>
๐ COPYRIGHT
๐ 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::Instanceis 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$^Eare 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$^Eare restored- The context is returned
โก WHAT HAPPENS WHEN I SEND AN EVENT?
- The
Test2::Event::Okmodule is loaded - A new instance of
Test2::Event::Okis 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$^Eare 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>
๐ COPYRIGHT
โก 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ก 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>
๐ COPYRIGHT
๐งฐ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ซถ 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>
๐ COPYRIGHT
โ๏ธ 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>
๐ COPYRIGHT
๐ฑ 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 = shiftprint "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 = shiftprint "A tool has requested the context\n"test2_add_callback_context_init(sub { ... })my $ctx_ref = shiftprint "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\%paramsbuffered => $boolinherit_trace => $boolno_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
- WHAT ARE TOOLS, PLUGINS, AND 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->endis 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 notTest2::Tool? - Should my tools subclass
Test2::Tools?
- Why is it called
- FAQ
- 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 => $RESULTcall $METHOD_NAME => $CHECKcall [$METHOD_NAME, @METHOD_ARGS] => $RESULTcall [$METHOD_NAME, @METHOD_ARGS] => $CHECKcall sub { ... }, $RESULTcall sub { ... }, $CHECKcall_list $METHOD_NAME => $RESULTcall_list $METHOD_NAME => $CHECKcall_list [$METHOD_NAME, @METHOD_ARGS] => $RESULTcall_list [$METHOD_NAME, @METHOD_ARGS] => $CHECKcall_list sub { ... }, $RESULTcall_list sub { ... }, $CHECKcall_hash $METHOD_NAME => $RESULTcall_hash $METHOD_NAME => $CHECKcall_hash [$METHOD_NAME, @METHOD_ARGS] => $RESULTcall_hash [$METHOD_NAME, @METHOD_ARGS] => $CHECKcall_hash sub { ... }, $RESULTcall_hash sub { ... }, $CHECKfield $NAME => $VALitem $VALitem $IDX, $VALprop $NAME => $VALprop $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>
๐ COPYRIGHT
๐ฆ 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>
๐ COPYRIGHT
โจ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ง 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>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ซถ 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
NAMEPARAMSflat => $boolasync => $booliso => $booltodo => $reasonskip => $reasonCODEREF
๐ธ 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>
๐ COPYRIGHT
๐ Test2::Tools::Subtest โ Tools for writing subtests ๐
DESCRIPTION
SYNOPSIS
๐ BUFFERED
๐ง STREAMED
๐จ IMPORTANT NOTE ๐จ
EXPORTS
subtest_streamed $name => $subsubtest_streamed($name, $sub, @args)subtest_streamed $name => \%params, $subsubtest_streamed($name, \%params, $sub, @args)subtest_buffered $name => $subsubtest_buffered($name, $sub, @args)subtest_buffered $name => \%params, $subsubtest_buffered($name, \%params, $sub, @args)
๐ฆ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
๐ธ AUTHORS
Chad Granum <exodist@cpan.org>
๐ COPYRIGHT
๐ฏ Test2::Tools::Target โ Alias the testing target package. ๐ฏ
DESCRIPTION
SYNOPSIS
๐ฆ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
๐ธ AUTHORS
Chad Granum <exodist@cpan.org>
๐ COPYRIGHT
๐ 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>
๐ COPYRIGHT
๐ฃ 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>
๐ COPYRIGHT
โ ๏ธ 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>
๐ COPYRIGHT
๐ฆ 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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
- INLINE AND MODIFICATION AUTHOR
COPYRIGHT
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>
COPYRIGHT
Test2::Util::Importer - Inline copy of Importer.
DESCRIPTION
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
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>
COPYRIGHT
Test2::Util::Trace - Legacy wrapper for Test2::EventFacet::Trace.
DESCRIPTION
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::V0 - 0Th edition of the Test2 recommended bundle.
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>
ยฉ๏ธ COPYRIGHT
๐ฆ Test2::V1 โ V1 edition of the Test2 recommended bundle.
๐ธ DESCRIPTION
Key differences from Test2::V0
- Only 1 export by default:
T2() - No pragmas by default
srandandutf8are not enabled by default- Easy to still import everything
- East to still enable pragmas
๐ท๏ธ NAMING, USING, DEPENDING
๐ SYNOPSIS
RECOMMENDED
WORK LIKE V0 DID
IMPORT ARGUMENT GUIDE
-Por-plugins-por-pragmas-ior-import-x-ipP-pPi-pP-Pix, etc.@EXPORT_LIST!EXPORT_NAMEEXPORT_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>
ยฉ๏ธ COPYRIGHT
๐ 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>
ยฉ๏ธ COPYRIGHT
๐ 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>
ยฉ๏ธ COPYRIGHT
๐ง 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>
ยฉ๏ธ COPYRIGHT
๐งฑ Test2::Workflow::BlockBase โ Base class for all workflow blocks.
๐ฆ SOURCE
๐ MAINTAINERS
- Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
- Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐๏ธ Test2::Workflow::Build โ Represents a build in progress.
๐ฆ SOURCE
๐ MAINTAINERS
- Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
- Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ Test2::Workflow::Runner โ Runs the workflows.
๐ฆ SOURCE
๐ MAINTAINERS
- Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
- Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐๏ธ Test2::Workflow::Task โ Encapsulation of a Task
๐ฆ SOURCE
๐ MAINTAINERS
- Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
- Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
โก Test2::Workflow::Task::Action โ Encapsulation of an action.
๐ฆ SOURCE
๐ MAINTAINERS
- Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
- Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ซ Test2::Workflow::Task::Group โ Encapsulation of a group (describe).
๐ฆ SOURCE
๐ MAINTAINERS
- Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
- Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ง 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>
ยฉ๏ธ COPYRIGHT
๐๏ธ 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>
ยฉ๏ธ COPYRIGHT
๐ฆ 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>
ยฉ๏ธ COPYRIGHT
๐ช 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
โ๏ธ LICENCE AND COPYRIGHT
๐ 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:
HISTORYSEE ALSOALTERNATIVESADDITIONAL LIBRARIESOTHER COMPONENTSBUNDLES
ENVIRONMENT VARIABLESAUTHORSMAINTAINERSChad Granum <exodist@cpan.org>
BUGSSOURCECOPYRIGHT
<h2>๐ Test::Simple โ Basic utilities for writing tests. ๐</h2>
Section lineup, in order, no notes:
SYNOPSISDESCRIPTIONok
EXAMPLECAVEATSNOTESHISTORYSEE ALSOTest::More
AUTHORSMAINTAINERSChad Granum <exodist@cpan.org>
COPYRIGHT
<h2>๐ Test::Tester โ Ease testing test modules built with Test::Builder ๐</h2>
SYNOPSISDESCRIPTIONHOW TO USE (THE EASY WAY)HOW TO USE (THE HARD WAY)TEST RESULTSok,actual_ok,name,type,reason,diag,depth
SPACES AND TABSCOLOUR<span>โจ</span> (yes babe, with a U, that's the whole point)EXPORTED FUNCTIONSHOW IT WORKSCAVEATSSEE ALSOAUTHORLICENSE
<h2>๐ฆ Test::Tester::Capture โ Help testing test modules built with Test::Builder ๐ฆ</h2>
DESCRIPTIONAUTHORLICENSE
<h2>๐ธ Test::Tester::CaptureRunner โ Help testing test modules built with Test::Builder ๐ธ</h2>
DESCRIPTIONAUTHORLICENSE
<h2>๐ Test::Tutorial โ A tutorial about writing really basic tests ๐ </h2>
DESCRIPTIONNuts and bolts of testing.Where to start?NamesTest the manualSometimes the tests are wrongTesting lots of valuesInformative namesSkipping testsTodo testsTesting with taint mode.
FOOTNOTESAUTHORSMAINTAINERSChad Granum <exodist@cpan.org>
COPYRIGHT
<h2>โจ Test::use::ok โ Alternative to Test::More::use_ok โจ</h2>
SYNOPSISDESCRIPTIONSEE ALSOMAINTAINERChad Granum <exodist@cpan.org>
CC0 1.0 Universal
<h2>๐ Text::Abbrev โ abbrev - create an abbreviation table from a list ๐</h2>
SYNOPSISDESCRIPTIONEXAMPLE
<h2>๐ง Text::Balanced โ Extract delimited text sequences from strings. ๐ง</h2>
SYNOPSISDESCRIPTIONGeneral Behaviour in List Contexts[0],[1],[2]
General Behaviour in Scalar and Void ContextsA Note About PrefixesFunctions"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"
DIAGNOSTICSDid 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 dereferencerBad identifier after dereferencerDid not find expected opening bracket at %sImproperly nested codeblock at %sMissing second block for quotelike "%s"No match found for opening bracketDid not find opening tag: /%s/Unable to construct closing tag to match: /%s/Found invalid nested tag: %sFound unbalanced nested tag: %sDid not find closing tag
EXPORTSDefault Exports,Optional Exports,Export Tags,":ALL"
KNOWN BUGSFEEDBACKAVAILABILITYINSTALLATIONAUTHORCOPYRIGHTLICENCEVERSIONDATEHISTORY
<h2>๐ Text::ParseWords โ parse text into an array of tokens or array of arrays ๐</h2>
SYNOPSISDESCRIPTIONtrue,false,"delimiters"
EXAMPLES0,1,2,3,4,5
SEE ALSOAUTHORSCOPYRIGHT AND LICENSE
<h2>โญ Text::Tabs โ expand and unexpand tabs like unix expand(1) and unexpand(1) โญ</h2>
SYNOPSISDESCRIPTIONEXPORTSexpand,unexpand,$tabstop
EXAMPLEBUGSLICENSE
<h2>๐ Text::Wrap โ line wrapping to form simple paragraphs ๐</h2>
SYNOPSISDESCRIPTIONOVERRIDESEXAMPLESSEE ALSOAUTHORLICENSE
<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. ๐
DEPRECATEDHISTORYSYNOPSISDESCRIPTIONFUNCTIONS$thread = Thread->new(\&start_sub)$thread = Thread->new(\&start_sub, LIST)lock VARIABLEasync BLOCK;Thread->selfThread->listcond_wait VARIABLEcond_signal VARIABLEcond_broadcast VARIABLEyield
METHODSjoin,detach,equal,tid,done
DEFUNCTlock(\&sub),eval,flags
SEE ALSO
<h2>๐ Thread::Queue โ Thread-safe queues ๐</h2>
VERSIONSYNOPSISDESCRIPTIONOrdinary 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)
NOTESLIMITATIONSSEE ALSOMAINTAINERLICENSE
<h2>๐ซถ Thread::Semaphore โ Thread-safe semaphores ๐ซถ</h2>
VERSIONSYNOPSISDESCRIPTIONMETHODS->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)
NOTESSEE ALSOMAINTAINERLICENSE
<h2>๐ Tie::Array โ base class for tied arrays ๐</h2>
SYNOPSISDESCRIPTIONTIEARRAY 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
CAVEATSAUTHOR
<h2>๐ Tie::File โ Access the lines of a disk file via a Perl array ๐ </h2>
SYNOPSISDESCRIPTION"unicode""recsep""autochomp""mode""memory""dw_size"Option Format
Public Methods"flock""autochomp""defer","flush","discard", and"autodefer""offset"
Tying to an already-opened filehandleDeferred WritingAutodeferring
CONCURRENT ACCESS TO FILESCAVEATSSUBCLASSINGWHAT ABOUT "DB_File"?AUTHORLICENSEWARRANTYTHANKSTODO
<h2>๐ธ Tie::Handle โ base class definitions for tied handles ๐ธ</h2>
SYNOPSISDESCRIPTIONTIEHANDLE 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 INFORMATIONCOMPATIBILITY
<h2>๐ฆ Tie::Hash, Tie::StdHash, Tie::ExtraHash โ base class definitions for tied hashes ๐ฆ</h2>
SYNOPSISDESCRIPTIONTIEHASH 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::StdHashInheriting from Tie::ExtraHash"SCALAR", "UNTIE" and "DESTROY"MORE INFORMATION
<h2>โจ Tie::Hash::NamedCapture โ Named regexp capture buffers โจ</h2>
SYNOPSISDESCRIPTIONSEE ALSO
<h2>๐ Tie::Memoize โ add data to hash when needed ๐</h2>
SYNOPSISDESCRIPTIONInheriting from Tie::MemoizeEXAMPLEBUGSAUTHOR
<h2>๐ง Tie::RefHash โ Use references as hash keys ๐ง</h2>
VERSIONSYNOPSISDESCRIPTIONEXAMPLETHREAD SUPPORTSTORABLE SUPPORTSEE ALSOSUPPORTAUTHORSCONTRIBUTORSCOPYRIGHT AND LICENCE
<h2>๐ Tie::Scalar, Tie::StdScalar โ base class definitions for tied scalars ๐</h2>
SYNOPSISDESCRIPTIONTIESCALAR classname, LIST,FETCH this,STORE this, value,DESTROY thisTie::Scalar vs Tie::StdScalar
MORE INFORMATION
<h2>๐ Tie::StdHandle โ base class definitions for tied handles ๐</h2>
SYNOPSISDESCRIPTION
<h2>โญ Tie::SubstrHash โ Fixed-table-size, fixed-key-length hashing โญ</h2>
SYNOPSISDESCRIPTIONCAVEATS
<h2>๐ Time::HiRes โ High resolution alarm, sleep, gettimeofday, interval timers ๐</h2>
SYNOPSISDESCRIPTIONgettimeofday (),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
EXAMPLESC APIDIAGNOSTICSuseconds or interval more than ...negative time not invented yetinternal error: useconds < 0 (unsigned ... signed ...)useconds or uinterval equal to or more than 1000000unimplemented in this platform
CAVEATSSEE ALSOAUTHORSCOPYRIGHT AND LICENSE
<h2>๐ Time::Local โ Efficiently compute time from local and GMT time ๐</h2>
VERSIONSYNOPSISDESCRIPTIONFUNCTIONStimelocal_posix() and timegm_posix()timelocal_modern() and timegm_modern()timelocal() and timegm()timelocal_nocheck() and timegm_nocheck()Year Value InterpretationLimits of time_tAmbiguous Local Times (DST)Non-Existent Local Times (DST)Negative Epoch Values
IMPLEMENTATIONAUTHORS EMERITUSBUGSSOURCEAUTHORCONTRIBUTORSCOPYRIGHT AND LICENSE
<h2>๐ซถ Time::Piece โ Object Oriented time objects ๐ซถ</h2>
SYNOPSISDESCRIPTIONPublic MethodsTime ComponentsDate ComponentsDay and Month NamesFormatted Date/Time OutputEpoch and Calendar CalculationsTimezone and DST0for GMT/UTC times (they never have DST),0or1for local times depending on whether DST is active, Automatically calculated if unknown
Utility MethodsGlobal ConfigurationParsing
๐ซ 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+ 86400gives different results than"+ 86400"thenadd_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 (
+0500means "5 hours ahead of UTC") ๐ - Valid range:
-1200to+1400with minutes less than60โฐ - 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 ๐
๐ COPYRIGHT AND LICENSE ๐
๐ 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 โจ
โจ COPYRIGHT AND LICENSE โจ
โจ 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_Versionalternatebackwardsentryhangul_terminatorhighestFFFFidenticalignoreCharignoreNameignore_level2katakana_before_hiraganalevellong_contractionminimalFFFEnormalizationoverrideCJKoverrideHanguloverrideOutpreprocessrearrangerewritesuppresstableundefCharundefNameupper_before_lowervariable
๐ Methods for Collation ๐
"@sorted = $Collator->sort(@not_sorted)""$result = $Collator->cmp($a, $b)""$result = $Collator->eq($a, $b)""$result = $Collator->ne($a, $b)""$result = $Collator->lt($a, $b)""$result = $Collator->le($a, $b)""$result = $Collator->gt($a, $b)""$result = $Collator->ge($a, $b)""$sortKey = $Collator->getSortKey($string)""$sortKeyForm = $Collator->viewSortKey($string)"
๐ Methods for Searching ๐
"$position = $Collator->index($string, $substring[, $position])""($position, $length) = $Collator->index($string, $substring[, $position])""$match_ref = $Collator->match($string, $substring)""($match) = $Collator->match($string, $substring)""@match = $Collator->gmatch($string, $substring)""$count = $Collator->subst($string, $substring, $replacement)""$count = $Collator->gsubst($string, $substring, $replacement)"
๐ Other Methods ๐
"%old_tailoring = $Collator->change(%new_tailoring)""$modified_collator = $Collator->change(%new_tailoring)""$version = $Collator->version()"UCA_Version()Base_Unicode_Version()
โจ EXPORT โจ
โจ INSTALL โจ
โจ CAVEATS โจ
๐ Normalization, Conformance Test ๐
โจ AUTHOR, COPYRIGHT AND LICENSE โจ
โจ SEE ALSO โจ
- Unicode Collation Algorithm - UTS #10
- The Default Unicode Collation Element Table (DUCET)
- The conformance test for the UCA
- Hangul Syllable Type
- Unicode Normalization Forms - UAX #15
- Unicode Locale Data Markup Language (LDML) - UTS #35
๐ฆ Unicode::Collate::CJK::Big5 โ weighting CJK Unified Ideographs for Unicode::Collate ๐ฆ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ SEE ALSO โจ
- CLDR - Unicode Common Locale Data Repository
- Unicode Locale Data Markup Language (LDML) - UTS #35
Unicode::CollateUnicode::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::CollateUnicode::Collate::Locale
๐ฆ Unicode::Collate::CJK::JISX0208 โ weighting JIS KANJI for Unicode::Collate ๐ฆ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ SEE ALSO โจ
Unicode::CollateUnicode::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::CollateUnicode::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::CollateUnicode::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::CollateUnicode::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::CollateUnicode::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::CollateUnicode::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 โจ
<http://www.unicode.org/reports/tr15/><http://www.unicode.org/Public/UNIDATA/CompositionExclusions.txt><http://www.unicode.org/Public/UNIDATA/DerivedNormalizationProps.txt><http://www.unicode.org/Public/UNIDATA/NormalizationCorrections.txt><http://www.unicode.org/review/pr-29.html><http://www.unicode.org/notes/tn5/>
๐ฆ Unicode::UCD โ Unicode character database ๐ฆ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
๐ code point argument ๐
โจ charinfo() โจ
The keys it hands you:
codenamecategorycombiningbididecompositiondecimaldigitnumericmirroredunicode10commentupperlowertitleblockscript
โจ charprop() โจ
The keys:
BlockDecomposition_MappingName_AliasNumeric_ValueScript_Extensions
โจ charprops_all() โจ
โจ charblock() โจ
โจ charscript() โจ
โจ charblocks() โจ
โจ charscripts() โจ
โจ charinrange() โจ
โจ general_categories() โจ
โจ bidi_types() โจ
โจ compexcl() โจ
โจ casefold() โจ
The items:
codefullsimplemappingstatus- If you use this
"I"mapping, - If you exclude this
"I"mapping, turkic
โจ all_casefolds() โจ
โจ casespec() โจ
The items:
codelowertitleuppercondition
โจ 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 ScriptsMatching Scripts and BlocksOld-style versus new-style block namesUse 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:
SYNOPSISDESCRIPTIONNOTEAUTHOR
Short, sweet, and honestly a whole vibe. ๐
๐ธ User::pwent โ by-name interface to Perl's built-in getpw*() functions
Inside this one you get:
SYNOPSISDESCRIPTIONSystem Specifics
NOTEAUTHORHISTORYMarch 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:
VERSIONSYNOPSISDESCRIPTIONMigration from "DynaLoader"Backward compatible boilerplateOrder 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"
LIMITATIONSKNOWN BUGSBUGSSEE ALSOAUTHORSCOPYRIGHT & 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:
h2phh2xsperlbugpl2pmpod2htmlpod2mansplainxsubpp
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