PERLTOC(1)
โจ NAME โจ
perltoc โ perl documentation table of contents ๐
(straight outta the Perl Programmers Reference Guide, bestie ๐)
๐ DESCRIPTION ๐
okay so picture this: this page is literally a table of contents for the entire rest of the Perl documentation set. that's it. that's the whole job. ๐
it's built to be scanned fast or grepped through so you can locate the exact section you're looking for instead of doom-scrolling through 400 pages of POD. it's giving search-engine-for-the-docs energy. no cap. ๐ฅ
๐ BASIC DOCUMENTATION ๐
๐ช perl โ The Perl 5 language interpreter
SYNOPSIS
GETTING HELP
- Overview
- Tutorials
- Reference Manual
- Internals and C Language Interface
- History
- Miscellaneous
- Language-Specific
- Platform-Specific
- Stubs for Deleted Documents
DESCRIPTION
AVAILABILITY
ENVIRONMENT
AUTHOR
FILES
SEE ALSO
DIAGNOSTICS
BUGS
NOTES
๐ธ perlintro โ a brief introduction and overview of Perl
DESCRIPTION
- What is Perl?
- Running Perl programs
- Safety net
- Basic syntax overview
- Perl variable types
- Scalars, Arrays, Hashes
- Variable scoping
- Conditional and looping constructs
if,while,for,foreach
- Builtin operators and functions
- Arithmetic, Numeric comparison, String comparison, Boolean logic, Miscellaneous
- Files and I/O
- Regular expressions
- Simple matching, Simple substitution, More complex regular expressions, Parentheses for capturing, Other regexp features
- Writing subroutines
- OO Perl
- Using Perl modules
AUTHOR
โ๏ธ perlrun โ how to execute the Perl interpreter
SYNOPSIS
DESCRIPTION
#!and quoting on non-Unix systems- OS/2, MS-DOS, Win95/NT, VMS
- Location of Perl
- Command Switches
-0[octal/hexadecimal]-a-C [number/list]-c-d-dt-d:MOD[=bar,baz]-dt:MOD[=bar,baz]-Dletters-Dnumber-e commandline-E commandline-f-Fpattern-g-h-?-i[extension]-Idirectory-l[octnum]-m[-]module-M[-]module-M[-]'module ...'-[mM][-]module=arg[,arg]...-n-p-s-S-t-T-u-U-v-V-V:configvar-w-W-X-x-xdirectory
ENVIRONMENT
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
DESCRIPTION
- arrays of arrays, hashes of arrays, arrays of hashes, hashes of hashes, more elaborate constructs
REFERENCES
COMMON MISTAKES
CAVEAT ON PRECEDENCE
WHY YOU SHOULD ALWAYS "use VERSION"
DEBUGGING
CODE EXAMPLES
ARRAYS OF ARRAYS
- Declaration of an ARRAY OF ARRAYS
- Generation of an ARRAY OF ARRAYS
- Access and Printing of an ARRAY OF ARRAYS
HASHES OF ARRAYS
- Declaration of a HASH OF ARRAYS
- Generation of a HASH OF ARRAYS
- Access and Printing of a HASH OF ARRAYS
ARRAYS OF HASHES
- Declaration of an ARRAY OF HASHES
- Generation of an ARRAY OF HASHES
- Access and Printing of an ARRAY OF HASHES
HASHES OF HASHES
- Declaration of a HASH OF HASHES
- Generation of a HASH OF HASHES
- Access and Printing of a HASH OF HASHES
MORE ELABORATE RECORDS
- Declaration of MORE ELABORATE RECORDS
- Declaration of a HASH OF COMPLEX RECORDS
- Generation of a HASH OF COMPLEX RECORDS
Database Ties
SEE ALSO
AUTHOR
๐ฆ perllol โ Manipulating Arrays of Arrays in Perl
DESCRIPTION
- Declaration and Access of Arrays of Arrays
- Growing Your Own
- Access and Printing
- Slices
SEE ALSO
AUTHOR
โก perlrequick โ Perl regular expressions quick start
DESCRIPTION
The Guide
- Simple word matching
- Using character classes
- Matching this or that
- Grouping things and hierarchical matching
- Extracting matches
- Matching repetitions
- More matching
- Search and replace
- The split operator
- "use re 'strict'"
BUGS
SEE ALSO
AUTHOR AND COPYRIGHT
- Acknowledgments
๐ฅ perlretut โ Perl regular expressions tutorial
DESCRIPTION
Part 1: The basics
- Simple word matching
- Using character classes
- Matching this or that
- Grouping things and hierarchical matching
- Extracting matches
- Backreferences
- Relative backreferences
- Named backreferences
- Alternative capture group numbering
- Position information
- Non-capturing groupings
- Matching repetitions
- Possessive quantifiers
- Building a regexp
- Using regular expressions in Perl
Part 2: Power tools
- More on characters, strings, and character classes
- Compiling and saving regular expressions
- Composing regular expressions at runtime
- Embedding comments and modifiers in a regular expression
- Looking ahead and looking behind
- Using independent subexpressions to prevent backtracking
- Conditional expressions
- Defining named patterns
- Recursive patterns
- A bit of magic: executing Perl code in a regular expression
- Backtracking control verbs
- Pragmas and debugging
SEE ALSO
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::AccessorClass::TinyRole::Tiny- OO System Summary
- Moose,
Class::Accessor,Class::Tiny,Role::Tiny
- Moose,
- Other OO Systems
CONCLUSION
๐๏ธ perlperf โ Perl Performance and Optimization Techniques
DESCRIPTION
OVERVIEW
- ONE STEP SIDEWAYS
- ONE STEP FORWARD
- ANOTHER STEP SIDEWAYS
GENERAL GUIDELINES
BENCHMARKS
- Assigning and Dereferencing Variables
- Search and replace or tr
PROFILING TOOLS
Devel::DProfDevel::ProfilerDevel::SmallProfDevel::FastProfDevel::NYTProf
SORTING
- Elapsed Real Time, User CPU Time, System CPU Time
LOGGING
- Logging if DEBUG (constant)
POSTSCRIPT
SEE ALSO
- PERLDOCS
- MAN PAGES
- MODULES
- URLS
AUTHOR
๐ perlstyle โ Perl style guide
DESCRIPTION
๐๏ธ perlcheat โ Perl 5 Cheat Sheet
DESCRIPTION
- The sheet
ACKNOWLEDGEMENTS
AUTHOR
SEE ALSO
๐ชค perltrap โ Perl traps for the unwary
DESCRIPTION
- Awk Traps
- C/C++ Traps
- JavaScript Traps
- Sed Traps
- Shell Traps
- Perl Traps
๐ perldebtut โ Perl debugging tutorial
DESCRIPTION
use strict
Looking at data and -w and v
help
Stepping through code
Placeholder for a, w, t, T
REGULAR EXPRESSIONS
OUTPUT TIPS
CGI
GUIs
SUMMARY
SEE ALSO
AUTHOR
CONTRIBUTORS
โ perlfaq โ Frequently asked questions about Perl
VERSION
DESCRIPTION
- Where to find the perlfaq
- How to use the perlfaq
- How to contribute to the perlfaq
- What if my question isn't answered in the FAQ?
TABLE OF CONTENTS
perlfaq1- General Questions About Perl,perlfaq2- Obtaining and Learning about Perl,perlfaq3- Programming Tools,perlfaq4- Data Manipulation,perlfaq5- Files and Formats,perlfaq6- Regular Expressions,perlfaq7- General Perl Language Issues,perlfaq8- System Interaction,perlfaq9- Web, Email and Networking
THE QUESTIONS
perlfaq1: General Questions About Perlperlfaq2: Obtaining and Learning about Perlperlfaq3: Programming Toolsperlfaq4: Data Manipulationperlfaq5: Files and Formatsperlfaq6: Regular Expressionsperlfaq7: General Perl Language Issuesperlfaq8: System Interactionperlfaq9: Web, Email and Networking
CREDITS
AUTHOR AND COPYRIGHT
๐ perlfaq1 โ General Questions About Perl
VERSION
DESCRIPTION
- What is Perl?
- Who supports Perl? Who develops it? Why is it free?
- Which version of Perl should I use?
- What is Raku (Perl 6)?
- How stable is Perl?
- How often are new versions of Perl released?
- Is Perl difficult to learn?
- How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
- Can I do [task] in Perl?
- When shouldn't I program in Perl?
- What's the difference between "perl" and "Perl"?
- What is a JAPH?
- How can I convince others to use Perl?
AUTHOR AND COPYRIGHT
and bestieโฆ that's literally only the beginning of this list ๐
๐ธ perlfaq2 โ Obtaining and Learning about Perl
bestie, this is the "where do I even get Perl and how do I learn it" chapter. it's giving orientation-week energy. let's go ๐
๐ VERSION
standard FAQ header, nothing spicy here โ every perlfaq page opens with one.
โจ DESCRIPTION
the whole vibe of this one is questions, and here's every single one, no skipping, periodt:
- Where can I get information on Perl?
- What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
- What machines support Perl? Where do I get it?
- How can I get a binary version of Perl?
- I don't have a C compiler. How can I build my own Perl interpreter?
- I copied the Perl binary from one machine to another, but scripts don't work.
- I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work?
- What modules and extensions are available for Perl? What is CPAN?
- Where can I post questions?
- Perl Books
- Which magazines have Perl content?
- Which Perl blogs should I read?
- What mailing lists are there for Perl?
- Where can I buy a commercial version of Perl?
- Where do I send bug reports?
lowkey the most asked-of-all-time chapter. every newbie hits this one first, and honestly? iconic behavior. ๐
๐ซถ AUTHOR AND COPYRIGHT
yep, it's got its own author and copyright block, just like every good faq should. โจ
๐ฅ perlfaq3 โ Programming Tools
the "okay so you can write Perl, now let's make it good" chapter. tools, editors, debuggers, profilers, performance โ the whole glow-up arc. ๐ฆ
๐ VERSION
same deal, standard header.
โจ DESCRIPTION
- How do I do (anything)?
- this one is basically a whole reading list crammed into a single question, so buckle up. here's every pointer it drops, grouped the way the original groups them:
- Basics:
perldata- Perl data types,perlvar- Perl pre-defined variables,perlsyn- Perl syntax,perlop- Perl operators and precedence,perlsub- Perl subroutines - Execution:
perlrun- how to execute the Perl interpreter,perldebug- Perl debugging - Functions:
perlfunc- Perl builtin functions - Objects:
perlref- Perl references and nested data structures,perlmod- Perl modules (packages and symbol tables),perlobj- Perl objects,perltie- how to hide an object class in a simple variable - Data Structures:
perlref- Perl references and nested data structures,perllol- Manipulating arrays of arrays in Perl,perldsc- Perl Data Structures Cookbook - Modules:
perlmod- Perl modules (packages and symbol tables),perlmodlib- constructing new Perl modules and finding existing ones - Regexes:
perlre- Perl regular expressions,perlfunc- Perl builtin functions,perlop- Perl operators and precedence,perllocale- Perl locale handling (internationalization and localization) - Moving to perl5:
perltrap- Perl traps for the unwary,perl - Linking with C:
perlxstut- Tutorial for writing XSUBs,perlxs- XS language reference manual,perlcall- Perl calling conventions from C,perlguts- Introduction to the Perl API,perlembed- how to embed perl in your C program - Various
- How can I use Perl interactively?
- How do I find which modules are installed on my system?
- How do I debug my Perl programs?
- How do I profile my Perl programs?
- How do I cross-reference my Perl programs?
- Is there a pretty-printer (formatter) for Perl?
- Is there an IDE or Windows Perl Editor?
- the full roll call: Eclipse, EngInSite, IntelliJ IDEA, Kephra, Komodo, Notepad++, Open Perl IDE, OptiPerl, Padre, PerlBuilder, visiPerl+, Visual Perl, Zeus, GNU Emacs, MicroEMACS, XEmacs, Jed, Vim, Vile, MultiEdit, SlickEdit, ConTEXT, bash, zsh, BBEdit and TextWrangler
- not me clocking that
bashandzshare in the editor list ๐ they really said "your shell is an editor if you're brave enough"
- Where can I get Perl macros for vi?
- Where can I get perl-mode or cperl-mode for emacs?
- How can I use curses with Perl?
- How can I write a GUI (X, Tk, Gtk, etc.) in Perl?
- the toolkit shortlist: Tk, Wx, Gtk and Gtk2, Win32::GUI, CamelBones, Qt, Athena
- How can I make my Perl program run faster?
- How can I make my Perl program take less memory?
- the five commandments: Don't slurp!, Use map and grep selectively, Avoid unnecessary quotes and stringification, Pass by reference, Tie large variables to disk
- Is it safe to return a reference to local or lexical data?
- How can I free an array or hash so my program shrinks?
- How can I make my CGI script more efficient?
- How can I hide the source for my Perl program?
- How can I compile my Perl program into byte code or C?
- How can I get "#!perl" to work on [MS-DOS,NT,...]?
- Can I write useful Perl programs on the command line?
- Why don't Perl one-liners work on my DOS/Mac/VMS system?
- Where can I learn about CGI or Web programming in Perl?
- Where can I learn about object-oriented Perl programming?
- Where can I learn about linking C with Perl?
- I've read perlembed, perlguts, etc., but I can't embed perl in my C program; what am I doing wrong?
- When I tried to run my script, I got this message. What does it mean?
- What's MakeMaker?
๐ซถ AUTHOR AND COPYRIGHT
author + copyright, right at the bottom, same as always. ๐
๐ perlfaq4 โ Data Manipulation
THE chapter. numbers, dates, strings, arrays, hashes, and the chaotic misc pile at the end. this is the one you keep open in a second tab forever, ngl. ๐ง
๐ VERSION
yep. standard.
โจ DESCRIPTION
(no content under this one in the toc โ it just rolls straight into the categorized questions below, and honestly? respect for going straight to business.)
๐ข Data: Numbers
- Why am I getting long decimals (eg,
19.9499999999999) instead of the numbers I should be getting (eg,19.95)? - Why is
int()broken? - Why isn't my octal data interpreted correctly?
- Does Perl have a
round()function? What aboutceil()andfloor()? Trig functions? - How do I convert between numeric representations/bases/radixes?
- How do I convert hexadecimal into decimal, How do I convert from decimal to hexadecimal, How do I convert from octal to decimal, How do I convert from decimal to octal, How do I convert from binary to decimal, How do I convert from decimal to binary
- Why doesn't
&work the way I want it to? - How do I multiply matrices?
- How do I perform an operation on a series of integers?
- How can I output Roman numerals?
- Why aren't my random numbers random?
- How do I get a random number between X and Y?
๐ Data: Dates
- How do I find the day or week of the year?
- How do I find the current century or millennium?
- How can I compare two dates and find the difference?
- How can I take a string and turn it into epoch seconds?
- How can I find the Julian Day?
- How do I find yesterday's date?
- Does Perl have a Year 2000 or 2038 problem? Is Perl Y2K compliant?
the Y2K question is still in there and it is so retro of it. vintage. ๐
๐ Data: Strings
- How do I validate input?
- How do I unescape a string?
- How do I remove consecutive pairs of characters?
- How do I expand function calls in a string?
- How do I find matching/nesting anything?
- How do I reverse a string?
- How do I expand tabs in a string?
- How do I reformat a paragraph?
- How can I access or change N characters of a string?
- How do I change the Nth occurrence of something?
- How can I count the number of occurrences of a substring within a string?
- How do I capitalize all the words on one line?
- How can I split a [character]-delimited string except when inside [character]?
- How do I strip blank space from the beginning/end of a string?
- How do I pad a string with blanks or pad a number with zeroes?
- How do I extract selected columns from a string?
- How do I find the soundex value of a string?
- How can I expand variables in text strings?
- Does Perl have anything like Ruby's
#{}or Python's f string? - What's wrong with always quoting
"$vars"? - Why don't my
<<HEREdocuments work?- There must be no space after the
<<part, There (probably) should be a semicolon at the end of the opening token, You can't (easily) have any space in front of the tag, There needs to be at least a line separator after the end token
- There must be no space after the
๐ 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/existsdistinction? - 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 yeah, author + copyright lands right here at the bottom of perlfaq4 too. every faq, every time. ๐
perlfaq5 - Files and Formats ๐ฆ
VERSION
DESCRIPTION
okay so this whole section is about files and formats, and it's literally a whole vibe. here's everything it covers:
- How do I flush/unbuffer an output filehandle? Why must I do this? โ bestie, if you've ever been like "why is my output not showing up", this is for you ๐
- How do I change, delete, or insert a line in a file, or append to the beginning of a file? โ the classic "I need to edit this file but not rewrite the whole thing" situation โจ
- How do I count the number of lines in a file? โ yes, there's a whole art to it, no cap ๐
- How do I delete the last N lines from a file? โ because sometimes you just need to yeet the end ๐
- How can I use Perl's "-i" option from within a program? โ in-place editing but make it internal, periodt ๐
- How can I copy a file? โ not as trivial as it sounds, apparently ๐ธ
- How do I make a temporary file name? โ for when you need a lil file that's just for you ๐ซถ
- How can I manipulate fixed-record-length files? โ if your files are all structured and boring, this is the move ๐
- How can I make a filehandle local to a subroutine? How do I pass filehandles between subroutines? How do I make an array of filehandles? โ filehandles are not always global, bestie, and this explains the drama ๐
- How can I use a filehandle indirectly? โ indirect filehandles? it's giving mysterious ๐ต๏ธโโ๏ธ
- How can I open a filehandle to a string? โ yes, you can treat a string like a file, iconic โจ
- How can I set up a footer format to be used with write()? โ formats and footers, very retro but useful ๐
- How can I write() into a string? โ write() but not to a file? slay ๐
- How can I output my numbers with commas added? โ 1,000,000 but make it pretty ๐
- How can I translate tildes (~) in a filename? โ because ~ is home, and sometimes you need to expand it ๐
- When I open a file read-write, why does it wipe it out? โ the classic gotcha, no cap ๐ญ
- Why do I sometimes get an "Argument list too long" when I use <*>? โ globbing can be extra, fr fr ๐ธ
- How can I open a file named with a leading ">" or trailing blanks? โ tricky filenames need tricky handling ๐ฆ
- How can I reliably rename a file? โ rename() is not always reliable, apparently ๐
- How can I lock a file? โ locking, the thing that saves you from race conditions ๐
- Why can't I just open(FH, ">file.lock")? โ because that's not how locking works, bestie ๐
- I still don't get locking. I just want to increment the number in the file. How can I do this? โ locking for the confused, we've all been there ๐
- All I want to do is append a small amount of text to the end of a file. Do I still have to use locking? โ short answer: maybe? long answer: read on โจ
- How do I randomly update a binary file? โ binary files are a whole different beast ๐
- How do I get a file's timestamp in perl? โ stat() is your friend ๐ซถ
- How do I set a file's timestamp in perl? โ utime() to the rescue ๐
- How do I print to more than one file at once? โ multiplexing output, very main character energy ๐
- How can I read in an entire file all at once? โ slurp it up, bestie ๐ฅค
- How can I read in a file by paragraphs? โ paragraph mode is a vibe ๐
- How can I read a single character from a file? From the keyboard? โ getc() and readkey() enter the chat โจ๏ธ
- How can I tell whether there's a character waiting on a filehandle? โ select() or non-blocking, iykyk ๐
- How do I do a "tail -f" in perl? โ follow the file like a hawk ๐ฆ
- How do I dup() a filehandle in Perl? โ duplicating filehandles, for when you need two ๐
- How do I close a file descriptor by number? โ posix_close() or something, we'll see ๐
- Why can't I use "C:\temp\foo" in DOS paths? Why doesn't
C:\temp\foo.exework? โ backslashes are escape characters, bestie, it's a whole thing ๐ญ - Why doesn't glob(".") get all the files? โ globbing is not regex, no cap ๐ธ
- Why does Perl let me delete read-only files? Why does "-i" clobber protected files? Isn't this a bug in Perl? โ it's not a bug, it's a feature (sort of) ๐ฆ
- How do I select a random line from a file? โ randomness, but make it efficient ๐ฒ
- Why do I get weird spaces when I print an array of lines? โ because lines have newlines, and print doesn't add them ๐
- How do I traverse a directory tree? โ File::Find is the classic, but there are others ๐ณ
- How do I delete a directory tree? โ rm -rf but in Perl, be careful ๐
- How do I copy an entire directory? โ File::Copy::Recursive or something, we'll see ๐
AUTHOR AND COPYRIGHT
perlfaq6 - Regular Expressions โจ
VERSION
DESCRIPTION
regexes are powerful and terrifying, and this section is all about them. here's what's inside:
- How can I hope to use regular expressions without creating illegible and unmaintainable code?
- Comments Outside the Regex, Comments Inside the Regex, Different Delimiters
- I'm having trouble matching over more than one line. What's wrong? โ multiline matching is a mood ๐
- How can I pull out lines between two patterns that are themselves on different lines? โ the classic "between two patterns" problem ๐
- How do I match XML, HTML, or other nasty, ugly things with a regex? โ spoiler: maybe don't, but here's how ๐ญ
- I put a regular expression into $/ but it didn't work. What's wrong? โ $/ is not a regex, bestie, it's a string ๐
- How do I substitute case-insensitively on the LHS while preserving case on the RHS? โ s/// with /i and \u\L magic โจ
- How can I make "\w" match national character sets? โ locale and Unicode enter the chat ๐
- How can I match a locale-smart version of "/[a-zA-Z]/"? โ locale-aware character classes, iykyk ๐
- How can I quote a variable to use in a regex? โ quotemeta() is your friend ๐ซถ
- What is "/o" really for? โ the /o modifier, explained ๐
- How do I use a regular expression to strip C-style comments from a file? โ C comments are cursed, but here we go ๐
- Can I use Perl regular expressions to match balanced text? โ recursion in regex, yes really ๐
- What does it mean that regexes are greedy? How can I get around it? โ greedy vs non-greedy, the eternal struggle ๐ช
- How do I process each word on each line? โ split and map, the dynamic duo ๐ธ
- How can I print out a word-frequency or line-frequency summary? โ counting words, very academic chic ๐
- How can I do approximate matching? โ fuzzy matching, it's giving "close enough" ๐ฆ
- How do I efficiently match many regular expressions at once? โ Regexp::Assemble or similar, we'll see ๐
- Why don't word-boundary searches with "\b" work for me? โ \b is tricky, no cap ๐ญ
- Why does using $&,
$`, or$'slow my program down? โ because they copy stuff, and that's expensive ๐ธ - What good is "\G" in a regular expression? โ \G is for global matching, periodt ๐
- Are Perl regexes DFAs or NFAs? Are they POSIX compliant? โ the deep lore of regex engines ๐ง
- What's wrong with using grep in a void context? โ void context is a trap, bestie ๐
- How can I match strings with multibyte characters? โ Unicode, the final frontier ๐
- How do I match a regular expression that's in a variable? โ qr// is the move ๐
AUTHOR AND COPYRIGHT
perlfaq7 - General Perl Language Issues ๐
VERSION
DESCRIPTION
general Perl language stuff, the whole "why is Perl like this" section. here's the tea:
- Can I get a BNF/yacc/RE for the Perl language? โ spoiler: it's complicated ๐
- What are all these $@%&* punctuation signs, and how do I know when to use them? โ sigils, the whole personality of Perl ๐
- Do I always/never have to quote my strings or use semicolons and commas? โ Perl's rules are flexible, but also not ๐ธ
- How do I skip some return values? โ undef and list assignment, the classic ๐
- How do I temporarily block warnings? โ no warnings, bestie ๐ซถ
- What's an extension? โ XS and stuff, we'll see ๐ง
- Why do Perl operators have different precedence than C operators? โ because Perl is not C, no cap ๐ญ
- How do I declare/create a structure? โ hashes and arrays, the O.G. structs ๐๏ธ
- How do I create a module? โ package and Exporter, the whole deal ๐ฆ
- How do I adopt or take over a module already on CPAN? โ CPAN adoption, it's giving inheritance ๐
- How do I create a class? โ bless() and packages, the Perl OO way ๐
- How can I tell if a variable is tainted? โ taint mode, for the paranoid ๐
- What's a closure? โ closures, the mind-bending but useful thing ๐
- What is variable suicide and how can I prevent it? โ variable suicide, sounds dramatic but it's real ๐
- How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?
- Passing Variables and Functions, Passing Filehandles, Passing Regexes, Passing Methods
- How do I create a static variable? โ state variables, the modern way โจ
- What's the difference between dynamic and lexical (static) scoping? Between local() and my()? โ local vs my, the eternal question ๐
- How can I access a dynamic variable while a similarly named lexical is in scope? โ when you have two variables with the same name, chaos ๐ต
- What's the difference between deep and shallow binding? โ binding, deep vs shallow, very philosophical ๐
- Why doesn't "my($foo) = <$fh>;" work right? โ because my() and <> don't play nice, no cap ๐ญ
- How do I redefine a builtin function, operator, or method? โ you can, but should you? ๐
- What's the difference between calling a function as &foo and foo()? โ &foo vs foo(), the ampersand drama ๐ญ
- How do I create a switch or case statement? โ given/when or if/elsif, the classic ๐
- How can I catch accesses to undefined variables, functions, or methods? โ AUTOLOAD and ties, the spooky stuff ๐ป
- Why can't a method included in this same file be found? โ because packages, bestie ๐ฆ
- How can I find out my current or calling package? โ caller() is your friend ๐ซถ
- How can I comment out a large block of Perl code? โ POD or __END__, the tricks ๐ธ
- How do I clear a package? โ symbol table manipulation, very meta ๐ง
- How can I use a variable as a variable name? โ symbolic references, but be careful โ ๏ธ
- What does "bad interpreter" mean? โ shebang problems, we've all been there ๐ญ
- Do I need to recompile XS modules when there is a change in the C library? โ XS and C libraries, the ABI drama ๐
AUTHOR AND COPYRIGHT
perlfaq8 - System Interaction ๐
VERSION
DESCRIPTION
talking to the system, the OS, and everything in between. here's what's covered:
- How do I find out which operating system I'm running under? โ $^O, the magic variable ๐ป
- Why does exec() not return? โ because it replaces the process, bestie ๐ช
- How do I do fancy stuff with the keyboard/screen/mouse?
- Keyboard, Screen, Mouse
- How do I print something out in color? โ ANSI escapes, the O.G. ๐
- How do I read just one key without waiting for a return key? โ raw mode, very terminal ๐
- How do I check whether input is ready on the keyboard? โ select() and filehandles ๐
- How do I clear the screen? โ system("clear") or ANSI codes ๐งน
- How do I get the screen size? โ TIOCGWINSZ or Term::Size ๐
- How do I ask the user for a password? โ no echo, very secret ๐คซ
- How do I read and write the serial port?
- lockfiles, open mode, end of line, flushing output, non-blocking input
- How do I decode encrypted password files? โ crypt() and shadow files ๐
- How do I start a process in the background?
- STDIN, STDOUT, and STDERR are shared, Signals, Zombies
- How do I trap control characters/signals? โ %SIG, the signal handler hash ๐ฆ
- How do I modify the shadow password file on a Unix system? โ shadow files, very Unix ๐
- How do I set the time and date? โ system("date") or POSIX ๐ฐ๏ธ
- How can I sleep() or alarm() for under a second? โ Time::HiRes, the sub-second hero โฑ๏ธ
- How can I measure time under a second? โ Time::HiRes again, it's the goat ๐
- How can I do an atexit() or setjmp()/longjmp()? (Exception handling) โ eval and die, the Perl way ๐
- Why doesn't my sockets program work under System V (Solaris)? What does the error message "Protocol not supported" mean? โ sockets and System V, the ancient rivalry ๐
- How can I call my system's unique C functions from Perl? โ XS and h2xs, the deep magic ๐ฎ
- Where do I get the include files to do ioctl() or syscall()? โ h2ph and syscall.ph, the classics ๐
- Why do setuid perl scripts complain about kernel problems? โ setuid and Perl, a dangerous combo โ ๏ธ
- How can I open a pipe both to and from a command? โ IPC::Open2 and IPC::Open3, the pipe dreams ๐ฐ
- Why can't I get the output of a command with system()? โ system() doesn't capture, backticks do ๐ฃ
- How can I capture STDERR from an external command? โ 2>&1 or IPC modules ๐ฅ
- Why doesn't open() return an error when a pipe open fails? โ because open() is tricky with pipes ๐ญ
- What's wrong with using backticks in a void context? โ void context and backticks, a bad time ๐
- How can I call backticks without shell processing? โ list form of open or IPC::Run ๐
- Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)? โ EOF and STDIN, the one-way street ๐ซ
- How can I convert my shell script to perl? โ shell to Perl, the great migration ๐
- Can I use perl to run a telnet or ftp session? โ Net::Telnet and Net::FTP, the networking O.G.s ๐ก
- How can I write expect in Perl? โ Expect.pm, the automation king ๐
- Is there a way to hide perl's command line from programs such as "ps"? โ $0 manipulation, very sneaky ๐ต๏ธ
- I {changed directory, modified my environment} in a perl script. How come the change disappeared when I exited the script? How do I get my changes to be visible?
- Unix
- How do I close a process's filehandle without waiting for it to complete? โ double fork or no wait, the trick ๐ช
- How do I fork a daemon process? โ daemonization, the full ritual ๐ง
- How do I find out if I'm running interactively or not? โ -t STDIN and friends ๐ฅ๏ธ
- How do I timeout a slow event? โ alarm() and eval, the classic timeout โฐ
- How do I set CPU limits? โ setrlimit, the resource limits ๐
- How do I avoid zombies on a Unix system? โ wait() and $SIG{CHLD}, the zombie apocalypse ๐ง
- How do I use an SQL database? โ DBI, the database interface ๐๏ธ
- How do I make a system() exit on control-C? โ signal handling and system() ๐ฆ
- How do I open a file without blocking? โ O_NONBLOCK, the non-blocking vibe ๐
- How do I tell the difference between errors from the shell and perl? โ $? and $!, the error detectives ๐
- How do I install a module from CPAN? โ cpan or cpanm, the module installers ๐ฆ
- What's the difference between require and use? โ require vs use, the compile-time drama โณ
- How do I keep my own module/library directory? โ PERL5LIB and lib.pm, your own space ๐
- How do I add the directory my program lives in to the module/library search path? โ FindBin, the location finder ๐
- How do I add a directory to my include path (@INC) at runtime?
- the "PERLLIB" environment variable, the "PERL5LIB" environment variable, the "perl -Idir" command line flag, the "lib" pragma:, the local::lib module:
- Where are modules installed? โ @INC and site_perl, the filesystem lore ๐บ๏ธ
- What is socket.ph and where do I get it? โ socket.ph, the h2ph classic ๐งฆ
AUTHOR AND COPYRIGHT
perlfaq9 - Web, Email and Networking ๐ธ๏ธ
VERSION
DESCRIPTION
web, email, networking โ the whole internet vibe. here's what's inside:
- Should I use a web framework? โ the eternal question, bestie ๐
- Which web framework should I use?
- Catalyst, Dancer2, Mojolicious, Web::Simple
- What is Plack and PSGI? โ Plack and PSGI, the modern Perl web stack ๐
- How do I remove HTML from a string? โ HTML::Strip or regex, the messy way ๐งผ
- How do I extract URLs? โ URI::Find or regex, the link hunter ๐
- How do I fetch an HTML file? โ LWP::Simple or HTTP::Tiny, the fetchers ๐ฅ
- How do I automate an HTML form submission? โ WWW::Mechanize, the form filler ๐ค
- How do I decode or create those %-encodings on the web? โ URI::Escape, the percent encoding ๐ญ
- How do I redirect to another page? โ CGI redirect or headers, the classic โช๏ธ
- How do I put a password on my web pages? โ HTTP auth, the basic lock ๐
- How do I make sure users can't enter values into a form that causes my CGI script to do bad things? โ taint mode and validation, the security check ๐ก๏ธ
- How do I parse a mail header? โ Email::Simple or Mail::Header, the mail parsing ๐ง
- How do I check a valid mail address? โ Email::Valid or regex, the address checker โ
- How do I decode a MIME/BASE64 string? โ MIME::Base64, the decoder ๐งฌ
- How do I find the user's mail address? โ getpwuid or environment, the address finder ๐
- How do I send email?
- Email::Sender::Transport::Sendmail, Email::Sender::Transport::SMTP
- How do I use MIME to make an attachment to a mail message?
- How do I read email?
- How do I find out my hostname, domainname, or IP address?
- How do I fetch/put an (S)FTP file?
- How can I do RPC in Perl?
๐ AUTHOR AND COPYRIGHT ๐
๐ธ perlsyn - Perl syntax: declarations, statements, comments ๐ธ
โจ DESCRIPTION โจ
okay so this one is literally the grammar of the whole language, here's everything in it:
- Declarations
- Comments
- Simple Statements
- Statement Modifiers
- Compound Statements
- Loop Control
- For Loops
- Foreach Loops
- Try Catch Exception Handling
- Basic
BLOCKs deferblocks- Switch Statements
Goto- The Ellipsis Statement
- PODs: Embedded Documentation
- Plain Old Comments (Not!)
- Experimental Details on
givenandwhen- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
๐ perldata - Perl data types ๐
โจ DESCRIPTION โจ
the data girlies live here, all the types and how to poke at them:
- Variable names
- Identifier parsing
- Context
- Scalar values
- Scalar value constructors
- List value constructors
- Subscripts
- Multi-dimensional array emulation
- Slices
- Typeglobs and Filehandles
๐ซถ SEE ALSO ๐ซถ
โญ perlop - Perl expressions: operators, precedence, string literals โญ
โจ DESCRIPTION โจ
bestie this one is LONG, it's every operator you'll ever vibe with:
- Operator Precedence and Associativity
- Terms and List Operators (Leftward)
- The Arrow Operator
- Auto-increment and Auto-decrement
- Exponentiation
- Symbolic Unary Operators
- Binding Operators
- Multiplicative Operators
- Additive Operators
- Shift Operators
- Named Unary Operators
- Class Instance Operator
- Relational Operators
- Equality Operators
- 1. Empty hashes or arrays match
- 2. That is, each element smartmatches the element of the same index in the other array.[3]
- 3. If a circular reference is found, fall back to referential equality
- 4. Either an actual number, or a string that looks like one
- Bitwise And
- Bitwise Or and Exclusive Or
- C-style Logical And
- C-style Logical Or, Xor, and Defined Or
- Range Operators
- Conditional Operator
- Assignment Operators
- Comma Operator
- List Operators (Rightward)
- Logical Not
- Logical And
- Logical or and Exclusive Or
- C Operators Missing From Perl
- unary
& - unary
* (TYPE)
- 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 โจ
no cap, this is where you learn to write your own little functions:
- documented later in this document
- documented in
perlmod - documented in
perlobj - documented in
perltie - documented in
PerlIO::via - documented in
perlfunc - documented in
UNIVERSAL - documented in
perldebguts - undocumented
- used internally by the
overloadfeature
and then the actual sections:
- Signatures
- Private Variables via
my() - Persistent Private Variables
- Temporary Values via
local() - Lvalue subroutines
- Lexical Subroutines
- Passing Symbol Table Entries (typeglobs)
- When to Still Use
local() - Pass by Reference
- Prototypes
- Constant Functions
- Overriding Built-in Functions
- Autoloading
- Subroutine Attributes
๐ซถ SEE ALSO ๐ซถ
๐ perlfunc - Perl builtin functions ๐
โจ DESCRIPTION โจ
the big one. every builtin that ships with Perl, all the way down. buckle up ๐
๐ Perl Functions by Category ๐
- Functions for SCALARs or strings
- Regular expressions and pattern matching
- Numeric functions
- Functions for real
@ARRAYs - Functions for list data
- Functions for real
%HASHes - Input and output functions
- Functions for fixed-length data or records
- Functions for filehandles, files, or directories
- Keywords related to the control flow of your Perl program
- Keywords related to scoping
- Miscellaneous functions
- Functions for processes and process groups
- Keywords related to Perl modules
- Keywords related to classes and object-orientation
- Low-level socket functions
- System V interprocess communication functions
- Fetching user and group info
- Fetching network info
- Time-related functions
- Non-function keywords
๐ Portability ๐
๐ Alphabetical Listing of Perl Functions ๐
-X FILEHANDLE-X EXPR-X DIRHANDLE-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
okay bestie, we're still deep in the Perl builtin function masterlist and it's giving encyclopedia realness ๐ Here's the next chunk of signatures, no cap:
getgrnam 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 bytes"is in effect: ... - Otherwise, if
"use locale"for"LC_CTYPE"is in effect: ... - Otherwise, If EXPR has the UTF8 flag set: ...
- Otherwise, if
"use feature 'unicode_strings'"oruse 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
"undef"for temporary files - Opening a filehandle into an in-memory scalar
- Opening a filehandle into a command
- Duping filehandles
- Legacy usage
- Specifying mode and filename as a single argument
- Assigning a filehandle to a bareword
- Calling
"open"with one argument via global variables - Other considerations
- Automatic filehandle closure
- Automatic pipe flushing
- Direct versus by-reference assignment of filehandles
- Whitespace and special characters in the filename argument
- Invoking C-style
"open" - Portability issues
opendir DIRHANDLE,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::URandomCrypt::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///
โจ Non-function Keywords by Cross-reference โจ
these are the keyword besties, not functions but still iconic:
__DATA____END__BEGINCHECKENDINITUNITCHECKDESTROYandcmpeqgegtisaleltnenotorxxorAUTOLOADelseelsifforforeachifunlessuntilwhileelseifdefaultgivenwhentrycatchfinallydeferADJUST
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
perlpod - the Plain Old Documentation format
DESCRIPTION
Ordinary Paragraph
Verbatim Paragraph
Command Paragraph
"=head1 Heading Text""=head2 Heading Text""=head3 Heading Text""=head4 Heading Text""=head5 Heading Text""=head6 Heading Text""=over indentlevel""=item stuff...""=back""=cut""=pod""=begin formatname""=end formatname""=for formatname text...""=encoding encodingname"
Formatting Codes
"I<text>" -- italic text"B<text>" -- bold text"U<text>" -- underline text"C<code>" -- code text"L<name>" -- a hyperlink"E<escape>" -- a character escape"F<filename>" -- used for filenames"S<text>" -- text contains non-breaking spaces"X<topic name>" -- an index entry"Z<>"-- a null (zero-effect) formatting code
The Intent
Embedding Pods in Perl Modules
Hints for Writing Pod
SEE ALSO
AUTHOR
perlpodspec - Plain Old Documentation: format specification and notes
DESCRIPTION
Pod Definitions
Pod Commands
"=head1""=head2""=head3""=head4""=head5""=head6""=pod""=cut""=over""=item""=back""=begin formatname""=begin formatname parameter""=end formatname""=for formatname text...""=encoding encodingname"
Pod Formatting Codes
"I<text>" -- italic text"B<text>" -- bold text"U<text>" -- underline text"C<code>" -- code text"F<filename>" -- style for filenames"X<topic name>" -- an index entry"Z<>"-- a null (zero-effect) formatting code"L<name>" -- a hyperlink"E<escape>"-- a character escape"S<text>"-- text contains non-breaking spaces
Notes on Implementing Pod Processors
About L<...> Codes
First:
Second:
Third:
Fourth:
Fifth:
Sixth:
About =over...=back Regions
About Data Paragraphs and "=begin/=end" Regions
SEE ALSO
AUTHOR
perldocstyle โ A style guide for writing Perl's documentation ๐
DESCRIPTION
- Purpose of this guide
- Intended audience
- Status of this document
FUNDAMENTALS
- Choice of markup: Pod
- Choice of language: American English
- Choice of encoding: UTF-8
- Choice of underlying style guide: CMOS
- Contributing to Perl's documentation
FORMATTING AND STRUCTURE
- Document structure
- Formatting rules
- Adding comments
- Perlfunc has special rules
TONE AND STYLE
okay bestie, this is the part where the style guide gets opinionated and honestly? iconic. ๐
- Apply one of the four documentation modes
- Assume readers' intelligence, but not their knowledge
- Use meaningful variable and symbol names in examples
- Write in English, but not just for English-speakers
- Omit placeholder text or commentary
- Apply section-breaks and examples generously
- Lead with common cases and best practices
- Document Perl's present
- The documentation speaks with one voice
INDEX OF PREFERRED TERMS
these are the <em>correct</em> words to use, no cap. the entries listed are:
- built-in function, Darwin, macOS, man page, Perl; perl, Perl 5, Perl 6, Perl 5 Porters, the; porters, the; p5p, program, Raku, script, semicolon, Unix
SEE ALSO
AUTHOR
perlpodstyle โ Perl POD style guide ๐
DESCRIPTION
the section names POD pages should use, in order, periodt:
NAME,SYNOPSIS,DESCRIPTION,OPTIONS,RETURN VALUE,ERRORS,DIAGNOSTICS,EXAMPLES,ENVIRONMENT,FILES,CAVEATS,BUGS,RESTRICTIONS,NOTES,AUTHOR,HISTORY,COPYRIGHT AND LICENSE,SEE ALSO
AUTHOR
COPYRIGHT AND LICENSE
SEE ALSO
perldiag โ various Perl diagnostics ๐
DESCRIPTION
SEE ALSO
perldeprecation โ list Perl deprecations ๐ซถ
DESCRIPTION
Unscheduled Deprecations
- Perl 5.44
- Perl 5.42
- Perl 5.40
- Perl 5.38
- Perl 5.34
- Perl 5.32
- Perl 5.30
- Perl 5.28
- Perl 5.26
- Perl 5.24
- Perl 5.16
SEE ALSO
perllexwarn โ Perl Lexical Warnings โจ
DESCRIPTION
perldebug โ Perl debugging ๐
DESCRIPTION
The Perl Debugger
Calling the Debugger
perl -d program_nameperl -d -e 0perl -d:ptkdb program_nameperl -dt threaded_program_name
Debugger Commands
bestie the command list is long and every single one counts:
h,h [command],h hp expr,x [maxdepth] exprV [pkg [vars]],X [vars],y [level [vars]]Ts [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] exprb,b [line] [condition],b [file]:[line] [condition],b subname [condition],b postpone subname [condition],b load filename,b compile subnameB 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,!! cmdsource fileH -numberqor^DR|dbcmd,||dbcmdcommandm exprMman [manpage]
Configurable Options
"recallCommand","ShellBang""pager""tkRunning""signalLevel","warnLevel","dieLevel""AutoTrace","LineInfo","inhibit_exit","PrintRet""ornaments","frame","maxTraceLen","windowSize""arrayDepth","hashDepth""dumpDepth","compactDump","veryCompact","globPrint","DumpDBFiles","DumpPackages","DumpReused","quote","HighBit","undefPrint""UsageOnly""HistFile","HistSize""TTY","noTTY""ReadLine","NonStop"
Debugger Input/Output
- Prompt
- Multiline commands
- Stack backtrace
- Line Listing Format
- Frame listing
Debugging Compile-Time Statements
Debugger Customization
Readline Support / History in the Debugger
Editor Support for Debugging
The Perl Profiler
Debugging Regular Expressions
Debugging Memory Usage
SEE ALSO
BUGS
perlvar โ Perl predefined variables ๐
DESCRIPTION
The Syntax of Variable Names
SPECIAL VARIABLES
General Variables
$ARG,$_@ARG,@_$LIST_SEPARATOR,$"$PROCESS_ID,$PID,$$$PROGRAM_NAME,$0$REAL_GROUP_ID,$GID,$($EFFECTIVE_GROUP_ID,$EGID,$)$REAL_USER_ID,$UID,$<$EFFECTIVE_USER_ID,$EUID,$>$SUBSCRIPT_SEPARATOR,$SUBSEP,$;$a,$b%ENV$OLD_PERL_VERSION,$]$SYSTEM_FD_MAX,$^F@F@INC,%INC,$INC$INPLACE_EDIT,$^I@ISA$^M${^MAX_NESTED_EVAL_BEGIN_BLOCKS}$OSNAME,$^O%SIG%{^HOOK}require__before,require__after$BASETIME,$^T$PERL_VERSION,$^V$EXECUTABLE_NAME,$^X
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,@-"$"</lavender> is the same as <lavender>"substr($var, 0, $-[0])"`$&is the same as"substr($var, $-[0], $+[0] - $-[0])""$'"is the same as"substr($var, $+[0])"$1is the same as"substr($var, $-[1], $+[1] - $-[1])"$2is the same as"substr($var, $-[2], $+[2] - $-[2])"$3is the same as"substr($var, $-[3], $+[3] - $-[3])"%{^CAPTURE_ALL},%-${^LAST_SUCCESSFUL_PATTERN}$LAST_REGEXP_CODE_RESULT,$^R${^RE_COMPILE_RECURSION_LIMIT}${^RE_DEBUG_FLAGS}${^RE_TRIE_MAXBUF}
Variables related to filehandles
$ARGV,@ARGVARGV,ARGVOUTIO::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,$^AIO::Handle->format_formfeed(EXPR),$FORMAT_FORMFEED,$^LHANDLE->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,$^P0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x100,0x200,0x400,0x800,0x1000${^TAINT}${^SAFE_LOCALES}${^UNICODE}${^UTF8CACHE}${^UTF8LOCALE}
Deprecated and removed variables
$#$*$[${^ENCODING}${^WIN32_SLOPPY_STAT}
perlre โ Perl regular expressions ๐ฅ
DESCRIPTION
The Basics
Modifiers
"m""s""i""x"and"xx""p""a","d","l", and"u""n"- Other Modifiers
Regular Expressions
- [1], [2], [3], [4], [5], [6], [7], [8]
Quoting (escaping) metacharacters
Extended Patterns
(?#text)(?adlupimnsx-imnsx),(?^alupimnsx)(?:pattern)(?adluimnsx-imnsx:pattern),(?^aluimnsx:pattern)(?|pattern)- Lookaround Assertions
(?=pattern),(*pla:pattern),(*positive_lookahead:pattern)(?!pattern),(*nla:pattern),(*negative_lookahead:pattern)(?<=pattern),\K,(*plb:pattern),(*positive_lookbehind:pattern)(?<!pattern),(*nlb:pattern),(*negative_lookbehind:pattern)(?<NAME>pattern),(?'NAME'pattern)\k<NAME>,\k'NAME',\k{NAME}(?{ code }),(*{ code }),(??{ code })(?PARNO)(?-PARNO)(?+PARNO)(?R)(?0)(?&NAME)(?(condition)yes-pattern|no-pattern),(?(condition)yes-pattern)- an integer in parentheses
- a lookahead/lookbehind/evaluate zero-width assertion;
- a name in angle brackets or single quotes
- the special symbol
"(R)" "(1)""(2)".."(<NAME>)""('NAME')""(?=...)""(?!...)""(?<=...)""(?<!...)""(?{ CODE })","(*{ CODE })""(R)","(R1)""(R2)".."(R&NAME)""(DEFINE)"(?>pattern),(*atomic:pattern)(?[ ])
Backtracking
Script Runs
Special Backtracking Control Verbs
- Verbs
(*PRUNE)(*PRUNE:NAME)(*SKIP)(*SKIP:NAME)(*MARK:NAME)(*:NAME)(*THEN)(*THEN:NAME)(*COMMIT)(*COMMIT:arg)(*FAIL)(*F)(*FAIL:arg)(*ACCEPT)(*ACCEPT:arg)
Warning on "\1" Instead of $1
Repeated Patterns Matching a Zero-length Substring
Combining RE Pieces
"ST""S|T""S{REPEAT_COUNT}""S{min,max}""S{min,max}?""S?""S*""S+""S??""S*?""S+?""(?>S)""(?=S)""(?<=S)""(?!S)""(?<!S)""(??{ EXPR })""(?PARNO)""(?(condition)yes-pattern|no-pattern)"
Creating Custom RE Engines
Embedded Code Execution Frequency
PCRE/Python Support
(?P<NAME>pattern)(?P=NAME)(?P>NAME)
Quoting metacharacters
BUGS
SEE ALSO
perlrebackslash โ Perl Regular Expression Backslash Sequences and Escapes ๐ฆ
DESCRIPTION
The backslash
- [1]
All the sequences and escapes
Character Escapes
- [1], [2]
Modifiers
Character classes
Referencing
Assertions
\A,\z,\Z,\G,\b{},\b,\B{},\B,"\b{gcb}"or"\b{g}","\b{lb}","\b{sb}","\b{wb}"
Misc
\K,\N,\R,\X
perlrecharclass โ Perl Regular Expression Character Classes
the character-class deep dive, bestie ๐ this one is *so long and so worth it*
DESCRIPTION
- The dot
- Backslash sequences
- If the
/amodifier 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/amodifier 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]
- If the
- Bracketed Character Classes
- [1], [2], [3], [4], [5], [6], [7], If the
/amodifier, 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 ..
- [1], [2], [3], [4], [5], [6], [7], If the
perlreref โ Perl Regular Expressions Reference
the cheat sheet. the little card you tape to your monitor. iconic โจ
DESCRIPTION
- OPERATORS
- SYNTAX
- ESCAPE SEQUENCES
- CHARACTER CLASSES
- ANCHORS
- QUANTIFIERS
- EXTENDED CONSTRUCTS
- VARIABLES
- FUNCTIONS
- TERMINOLOGY
AUTHOR
SEE ALSO
THANKS
perlref โ Perl references and nested data structures
refs!! the thing that makes Perl Perl, fr fr ๐ฆ
NOTE
DESCRIPTION
- Making References
- Using References
- Circular References
- Symbolic references
- Not-so-symbolic references
- Pseudo-hashes: Using an array as a hash
- Function Templates
- Postfix Dereference Syntax
- Postfix Reference Slicing
- Assigning to References
- Declaring a Reference to a Variable
WARNING: Don't use references as hash keys
SEE ALSO
perlform โ Perl formats
the retro one. text fields, numeric fields, all of it ๐ธ
DESCRIPTION
- Text Fields
- Numeric Fields
- The Field
@*for Variable-Width Multi-Line Text - The Field
^*for Variable-Width One-line-at-a-time Text - Specifying Values
- Using Fill Mode
- Suppressing Lines Where All Fields Are Void
- Repeating Format Lines
- Top of Form Processing
- Format Variables
NOTES
- Footers
- Accessing Formatting Internals
WARNINGS
perlobj โ Perl object reference
OOP but make it Perl. bless yourself, bestie ๐
DESCRIPTION
- An Object is Simply a Data Structure
- A Class is Simply a Package
- A Method is Simply a Subroutine
- Method Invocation
- Inheritance
- Writing Constructors
- Attributes
- An Aside About Smarter and Safer Code
- Method Call Variations
- Invoking Class Methods
"bless","blessed", and"ref"- The UNIVERSAL Class
isa($class),DOES($role),can($method),VERSION($need)
- AUTOLOAD
- Destructors
- Non-Hash Objects
- Inside-Out objects
- Pseudo-hashes
SEE ALSO
perltie โ how to hide an object class in a simple variable
hiding a whole object class inside a plain little variable? the audacity. we love it ๐
SYNOPSIS
DESCRIPTION
- Tying Scalars
TIESCALAR classname, LIST,FETCH this,STORE this, value,UNTIE this,DESTROY this
- Tying Arrays
TIEARRAY classname, LIST,FETCH this, index,STORE this, index, value,FETCHSIZE this,STORESIZE this, count,EXTEND this, count,EXISTS this, key,DELETE this, key,CLEAR this,PUSH this, LIST,POP this,SHIFT this,UNSHIFT this, LIST,SPLICE this, offset, length, LIST,UNTIE this,DESTROY this
- Tying Hashes
USER,HOME,CLOBBER,LIST,TIEHASH classname, LIST,FETCH this, key,STORE this, key, value,DELETE this, key,CLEAR this,EXISTS this, key,FIRSTKEY this,NEXTKEY this, lastkey,SCALAR this,UNTIE this,DESTROY this
- Tying FileHandles
TIEHANDLE classname, LIST,WRITE this, LIST,PRINT this, LIST,PRINTF this, LIST,READ this, LIST,READLINE this,GETC this,EOF this,CLOSE this,UNTIE this,DESTROY this
UNTIE this- The
"untie"Gotcha
SEE ALSO
BUGS
AUTHOR
perldbmfilter โ Perl DBM Filters
filters for your DBM files. yes, keys and values get their own little glow-up pass ๐
SYNOPSIS
DESCRIPTION
filter_store_key,filter_store_value,filter_fetch_key,filter_fetch_value- The Filter
- An Example: the NULL termination problem
- Another Example: Key is a C int
SEE ALSO
AUTHOR
perlclass โ Perl class syntax reference
the new-ish class syntax!! main character energy, no cap โญ
SYNOPSIS
DESCRIPTION
- History
KEYWORDS
classfieldmethod
ATTRIBUTES
- Class attributes
- Field attributes
- Method attributes
OBJECT LIFECYCLE
- Construction
- Adjustment
- Lifetime
- Destruction
TODO
- Roles, Parameters to ADJUST blocks, ADJUST blocks as true blocks, More accessor generator attributes, Metaprogramming, Extension Customisation
KNOWN BUGS
AUTHORS
perlipc โ Perl interprocess communication (signals, fifos, pipes, safe subprocesses, sockets, and semaphores)
the whole IPC buffet, bestie. signals, pipes, sockets, semaphores, everything on one platter ๐ซถ
DESCRIPTION
Signals
- Handling the SIGHUP Signal in Daemons
- Deferred Signals (Safe Signals)
- Long-running opcodes, Interrupting IO, Restartable system calls, Signals as
"faults", Signals triggered by operating system state
- Long-running opcodes, Interrupting IO, Restartable system calls, Signals as
Named Pipes
Using open() for IPC
- Filehandles
- Background Processes
- Complete Dissociation of Child from Parent
- Safe Pipe Opens
- Avoiding Pipe Deadlocks
- Bidirectional Communication with Another Process
- Bidirectional Communication with Yourself
Sockets: Client/Server Communication
- Internet Line Terminators
- Internet TCP Clients and Servers
- Unix-Domain TCP Clients and Servers
TCP Clients with IO::Socket
- A Simple Client
"Proto","PeerAddr","PeerPort"
- A Webget Client
- Interactive Client with IO::Socket
TCP Servers with IO::Socket
- Proto, LocalPort, Listen, Reuse
UDP: Message Passing
SysV IPC
NOTES
BUGS
AUTHOR
SEE ALSO
perlfork โ Perl's fork() emulation
the emulation era. this one has a whole caveat section and it *earned it ๐*
SYNOPSIS
DESCRIPTION
- Behavior of other Perl features in forked pseudo-processes
$$or$PROCESS_ID,%ENV,chdir()and all other builtins that accept filenames,wait()andwaitpid(),kill(),exec(),exit(), Open handles to files, directories and network sockets
- Resource limits
- Killing the parent process
- Lifetime of the parent process and pseudo-processes
CAVEATS AND LIMITATIONS
- BEGIN blocks, Open filehandles, Open directory handles, Forking pipe open() not yet implemented, Global state maintained by XSUBs, Interpreter embedded in larger application, Thread-safety of extensions
PORTABILITY CAVEATS
BUGS
AUTHOR
SEE ALSO
perlnumber โ semantics of numbers and numeric operations in Perl
numbers!!! how Perl stores them, converts them, and does math on them ๐ฅ
SYNOPSIS
DESCRIPTION
Storing numbers
Numeric operators and numeric conversions
Flavors of Perl numeric operations
- Arithmetic operators,
++, Arithmetic operators during"use integer", Other mathematical operators, Bitwise operators, Bitwise operators during"use integer", Operators which expect an integer, Operators which expect a string
AUTHOR
SEE ALSO
perlthrtut โ Tutorial on threads in Perl
the threads tutorial. big one. buckle up, bestie ๐ง
DESCRIPTION
What Is A Thread Anyway?
Threaded Program Models
- Boss/Worker
- Work Crew
- Pipeline
What kind of threads are Perl threads?
Thread-Safe Modules
Thread Basics
- Basic Thread Support
- A Note about the Examples
- Creating Threads
- Waiting For A Thread To Exit
- Ignoring A Thread
- Process and Thread Termination
Threads And Data
- Shared And Unshared Data
- Thread Pitfalls: Races
Synchronization and control
- Controlling access:
lock() - A Thread Pitfall: Deadlocks
- Queues: Passing Data Around
- Semaphores: Synchronizing Data Access
- Basic semaphores
- Advanced Semaphores
- Waiting for a Condition
- Giving up control
General Thread Utility Routines
- What Thread Am I In?
- Thread IDs
- Are These Threads The Same?
- What Threads Are Running?
A Complete Example
Different implementations of threads
Performance considerations
Process-scope Changes
Thread-Safety of System Libraries
Conclusion
SEE ALSO
Bibliography
- Introductory Texts
- OS-Related References
- Other References
Acknowledgements
AUTHOR
Copyrights
perlport โ Writing portable Perl
the "will this run on the weird platform" bible. HUGE. we respect her ๐
DESCRIPTION
- Not all Perl programs have to be portable, Nearly all of Perl already is portable
ISSUES
- Newlines
- Numbers endianness and Width
- Files and Filesystems
- System Interaction
- Command names versus file pathnames
- Networking
- Interprocess Communication (IPC)
- External Subroutines (XS)
- Standard Modules
- Time and Date
- Character sets and character encoding
- Internationalisation
- System Resources
- Security
- Style
CPAN Testers
PLATFORMS
- Unix
- DOS and Derivatives
- VMS
- VOS
- EBCDIC Platforms
- Acorn RISC OS
- Other perls
FUNCTION IMPLEMENTATIONS
- Alphabetical Listing of Perl Functions
-X,alarm,atan2,binmode,chdir,chmod,chown,chroot,crypt,dbmclose,dbmopen,dump,exec,exit,fcntl,flock,fork,getlogin,getpgrp,getppid,getpriority,getpwnam,getgrnam,getnetbyname,getpwuid,getgrgid,getnetbyaddr,getprotobynumber,getpwent,getgrent,gethostbyname,gethostent,getnetent,getprotoent,getservent,seekdir,sethostent,setnetent,setprotoent,setservent,endpwent,endgrent,endhostent,endnetent,endprotoent,endservent,getsockopt,glob,gmtime,ioctl,kill,link,localtime,lstat,msgctl,msgget,msgsnd,msgrcv,open,readlink,rename,rewinddir,select,semctl,semget,semop,setgrent,setpgrp,setpriority,setpwent,setsockopt,shmctl,shmget,shmread,shmwrite,sleep,socketpair,stat,symlink,syscall,sysopen,system,telldir,times,truncate,umask,utime,wait,waitpid
๐ป Supported Platforms ๐ป
okay bestie, deep breath, here's the entire roster of platforms Perl is out here holding hands with no cap:
- Linux (
x86,ARM,IA64) - HP-UX
- AIX
- Win32
- Windows 2000
- Windows XP
- Windows Server 2003
- Windows Vista
- Windows Server 2008
- Windows 7
- Cygwin
- Solaris (
x86,SPARC) - OpenVMS
- Alpha (7.2 and later)
- I64 (8.2 and later)
- NetBSD
- FreeBSD
- Debian GNU/kFreeBSD
- Haiku
- Irix (6.5. What else?)
- OpenBSD
- Dragonfly BSD
- Midnight BSD
- QNX Neutrino RTOS (6.5.0)
- MirOS BSD
- Stratus OpenVOS (17.0 or later)
- time_t issues that may or may not be fixed ๐
- Stratus VOS / OpenVOS
- AIX (yes again, they said it twice, we don't question it ๐ )
- Android
- FreeMINT
that's the whole list, every single one, I'm not skipping anybody, we don't do that here ๐
๐ชฆ EOL Platforms ๐ชฆ
these ones have left the chat, and the version that dropped them is right there, iconic behaviour:
- (Perl 5.37.1)
- Ultrix
- (Perl 5.36)
- NetWare, DOS/DJGPP, AT&T UWIN
- (Perl 5.20)
- AT&T 3b1
- (Perl 5.14)
- Windows 95, Windows 98, Windows ME, Windows NT4
- (Perl 5.12)
- Atari MiNT, Apollo Domain/OS, Apple Mac OS 8/9, Tenon Machten
Supported Platforms (Perl 5.8)
like, the historical archive version of the platform list, for the girlies doing archaeology ๐ฆ
๐ SEE ALSO
the little cross-reference corner, where you go when you want to know what else to read next ๐
๐ AUTHORS / CONTRIBUTORS ๐
everybody who touched this and made it what it is icons only
๐ perllocale - Perl locale handling (internationalization and localization)
๐ DESCRIPTION
๐บ๏ธ WHAT IS A LOCALE
okay so a locale is basically a vibe check for how your computer formats stuff, and each piece of that vibe has a category name. here's the whole set:
Category "LC_NUMERIC": Numeric formattingCategory "LC_MONETARY": Formatting of monetary amountsCategory "LC_TIME": Date/Time formattingCategory "LC_COLLATE": CollationCategory "LC_CTYPE": Character TypesCategory "LC_MESSAGES": Error and other messagesCategory "LC_TIME": Date/Time formatting (yes bestie,LC_TIMEis listed twice, I'm just telling you what the page says ๐)Category "LC_ALL"- Other categories
๐งฐ PREPARING TO USE LOCALES
the "get your setup cute before you start" section โจ
๐ USING LOCALES
โจ The use locale pragma
Not within the scope of use locale
Lingering effects of use locale
Under "use locale";
The setlocale function
Multi-threaded operation
Finding locales
LOCALE PROBLEMS
The localeconv function
I18N::Langinfo
๐๏ธ LOCALE CATEGORIES
Category LC_COLLATE: Collation: Text Comparisons and Sorting
Category LC_CTYPE: Character Types
Category LC_NUMERIC: Numeric Formatting
Category LC_MONETARY: Formatting of monetary amounts
Category LC_TIME: Representation of time
Category LC_MESSAGES: System messages
Other categories
๐ SECURITY
yes bestie, locales can be a whole security situation, read it before you go wild ๐ซถ
๐ ENVIRONMENT
the env vars that get a say in all of this:
PERL_SKIP_LOCALE_INITPERL_BADLANG"LC_ALL""LANGUAGE""LC_CTYPE""LC_COLLATE""LC_MONETARY""LC_NUMERIC""LC_TIME""LANG"
Examples
๐ NOTES
String eval and LC_NUMERIC
Backward compatibility
I18N:Collate obsolete
Sort speed and memory use impacts
Freely available locale definitions
I18n and l10n
An imperfect standard
๐ Unicode and UTF-8
๐ BUGS
Collation of strings containing embedded NUL characters
"LANGUAGE"
Embedded perls and multi-threaded
Broken systems
๐ SEE ALSO
๐ HISTORY
๐ฆ perluniintro - Perl Unicode introduction
๐ DESCRIPTION
Unicode
Perl's Unicode Support
Perl's Unicode Model
Unicode and EBCDIC
Creating Unicode
Handling Unicode
Legacy Encodings
Unicode I/O
Displaying Unicode As Text
Special Cases
Advanced Topics
Miscellaneous
Questions With Answers
Hexadecimal Notation
Further Resources
๐ฐ๏ธ UNICODE IN OLDER PERLS
๐ SEE ALSO
๐ ACKNOWLEDGMENTS
โ๏ธ 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 utf8 still needed to enable UTF-8 in scripts
UTF-16 scripts autodetected
Byte and Character Semantics
ASCII Rules versus Unicode Rules
When the string has been upgraded to UTF-8
There are additional methods for regular expression patterns
Extended Grapheme Clusters (Logical characters)
Unicode Character Properties
the full property menu, every single one, exactly as written:
"\p{All}""\p{Alnum}""\p{Any}""\p{ASCII}""\p{Assigned}""\p{Blank}""\p{Decomposition_Type: Non_Canonical}"(Short:"\p{Dt=NonCanon}")"\p{Graph}""\p{HorizSpace}""\p{In=*}""\p{PerlSpace}""\p{PerlWord}""\p{Posix...}""\p{Present_In: *}"(Short:"\p{In=*}")"\p{Print}""\p{SpacePerl}""\p{Title}"and"\p{Titlecase}""\p{Unicode}""\p{VertSpace}""\p{Word}""\p{XPosix...}"
Comparison of "\N{...}" and "\p{name=...}"
- [1]
- [2]
- [3]
- [4]
- [5]
Wildcards in Property Values
User-Defined Character Properties
User-Defined Case Mappings (for serious hackers only)
Character Encodings for Input and Output
Unicode Regular Expression Support Level
okay this next bit is the footnote zone, and I am keeping every single word, so buckle up ๐ซถ
- [1]
"\N{U+...}"and"\x{...}" - [2]
"\p{...}""\P{...}". This requirement is for a minimal list of properties. Perl supports these. See R2.7 for other properties - [3] (blank in the original bestie, I'm not skipping it, there's just genuinely nothing there ๐)
- [4] (also blank, iconic)
- [5]
"\b""\B"meet most, but not all, the details of this requirement, but"\b{wb}"and"\B{wb}"do, as well as the stricter R2.3 - [6] (blank again ๐)
- [7] (and blank)
- [8] UTF-8/UTF-EBDDIC used in Perl allows not only
"U+10000"to"U+10FFFF"but also beyond"U+10FFFF" - [9] Unicode has rewritten this portion of UTS#18 to say that getting canonical equivalence (see UAX#15 "Unicode Normalization Forms" <https://www.unicode.org/reports/tr15>) is basically to be done at the programmer level. Use NFD to write both your regular expressions and text to match them against (you can use Unicode::Normalize)
- [10] Perl has
"\X"and"\b{gcb}". Unicode has retracted their "Grapheme Cluster Mode", and recently added string properties, which Perl does not yet support - [11] see UAX#29 "Unicode Text Segmentation" <https://www.unicode.org/reports/tr29>,
- [12] see "Wildcards in Property Values" in perlunicode above
- [13] Perl supports all the properties in the Unicode Character Database (UCD). It does not yet support the listed properties that come from other Unicode sources
- [14] The only optional property that Perl supports is Named Sequence. None of these properties are in the UCD
Unicode Encodings
Noncharacter code points
Beyond Unicode code points
Security Implications of Unicode
Unicode in Perl on EBCDIC
Locales
When Unicode Does Not Happen
The "Unicode Bug"
Forcing Unicode in Perl (Or Unforcing Unicode in Perl)
Using Unicode in XS
Hacking Perl to work on earlier Unicode versions (for very serious hackers only)
Porting code from perl-5.6.X
๐ BUGS
Interaction with Extensions
Speed
๐ SEE ALSO
๐ perlunicook - cookbookish examples of handling Unicode in Perl
๐ DESCRIPTION
๐ง EXAMPLES
every recipe in the cookbook, numbered with the little prescription symbol and all, we're not skipping a single one:
- โ 0: Standard preamble
- โ 1: Generic Unicode-savvy filter
- โ 2: Fine-tuning Unicode warnings
- โ 3: Declare source in utf8 for identifiers and literals
- โ 4: Characters and their numbers
- โ 5: Unicode literals by character number
- โ 6: Get character name by number
- โ 7: Get character number by name
- โ 8: Unicode named characters
- โ 9: Unicode named sequences
- โ 10: Custom named characters
- โ 11: Names of CJK codepoints
- โ 12: Explicit encode/decode
- โ 13: Decode program arguments as utf8
- โ 14: Decode program arguments as locale encoding
- โ 15: Declare STD{IN,OUT,ERR} to be utf8
- โ 16: Declare STD{IN,OUT,ERR} to be in locale encoding
- โ 17: Make file I/O default to utf8
- โ 18: Make all I/O and args default to utf8
- โ 19: Open file with specific encoding
- โ 20: Unicode casing
- โ 21: Unicode case-insensitive comparisons
- โ 22: Match Unicode linebreak sequence in regex
- โ 23: Get character category
- โ 24: Disabling Unicode-awareness in builtin charclasses
- โ 25: Match Unicode properties in regex with \p, \P
- โ 26: Custom character properties
- โ 27: Unicode normalization
- โ 28: Convert non-ASCII Unicode numerics
- โ 29: Match Unicode grapheme cluster in regex
- โ 30: Extract by grapheme instead of by codepoint (regex)
- โ 31: Extract by grapheme instead of by codepoint (substr)
- โ 32: Reverse string by grapheme
- โ 33: String length in graphemes
- โ 34: Unicode column-width for printing
- โ 35: Unicode collation
- โ 36: Case- and accent-insensitive Unicode sort
- โ 37: Unicode locale collation
- โ 38: Making
"cmp"work on text instead of codepoints - โ 39: Case- and accent-insensitive comparisons
- โ 40: Case- and accent-insensitive locale comparisons
- โ 41: Unicode linebreaking
- โ 42: Unicode text in DBM hashes, the tedious way
- โ 43: Unicode text in DBM hashes, the easy way
- โ 44: PROGRAM: Demo of Unicode collation and printing
๐ SEE ALSO
the standards girlies, all cited exactly:
- ยง3.13 Default Case Algorithms, page 113; ยง4.2 Case, pages 120โ122; Case Mappings, page 166โ172, especially Caseless Matching starting on page 170, UAX #44: Unicode Character Database, UTS #18: Unicode Regular Expressions, UAX #15: Unicode Normalization Forms, UTS #10: Unicode Collation Algorithm, UAX #29: Unicode Text Segmentation, UAX #14: Unicode Line Breaking Algorithm, UAX #11: East Asian Width
โ๏ธ AUTHOR
โ๏ธ COPYRIGHT AND LICENCE
๐ REVISION HISTORY
๐ perlunifaq - Perl Unicode FAQ
โ Q and A
okay the questions, exactly as asked:
- perlunitut isn't really a Unicode tutorial, is it?
- What character encodings does Perl support?
- Which version of perl should I use?
- What about binary data, like images?
- When should I decode or encode?
- What if I don't decode?
- What if I don't encode?
- If the string's characters are all code point 255 or lower, Perl outputs bytes that match those code points. This is what happens with encoded strings. It can also, though, happen with unencoded strings that happen to be all code point 255 or lower
- Otherwise, Perl outputs the string encoded as UTF-8. This only happens with strings you neglected to encode. Since that should not happen, Perl also throws a "wide character" warning in this case
- Is there a way to automatically decode or encode? โ like, does the computer just know? ๐ญ
- What if I don't know which encoding was used? โ the eternal struggle fr fr
- Can I use Unicode in my Perl sources? โ bestie yes but there's โจloreโจ
Data::Dumperdoesn't restore the UTF8 flag; is it broken? โ spoiler: it's giving misunderstood, not broken ๐- Why do regex character classes sometimes match only in the ASCII range? โ the betrayal ๐ฉ
- Why do some characters not uppercase or lowercase correctly? โ they're just built different
- How can I determine if a string is a text string or a binary string? โ vibe check time ๐ฆ
- How do I convert from encoding FOO to encoding BAR? โ glow-up pipeline
- What are
"decode_utf8"and"encode_utf8"? โ the dynamic duo ๐ซถ - What is a
"wide character"? โ she's big, she's wide, she contains multitudes ๐
๐ง INTERNALS
- What is
"the UTF8 flag"? โ the little switch everyone blames for everything - What about the
"use bytes"pragma? โ handle with care, no cap - What about the
"use encoding"pragma? โ oop, we'll get into it - What is the difference between
":encoding"and":utf8"? โ not the same thing bestie, do not conflate ๐ฅ - What's the difference between
"UTF-8"and"utf8"? โ one tiny character, massive consequences ๐ - I lost track; what encoding is the internal format really? โ valid, it's a lot ๐ตโ๐ซ
๐ AUTHOR
๐ SEE ALSO
๐ perluniprops โ Index of Unicode Version 16.0.0 character properties in Perl
๐ธ DESCRIPTION
๐ธ Properties accessible through "\p{}" and "\P{}"
๐ Single form ("\p{name}") tighter rules:
- white space adjacent to a non-word character
- underscores separating digits in numbers
๐ Compound form ("\p{name=value}" or "\p{name:value}") tighter rules:
- Stabilized
- Deprecated
- Obsolete
- Discouraged
*is a wild-card(\d+)in the info column gives the number of Unicode code points matched by this 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
โจ Legal "\p{}" and "\P{}" constructs that match no characters
These are, like, legal but they match absolutely nothing. Empty. A void. ๐
\p{Canonical_Combining_Class=Attached_Below_Left}\p{Canonical_Combining_Class=CCC133}\p{Grapheme_Cluster_Break=E_Base}\p{Grapheme_Cluster_Break=E_Base_GAZ}\p{Grapheme_Cluster_Break=E_Modifier}\p{Grapheme_Cluster_Break=Glue_After_Zwj}\p{Word_Break=E_Base}\p{Word_Break=E_Base_GAZ}\p{Word_Break=E_Modifier}\p{Word_Break=Glue_After_Zwj}
๐ธ Properties accessible through Unicode::UCD
๐ธ Properties accessible through other means
๐ธ Unicode character properties that are NOT accepted by Perl
Perl said no thank you to all of these, and here they are, full list, no skips:
Expands_On_NFC(XO_NFC)Expands_On_NFD(XO_NFD)Expands_On_NFKC(XO_NFKC)Expands_On_NFKD(XO_NFKD)Grapheme_Link(Gr_Link)Jamo_Short_Name(JSN)Other_Alphabetic(OAlpha)Other_Default_Ignorable_Code_Point(ODI)Other_Grapheme_Extend(OGr_Ext)Other_ID_Continue(OIDC)Other_ID_Start(OIDS)Other_Lowercase(OLower)Other_Math(OMath)Other_Uppercase(OUpper)Script=Katakana_Or_Hiragana(sc=Hrkt)Script_Extensions=Katakana_Or_Hiragana(scx=Hrkt)
๐ธ Other information in the Unicode data base
Look at this little library of extras, iconic honestly:
auxiliary/GraphemeBreakTest.htmlauxiliary/LineBreakTest.htmlauxiliary/SentenceBreakTest.htmlauxiliary/WordBreakTest.htmlBidiCharacterTest.txtBidiTest.txtCJKRadicals.txtconfusables.txtconfusablesSummary.txtDoNotEmit.txtintentional.txtemoji/ReadMe.txtReadMe.txtEmojiSources.txtextracted/DName.txtIndex.txtNamedSqProv.txtNamesList.htmlNamesList.txtNormalizationCorrections.txtNushuSources.txtStandardizedVariants.htmlStandardizedVariants.txtTangutSources.txtUSourceData.txtUSourceGlyphs.pdf
๐ SEE ALSO
๐ฆ perlunitut โ Perl Unicode Tutorial
๐ DESCRIPTION
๐ธ Definitions
๐ธ Your new toolkit
๐ธ I/O flow (the actual 5 minute tutorial)
๐ SUMMARY
๐ Q and A (or FAQ)
๐ ACKNOWLEDGEMENTS
๐ AUTHOR
๐ SEE ALSO
๐ perlebcdic โ Considerations for running Perl on EBCDIC platforms
๐ DESCRIPTION
๐ COMMON CHARACTER CODE SETS
๐ ASCII
๐ ISO 8859
๐ Latin 1 (ISO 8859-1)
๐ EBCDIC
00371047POSIX-BC
๐ Unicode code points versus EBCDIC code points
๐ Unicode and UTF
๐ Using Encode
๐ SINGLE OCTET TABLES
The recipes, in order, no skipping: recipe 0, recipe 1, recipe 2, recipe 3, recipe 4, recipe 5, recipe 6
๐ Table in hex, sorted in 1047 order
๐ IDENTIFYING CHARACTER CODE SETS
๐ CONVERSIONS
๐ utf8::unicode_to_native() and utf8::native_to_unicode()
๐ tr///
๐ iconv
๐ C RTL
๐ OPERATOR DIFFERENCES
๐ FUNCTION DIFFERENCES
chr()ord()pack()print()printf()sort()sprintf()unpack()
๐ REGULAR EXPRESSION DIFFERENCES
๐ SOCKETS
๐ SORTING
๐ Ignore ASCII vs. EBCDIC sort differences
๐ Use a sort helper function
๐ MONO CASE then sort data (for non-digits, non-underscore)
๐ Perform sorting on one type of platform only
๐ TRANSFORMATION FORMATS
๐ URL decoding and encoding
๐ uu encoding and decoding
๐ Quoted-Printable encoding and decoding
๐ Caesarean ciphers
๐ Hashing order and checksums
๐ I18N AND L10N
๐ MULTI-OCTET CHARACTER SETS
๐ OS ISSUES
๐ OS/400
- PASE
- IFS access
๐ OS/390, z/OS
"sigaction""chcp"- dataset access
"iconv"- locales
๐ POSIX-BC?
๐ BUGS
๐ SEE ALSO
๐ REFERENCES
๐ HISTORY
๐ AUTHOR
๐ฅ perlsec โ Perl security
๐ก๏ธ DESCRIPTION
๐ก๏ธ SECURITY VULNERABILITY CONTACT INFORMATION
๐ก๏ธ SECURITY MECHANISMS AND CONCERNS
๐ Taint mode
๐ Laundering and Detecting Tainted Data
๐ Switches On the "#!" Line
๐ Taint mode and @INC
๐ Cleaning Up Your Path
๐ Shebang Race Condition
๐ Protecting Your Programs
๐ Unicode
๐ Algorithmic Complexity Attacks
- Hash Seed Randomization
- Hash Traversal Randomization
- Bucket Order Perturbance
- New Default Hash Function
- Alternative Hash Functions
๐ Using Sudo
๐ SEE ALSO
๐ต๏ธ perlsecpolicy โ Perl security report handling policy
๐ DESCRIPTION
๐ REPORTING SECURITY ISSUES IN PERL
๐ WHAT ARE SECURITY ISSUES
๐ Software covered by the Perl security team
๐ Bugs that may qualify as security issues in Perl
๐ Bugs that do not qualify as security issues in Perl
๐ Bugs that require special categorization
๐ HOW WE DEAL WITH SECURITY ISSUES
๐ Perl's vulnerability remediation workflow
๐ Publicly known and zero-day security issues
๐ Vulnerability credit and bounties
๐ Embargo Period
๐ Example Release Process
๐ฆ perlmod โ Perl modules (packages and symbol tables)
๐ธ DESCRIPTION
๐ Is this the document you were after?
- This doc
perlnewmodperlmodstyle
๐ Packages
๐ Symbol Tables
๐ BEGIN, UNITCHECK, CHECK, INIT and END
๐ Perl Classes
๐ Perl Modules
๐ Making your module threadsafe
๐ SEE ALSO
๐ง perlmodlib โ constructing new Perl modules and finding existing ones
๐ THE PERL MODULE LIBRARY
๐ Pragmatic Modules
Okay bestie, this is the whole squad, everybody gets named, no cap:
attributes๐autodieautodie::exceptionautodie::exception::systemautodie::hintsautodie::skipautousebasebigfloatbigintbignumbigratblibbuiltinbytescharnamesconstantdeprecatediagnosticsencodingencoding::warningsexperimentalfeaturefieldsfiletestifintegerlessliblocalemrookopenopsoverloadoverloadingparentresigtrapsortsource::encodingstablestrictsubsthreadsthreads::sharedutf8varsversionvmsishwarningswarnings::register
โจ Standard Modules โจ
okay bestie, so like, Perl comes with a WHOLE bunch of standard modules, and here's the full list. no cap, it's a lot. but you got this. ๐
Amiga::ARexxAmiga::ExecAnyDBM_FileApp::CpanApp::ProveApp::Prove::StateApp::Prove::State::ResultApp::Prove::State::Result::TestArchive::TarArchive::Tar::FileAttribute::HandlersAutoLoaderAutoSplitBB::ConciseB::DeparseB::Op_privateB::ShowlexB::TerseB::XrefBenchmark"IO::Socket::IP""Socket""Test2::Tools::Refcount"CORECPANCPAN::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::UtilsExtUtils::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::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::DictSelectSaverSelfLoaderStorableSub::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::Hub
The module list keeps GOING and honestly bestie, it's giving infinite scroll ๐ but every single one of these is a real doc, so here we are, no skipping:
Test2::EventFacet::InfoTest2::EventFacet::Info::TableTest2::EventFacet::MetaTest2::EventFacet::ParentTest2::EventFacet::PlanTest2::EventFacet::RenderTest2::EventFacet::TraceTest2::FormatterTest2::Formatter::TAPTest2::HubTest2::Hub::InterceptorTest2::Hub::Interceptor::TerminatorTest2::Hub::SubtestTest2::IPCTest2::IPC::DriverTest2::IPC::Driver::FilesTest2::ManualTest2::Manual::AnatomyTest2::Manual::Anatomy::APITest2::Manual::Anatomy::ContextTest2::Manual::Anatomy::EndToEndTest2::Manual::Anatomy::EventTest2::Manual::Anatomy::HubsTest2::Manual::Anatomy::IPCTest2::Manual::Anatomy::UtilitiesTest2::Manual::ConcurrencyTest2::Manual::ContributingTest2::Manual::TestingTest2::Manual::Testing::IntroductionTest2::Manual::Testing::MigratingTest2::Manual::Testing::PlanningTest2::Manual::Testing::TodoTest2::Manual::ToolingTest2::Manual::Tooling::FirstToolTest2::Manual::Tooling::FormatterTest2::Manual::Tooling::NestingTest2::Manual::Tooling::Plugin::TestExitTest2::Manual::Tooling::Plugin::TestingDoneTest2::Manual::Tooling::Plugin::ToolCompletesTest2::Manual::Tooling::Plugin::ToolStartsTest2::Manual::Tooling::SubtestTest2::Manual::Tooling::TestBuilderTest2::Manual::Tooling::TestingTest2::MockTest2::PluginTest2::Plugin::BailOnFailTest2::Plugin::DieOnFailTest2::Plugin::ExitSummaryTest2::Plugin::SRandTest2::Plugin::TimesTest2::Plugin::UTF8Test2::RequireTest2::Require::AuthorTestingTest2::Require::AutomatedTestingTest2::Require::EnvVarTest2::Require::ExtendedTestingTest2::Require::ForkTest2::Require::ModuleTest2::Require::NonInteractiveTestingTest2::Require::PerlTest2::Require::RealForkTest2::Require::ReleaseTestingTest2::Require::ThreadsTest2::SuiteTest2::TodoTest2::ToolsTest2::Tools::AsyncSubtestTest2::Tools::BasicTest2::Tools::ClassTest2::Tools::ClassicCompareTest2::Tools::CompareTest2::Tools::DeferTest2::Tools::EncodingTest2::Tools::EventTest2::Tools::ExceptionTest2::Tools::ExportsTest2::Tools::GenTempTest2::Tools::GrabTest2::Tools::MockTest2::Tools::RefTest2::Tools::SpecTest2::Tools::SubtestTest2::Tools::TargetTest2::Tools::TesterTest2::Tools::TinyTest2::Tools::WarningsTest2::TransitionTest2::UtilTest2::Util::ExternalMetaTest2::Util::Facets2LegacyTest2::Util::GrabberTest2::Util::GuardTest2::Util::HashBaseTest2::Util::ImporterTest2::Util::RefTest2::Util::SigTest2::Util::StashTest2::Util::SubTest2::Util::TableTest2::Util::Table::LineBreakTest2::Util::TimesTest2::Util::TraceTest2::V0Test2::WorkflowTest2::Workflow::BlockBaseTest2::Workflow::BuildTest2::Workflow::RunnerTest2::Workflow::TaskTest2::Workflow::Task::ActionTest2::Workflow::Task::GroupTest::BuilderTest::Builder::FormatterTest::Builder::ModuleTest::Builder::TesterTest::Builder::Tester::ColorTest::Builder::TodoDiagTest::HarnessTest::Harness::BeyondTest::MoreTest::SimpleTest::TesterTest::Tester::CaptureTest::Tester::CaptureRunnerTest::TutorialTest::use::okText::AbbrevText::BalancedText::ParseWordsText::TabsText::WrapThreadThread::QueueThread::SemaphoreTie::ArrayTie::FileTie::HandleTie::HashTie::Hash::NamedCaptureTie::MemoizeTie::RefHashTie::ScalarTie::StdHandleTie::SubstrHashTime::HiResTime::LocalTime::PieceTime::SecondsTime::gmtimeTime::localtimeTime::tmUNIVERSALUnicode::CollateUnicode::Collate::CJK::Big5Unicode::Collate::CJK::GB2312Unicode::Collate::CJK::JISX0208Unicode::Collate::CJK::KoreanUnicode::Collate::CJK::PinyinUnicode::Collate::CJK::StrokeUnicode::Collate::CJK::ZhuyinUnicode::Collate::LocaleUnicode::NormalizeUnicode::UCDUser::grentUser::pwentVMS::DCLsymVMS::FilespecVMS::StdioWin32Win32API::FileWin32COREXS::APItestXS::TypemapXSLoaderautodie::Scope::Guardautodie::Scope::GuardStackautodie::Utilversion::Internals
PHEW. That's the whole list. You made it. Slay. ๐๐
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 ๐
This one's your vibe-check for how to write a module that doesn't make people go "ew." Here's what it covers:
INTRODUCTION
QUICK CHECKLIST
Before you start
The API
Stability
Documentation
Release considerations
BEFORE YOU START WRITING A MODULE
Has it been done before?
Do one thing and do it well
What's in a name?
Get feedback before publishing
DESIGNING AND WRITING YOUR MODULE
To OO or not to OO?
Designing your API
- Write simple routines to do simple things
- Separate functionality from output
- Provide sensible shortcuts and defaults
- Naming conventions
- Parameter passing
Strictness and warnings
Backwards compatibility
Error handling and messages
DOCUMENTING YOUR MODULE
POD
README, INSTALL, release notes, changelogs
perl Makefile.PLmakemake testmake installperl Build.PLperl Buildperl Build testperl 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
perlstyleperlnewmodperlpodpodchecker- 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-starterorh2xs - 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
perldocpod2manpod2textpod2htmlpod2usagepodcheckersplainroffitall
Converters
pl2pm
Administration
libnetcfgperlivp
Development
perlbugperlthanksh2phh2xsenc2xsxsubppprovecorelist
General tools
encguessjson_pppiconvptarptardiffptargrepshasumstreamzipzipdetails
Installation
cpaninstmodsh
SEE ALSO
perlfilter - Source Filters ๐ต๏ธ
DESCRIPTION
CONCEPTS
USING FILTERS
WRITING A SOURCE FILTER
WRITING A SOURCE FILTER IN C
Decryption Filters
CREATING A SOURCE FILTER AS A SEPARATE EXECUTABLE
WRITING A SOURCE FILTER IN PERL
USING CONTEXT: THE DEBUG FILTER
CONCLUSION
LIMITATIONS
THINGS TO LOOK OUT FOR
Some Filters Clobber the "DATA" Handle
REQUIREMENTS
AUTHOR
Copyrights
perldtrace - Perl's support for DTrace ๐ฌ
SYNOPSIS
DESCRIPTION
HISTORY
PROBES
sub-entry(SUBNAME, FILE, LINE, PACKAGE)sub-return(SUBNAME, FILE, LINE, PACKAGE)phase-change(NEWPHASE, OLDPHASE)op-entry(OPNAME)loading-file(FILENAME)loaded-file(FILENAME)
EXAMPLES
- Most frequently called functions
- Trace function calls
- Function calls during interpreter cleanup
- System calls at compile time
- Perl functions that execute the most opcodes
REFERENCES
- DTrace Dynamic Tracing Guide
- DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD
SEE ALSO
Devel::DTrace::Provider
AUTHORS
perlglossary - Perl Glossary ๐
The big dictionary moment. Alphabetized and everything, periodt.
VERSION
DESCRIPTION
A
accessor methods, actual arguments, address operator, algorithm, alias, alphabetic, alternatives, anonymous, application, architecture, argument, ARGV, arithmetical operator, array, array context, Artistic License, ASCII, assertion, assignment, assignment operator, associative array, associativity, asynchronous, atom, atomic operation, attribute, autogeneration, autoincrement, autoload, autosplit, autovivification, AV, awk
B
backreference, backtracking, backward compatibility, bareword, base class, big-endian, binary, binary operator, bind, bit, bit shift, bit string, bless, block, BLOCK, block buffering, Boolean, Boolean context, breakpoint, broadcast, BSD, bucket, buffer, built-in, bundle, byte, bytecode
C
C, cache, callback, call by reference, call by value, canonical, capture variables, capturing, cargo cult, case, casefolding, casemapping, character, character class, character property, circumfix operator, class, class method, client, closure, cluster, CODE, code generator, codepoint, code subpattern, collating sequence, co-maintainer, combining character, command, command buffering, command-line arguments, command name, comment, compilation unit, compile, compile phase, compiler, compile time, composer, concatenation, conditional, connection, construct, constructor, context, continuation, core dump, CPAN, C preprocessor, cracker, currently selected output channel, current package, current working directory, CV
and bestie the glossary keeps going in the next part, we're literally only at C ๐ญ ๐ฆ
- D โ dangling statement, datagram, data structure, data type, DBM, declaration, declarator, decrement, default, defined, delimiter, dereference, derived class, descriptor, destroy, destructor, device, directive, directory, directory handle, discipline, dispatch, distribution, dual-lived, dweomer, dwimmer, dynamic scoping
- E โ eclectic, element, embedding, empty subclass test, encapsulation, endian, en passant, environment, environment variable, EOF, errno, error, escape sequence, exception, exception handling, exec, executable file, execute, execute bit, exit status, exploit, export, expression, extension
- F โ false, FAQ, fatal error, feeping creaturism, field, FIFO, file, file descriptor, fileglob, filehandle, filename, filesystem, file test operator, filter, first-come, flag, floating point, flush, FMTEYEWTK, foldcase, fork, formal arguments, format, freely available, freely redistributable, freeware, function, funny character
- G โ garbage collection, GID, glob, global, global destruction, glue language, granularity, grapheme, greedy, grep, group, GV
- H โ hacker, handler, hard reference, hash, hash table, header file, here document, hexadecimal, home directory, host, hubris, HV
- I โ identifier, impatience, implementation, import, increment, indexing, indirect filehandle, indirection, indirect object, indirect object slot, infix, inheritance, instance, instance data, instance method, instance variable, integer, interface, interpolation, interpreter, invocant, invocation, I/O, IO, I/O layer, IPA, IP, IPC, is-a, iteration, iterator, IV
- J โ JAPH
- K โ key, keyword
- L โ label, laziness, leftmost longest, left shift, lexeme, lexer, lexical analysis, lexical scoping, lexical variable, library, LIFO, line, linebreak, line buffering, line number, link, LIST, list, list context, list operator, list value, literal, little-endian, local, logical operator, lookahead, lookbehind, loop, loop control statement, loop label, lowercase, lvaluable, lvalue, lvalue modifier
- M โ magic, magical increment, magical variables, Makefile, man, manpage, matching, member data, memory, metacharacter, metasymbol, method, method resolution order, minicpan, minimalism, mode, modifier, module, modulus, mojibake, monger, mortal, mro, multidimensional array, multiple inheritance
- N โ named pipe, namespace, NaN, network address, newline, NFS, normalization, null character, null list, null string, numeric context, numification, NV, nybble
- O โ object, octal, offset, one-liner, open source software, operand, operating system, operator, operator overloading, options, ordinal, overloading, overriding, owner
- P โ package, pad, parameter, parent class, parse tree, parsing, patch, PATH, pathname, pattern, pattern matching, PAUSE, Perl mongers, permission bits, Pern, phaser, pipe, pipeline, platform, pod, pod command, pointer, polymorphism, port, portable, porter, possessive, POSIX, postfix, pp, pragma, precedence, prefix, preprocessing, primary maintainer, procedure, process, program, program generator, progressive matching, property, protocol, prototype, pseudofunction, pseudohash, pseudoliteral, public domain, pumpkin, pumpking, PV
- Q โ qualified, quantifier
- R โ race condition, readable, reaping, record, recursion, reference, referent, regex, regular expression, regular expression modifier, regular file, relational operator, reserved words, return value, RFC, right shift, role, root, RTFM, run phase, runtime, runtime pattern, RV, rvalue
- S โ sandbox, scalar, scalar context, scalar literal, scalar value, scalar variable, scope, scratchpad, script, script kiddie, sed, semaphore, separator, serialization, server, service, setgid, setuid, shared memory, shebang, shell, side effects, sigil, signal, signal handler, single inheritance, slice, slurp, socket, soft reference, source filter, stack, standard, standard error, standard input, standard I/O, Standard Library, standard output, statement, statement modifier, static, static method, static scoping, static variable, stat structure, status, STDERR, STDIN, STDIO, STDOUT, stream, string, string context, stringification, struct, structure, subclass, subpattern, subroutine, subscript, substitution, substring, superclass, superuser, SV, switch, switch cluster, switch statement, symbol, symbolic debugger, symbolic link, symbolic reference, symbol table, synchronous, syntactic sugar, syntax, syntax tree, syscall
- T โ taint checks, tainted, taint mode, TCP, term, terminator, ternary, text, thread, tie, titlecase, TMTOWTDI, token, tokener, tokenizing, toolbox approach, topic, transliterate, trigger, trinary, troff, true, truncating, type, type casting, typedef, typed lexical, typeglob, typemap
- U โ UDP, UID, umask, unary operator, Unicode, Unix, uppercase, UTF-8 string
- V โ value, variable, variable interpolation, variadic, vector, virtual, void context, v-string
- W โ warning, watch expression, weak reference, whitespace, word, working directory, wrapper, WYSIWYG
- X โ XS, XSUB
- Y โ yacc
- Z โ zero width, zombie
and that's the whole glossary index, alphabet done, we ate ๐
๐ AUTHOR AND COPYRIGHT ๐
(no body under this one in the listing bestie, it's literally just the heading โ the credits live in the actual manpage, this is only the table of contents ๐ )
๐ง perlembed - how to embed perl in your C program
- DESCRIPTION
- PREAMBLE
- Use C from Perl?
- Use a Unix program from Perl?
- Use Perl from Perl?
- Use C from C?
- Use Perl from C?
- ROADMAP
- Compiling your C program
- Adding a Perl interpreter to your C program
- Calling a Perl subroutine from your C program
- Evaluating a Perl statement from your C program
- Performing Perl pattern matches and substitutions from your C program
- Fiddling with the Perl stack from your C program
- Maintaining a persistent interpreter
- Execution of END blocks
$0assignments- Maintaining multiple interpreter instances
- Using Perl modules, which themselves use C libraries, from your C program
- Using embedded Perl with POSIX locales
- PREAMBLE
- 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
- Compile-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
- Using
- SEE ALSO
๐ธ perlxstut - Tutorial for writing XSUBs
- DESCRIPTION
- SPECIAL NOTES
make- Version caveat
- Dynamic Loading versus Static Loading
- Threads and
PERL_NO_GET_CONTEXT
- TUTORIAL
- EXAMPLE 1
- EXAMPLE 2
- What has gone on?
- Writing good test scripts
- EXAMPLE 3
- What's new here?
- Input and Output Parameters
- The XSUBPP Program
- The TYPEMAP file
- Warning about Output Arguments
- EXAMPLE 4
- What has happened here?
- Anatomy of .xs file
- Getting the fat out of XSUBs
- More about XSUB arguments
- The Argument Stack
- Extending your Extension
- Documenting your Extension
- Installing your Extension
- EXAMPLE 5
- New Things in this Example
- EXAMPLE 6
- New Things in this Example
- EXAMPLE 7 (Coming Soon)
- EXAMPLE 8 (Coming Soon)
- EXAMPLE 9 Passing open files to XSes
- Troubleshooting these Examples
- See also
- Author
- Last Changed
๐ perlxs - XS language reference manual
- DESCRIPTION
- Introduction
- On The Road
- The Anatomy of an XSUB
- The Argument Stack
- The RETVAL Variable
- Returning SVs, AVs and HVs through RETVAL
- The MODULE Keyword
- The PACKAGE Keyword
- The PREFIX Keyword
- The OUTPUT: Keyword
- The NO_OUTPUT Keyword
- The CODE: Keyword
- The INIT: Keyword
- The NO_INIT Keyword
- The TYPEMAP: Keyword
- Initializing Function Parameters
- Default Parameter Values
- The PREINIT: Keyword
- The SCOPE: Keyword
- The INPUT: Keyword
- The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords
- The
length(NAME)Keyword - Variable-length Parameter Lists
- The C_ARGS: Keyword
- The PPCODE: Keyword
- Returning Undef And Empty Lists
- The REQUIRE: Keyword
- The CLEANUP: Keyword
- The POSTCALL: Keyword
- The BOOT: Keyword
- The VERSIONCHECK: Keyword
- The PROTOTYPES: Keyword
- The PROTOTYPE: Keyword
- The ALIAS: Keyword
- The OVERLOAD: Keyword
- The FALLBACK: Keyword
- The INTERFACE: Keyword
- The INTERFACE_MACRO: Keyword
- The INCLUDE: Keyword
- The INCLUDE_COMMAND: Keyword
- The CASE: Keyword
- The EXPORT_XSUB_SYMBOLS: Keyword
- The & Unary Operator
- Inserting POD, Comments and C Preprocessor Directives
- Using XS With C++
- Interface Strategy
- Perl Objects And C Structures
- Safely Storing Static Data in XS
MY_CXT_KEY,typedef my_cxt_t,START_MY_CXT,MY_CXT_INIT,dMY_CXT,MY_CXT,aMY_CXT/pMY_CXT,MY_CXT_CLONE,MY_CXT_INIT_INTERP(my_perl),dMY_CXT_INTERP(my_perl)
- EXAMPLES
- CAVEATS
- Use of standard C library functions
- Event loops and control flow
- XS VERSION
- AUTHOR DIAGNOSTICS
- AUTHOR
perlxstypemap โ Perl XS C/Perl type mapping ๐
okay so this is the page that spills how XS maps C types โ Perl types, and bestie it is a LOT. buckle up ๐
DESCRIPTION
- Anatomy of a typemap ๐งฌ
- The Role of the typemap File in Your Distribution
- Sharing typemaps Between CPAN Distributions โ sharing is caring fr fr ๐ซถ
- Writing typemap Entries โ๏ธ
- Full Listing of Core Typemaps โ the whole roster, no gatekeeping:
T_SVT_SVREFT_SVREF_FIXEDT_AVREFT_AVREF_REFCOUNT_FIXEDT_HVREFT_HVREF_REFCOUNT_FIXEDT_CVREFT_CVREF_REFCOUNT_FIXEDT_SYSRETT_UVT_IVT_INTT_ENUMT_BOOLT_U_INTT_SHORTT_U_SHORTT_LONGT_U_LONGT_CHART_U_CHART_FLOATT_NVT_DOUBLET_PVT_PTRT_PTRREFT_PTROBJT_REF_IV_REFT_REF_IV_PTRT_PTRDESCT_REFREFT_REFOBJT_OPAQUEPTRT_OPAQUEImplicit arrayT_PACKEDT_PACKEDARRAYT_DATAUNITT_CALLBACKT_ARRAYT_STDIOT_INOUTT_INT_OUT
perlclib โ Interacting with standard C library functions ๐ธ
the page that's basically "bestie, pls don't just raw-dog the C library" ๐ญ
DESCRIPTION
- libc functions to avoid ๐ซ
- Conventions
"~""t""p""n""s"
- File Operations
- File Input and Output
- File Positioning
- Memory Management and String Handling
- Character Class Tests
- stdlib.h functions
- Miscellaneous functions
- Conventions
- Dealing with locales ๐
- Dealing with embedded perls and threads ๐งต
- Functions always unsuitable for use under multi-threads
- Functions which must be called at least once before starting threads
- Functions that are thread-safe when called with appropriate arguments
- Functions vulnerable to signals
- General issues with thread-safety
- Reentrant equivalent functions
- For items marked "*"
- For the remaining items
- If you
#define PERL_REENTRANT - If you don't enable automatic substitution
- Functions that need the environment to be constant
- Locale-specific issues
SEE ALSO
perlguts โ Introduction to the Perl API ๐
this is the big one. the main character of internals docs. it's giving "everything you ever wanted to know about SVs and were too scared to ask" โจ
DESCRIPTION
Variables
- Datatypes
- What is an "IV"?
- Working with SVs ๐ซถ
SvIV(SV*)("IV") 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-byte"char*". Moreover, if it's the 4-byte string, that could come from either Perl"\xff\xff"stored UTF-8 encoded, or Perl"\xc3\xbf\xc3\xbf"stored as raw octets. To differentiate between these you MUST look up the SV's UTF8 bit (cf."SvUTF8") to know whether the source Perl string is 2 characters ("SvUTF8"would be on) or 4 characters ("SvUTF8"would be off) ๐
- Byte string:
- 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)calls"sv_force_normal_flags(sv, SV_COW_DROP_PV)"which drops any string buffer pointed to by"sv". This is usually used to avoid copying any COW string to a new buffer, prior to writing some completely new string to"sv"
- Working with AVs
"av_store_simple","av_fetch_simple","av_push_simple", are not magical, are not readonly, are "real" AVs (see next section), have an av_top_index value > -2- Every accessible element in the array is either initialized but empty or contains a pointer to a live SV
- When a SV* is assigned to an array element, the reference count on the SV is incremented. Conversely, when the element is unset, or assigned a different SV*, the reference count of the expelled SV is decremented
- Working with HVs
- Hash API Extensions
- AVs, HVs and undefined values
- References
- Blessed References and Class Objects ๐
- Creating New Variables
GV_ADDMULTIGV_ADDWARN
- Reference Counts and Mortality
- Stashes and Globs
- I/O Handles
- Double-Typed SVs
- Magic Variables โจ
- Assigning Magic
- Magic Virtual Tables
- Finding Magic
- Understanding the Magic of Tied Hashes and Arrays
- Localizing changes
"SAVEINT(int i)""SAVEIV(IV i)""SAVEI32(I32 i)""SAVEI8(I8 i)""SAVEI16(I16 i)""SAVEBOOL(int i)""SAVESTRLEN(STRLEN i)"SAVESPTR(s)SAVEPPTR(p)"SAVERCPV(char **ppv)""SAVEGENERICSV(SV **psv)""SAVEFREESV(SV *sv)""SAVEMORTALIZESV(SV *sv)""SAVEFREEOP(OP *op)"SAVEFREEPV(p)"SAVEFREERCPV(char *pv)""SAVECLEARSV(SV *sv)""SAVEDELETE(HV *hv, char *key, I32 length)""SAVEDESTRUCTOR(DESTRUCTORFUNC_NOCONTEXT_t f, void *p)""SAVEDESTRUCTOR_X(DESTRUCTORFUNC_t f, void *p)""MORTALSVFUNC_X(SVFUNC_t f, SV *sv)""MORTALDESTRUCTOR_SV(SV *coderef, SV *args)"SAVESTACK_POS()"SV* save_scalar(GV *gv)""AV* save_ary(GV *gv)""HV* save_hash(GV *gv)""void save_item(SV *item)""SV* save_svref(SV **sptr)""void save_aptr(AV **aptr)""void save_hptr(HV **hptr)"
Subroutines
- XSUBs and the Argument Stack
- Autoloading with XSUBs
- Calling Perl Routines from within C Programs
- Putting a C value on Perl stack
- Scratchpads
- Scratchpads and recursion
Memory Allocation
- Allocation
- Reallocation
- Moving
PerlIO
Compiled code
- Code tree
- Examining the tree
- Compile pass 1: check routines
- Compile pass 1a: constant folding
- Compile pass 2: context propagation
- Compile pass 3: peephole optimization
- Pluggable runops
- Compile-time scope hooks
"void bhk_start(pTHX_ int full)""void bhk_pre_end(pTHX_ OP **o)""void bhk_post_end(pTHX_ OP **o)""void bhk_eval(pTHX_ OP *const o)"
Examining internal data structures with the "dump" functions
How multiple interpreters and concurrency are supported
- Background and MULTIPLICITY
- So what happened to dTHR?
- How do I use all this in extensions?
- Should I do anything special if I call perl from multiple threads?
- Future Plans and PERL_IMPLICIT_SYS
Internal Functions
- Formatted Printing of IVs, UVs, and NVs
- Formatted Printing of SVs
- Formatted Printing of Strings
Formatted Printing of "Size_t" and "SSize_t"
Formatted Printing of "Ptrdiff_t", "intmax_t", "short" and other special sizes
Pointer-To-Integer and Integer-To-Pointer
Exception Handling
Source Documentation
Backwards compatibility
Unicode Support ๐
- What is Unicode, anyway?
- How can I recognise a UTF-8 string?
- How does UTF-8 represent Unicode characters?
- How does Perl store UTF-8 strings?
- How do I pass a Perl string to a C library?
- bytes:
0x64 0x78 0x8c - UTF-8:
0x64 0x78 0xc2 0x8c
- 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_namexop_descxop_classOA_BASEOPOA_UNOPOA_BINOPOA_LOGOPOA_LISTOPOA_PMOPOA_SVOPOA_PADOPOA_PVOP_OR_SVOPOA_LOOPOA_COPxop_peepxop_dump
Stacks
- Value Stack
- Mark Stack
- Temporaries Stack
- Save Stack
- Scope Stack
Dynamic Scope and the Context Stack
- Introduction to the context stack
- Pushing contexts
- Popping contexts
- Redoing contexts
Reference-counted argument stack
- Introduction
- Reference counted stack states
- not reference-counted
- fully reference-counted
- partially reference-counted (split)
- Wrapping
- (Re)writing a PP function using the rpp_() API
Slab-based operator allocation
AUTHORS
SEE ALSO
perlcall โ Perl calling conventions from C ๐
calling Perl from C. the whole vibe. let's go ๐ฆ
DESCRIPTION
- An Error Handler
- An Event-Driven Program
THE CALL_ FUNCTIONS
call_sv,call_pv,call_method,call_argv
FLAG VALUES
G_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
- 1. Ignore the problem - Allow only 1 callback
- 2. Create a sequence of callbacks - hard wired limit
- 3. Use a parameter to map to the Perl callback
- Alternate Stack Manipulation
- Creating and Calling an Anonymous Subroutine in C
LIGHTWEIGHT CALLBACKS
SEE ALSO
AUTHOR
DATE
perlmroapi โ Perl method resolution plugin interface ๐ง
plug into method resolution. yes, that's a thing, and yes it slaps ๐
DESCRIPTION
resolvenamelengthkflagshash
Callbacks
Caching
Examples
AUTHORS
perlreapi โ Perl regular expression plugin interface ๐ฅ
regex engines, but make it pluggable. iconic behavior honestly ๐
DESCRIPTION
Callbacks
- comp
"/m"-RXf_PMf_MULTILINE"/s"-RXf_PMf_SINGLELINE"/i"-RXf_PMf_FOLD"/x"-RXf_PMf_EXTENDED"/p"-RXf_PMf_KEEPCOPY- Character set
RXf_SPLITRXf_SKIPWHITERXf_START_ONLYRXf_WHITERXf_NULLRXf_NO_INPLACE_SUBST
- exec
- rx
- sv
- strbeg
- strend
- stringarg
- minend
- data
- flags
- intuit
- checkstr
- free
- Numbered capture callbacks
- Named capture callbacks
- qr_package
- dupe
- op_comp
The REGEXP structure
"engine""mother_re""extflags""minlen""minlenret""gofs""substrs""nparens","logical_nparens""logical_to_parno","parno_to_logical","parno_to_logical_next""lastparen", and"lastcloseparen""intflags""pprivate""offs""RX_PRECOMP""RX_PRELEN""paren_names""substrs""subbeg""sublen""saved_copy""suboffset""subcoffset""RX_WRAPPED""RX_WRAPLEN"RX_REFCNT()
HISTORY
AUTHORS
LICENSE
Compilation
- anchored fixed strings
- floating fixed strings
- minimum and maximum length requirements
- start class
- Beginning/End of line positions
Execution
MISCELLANEOUS
Unicode and Localisation Support
Base Structures
regstclassdatacode_blocksproglenname_list_idxprogram
SEE ALSO
AUTHOR
LICENCE
REFERENCES
perlclassguts โ the internals of how feature 'class' and class syntax works ๐
DESCRIPTION
DATA STORAGE
- Classes
- Fields
- Methods
- Instances
API
- Class Manipulation
- Field Manipulation
- Method Manipulation
- Object Instances
OPCODES
OP_METHSTARTOP_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
Bestie, this is literally the whole index of the public API, all cross-referenced and everything. Every one of these points at its own section "in perlapi":
- "AV Handling" in perlapi, "Callback Functions" in perlapi, "Casting" in perlapi, "Character case changing" in perlapi, "Character classification" in perlapi, "Compiler and Preprocessor information" in perlapi, "Compiler directives" in perlapi, "Compile-time scope hooks" in perlapi, "Concurrency" in perlapi, "COPs and Hint Hashes" in perlapi, "Custom Operators" in perlapi, "CV Handling" in perlapi, "Debugging" in perlapi, "Display functions" in perlapi, "Embedding, Threads, and Interpreter Cloning" in perlapi, "Errno" in perlapi, "Exception Handling (simple) Macros" in perlapi, "Filesystem configuration values" in perlapi, "Floating point" in perlapi, "General Configuration" in perlapi, "Global Variables" in perlapi, "GV Handling and Stashes" in perlapi, "Hook manipulation" in perlapi, "HV Handling" in perlapi, "Input/Output" in perlapi, "Integer" in perlapi, "I/O Formats" in perlapi, "Lexer interface" in perlapi, "Locales" in perlapi, "Magic" in perlapi, "Memory Management" in perlapi, "MRO" in perlapi, "Multicall Functions" in perlapi, "Numeric Functions" in perlapi, "Optrees" in perlapi, "Pack and Unpack" in perlapi, "Pad Data Structures" in perlapi, "Password and Group access" in perlapi, "Paths to system commands" in perlapi, "Prototype information" in perlapi, "Reference-counted stack manipulation" in perlapi, "REGEXP Functions" in perlapi, "Reports and Formats" in perlapi, "Signals" in perlapi, "Site configuration" in perlapi, "Sockets configuration values" in perlapi, "Source Filters" in perlapi, "Stack Manipulation Macros" in perlapi, "String Handling" in perlapi, "SV Flags" in perlapi, "SV Handling" in perlapi, "Tainting" in perlapi, "Time" in perlapi, "Typedef names" in perlapi, "Unicode Support" in perlapi, "Utility Functions" in perlapi, "Versioning" in perlapi, "Warning and Dieing" in perlapi, "XS" in perlapi, "Undocumented elements" in perlapi
AV Handling ๐
AV,av_clear,av_count,av_create_and_push,av_create_and_unshift_one,av_delete,av_exists,av_extend,av_fetch,av_fill,av_len*,av_make,av_pop,av_push,av_push_simple,av_shift,av_store,av_top_index,av_tindex,AvFILL,av_len,av_undef,av_unshift,AvALLOC,AvARRAY,AvFILL*,AvREFCNT_inc,AvREFCNT_inc_simple,AvREFCNT_inc_simple_NN,get_av,newAV,newAV_mortal,newAV_alloc_x,newAV_alloc_xz,newAVform,newAV_mortalform,newAV_alloc_xform,newAV_alloc_xzform,newAVav,newAVhv,Nullav
Callback Functions ๐
call_argv,call_method,call_pv,call_sv,DESTRUCTORFUNC_NOCONTEXT_t,DESTRUCTORFUNC_t,ENTER,ENTER_with_name,eval_pv,eval_sv,FREETMPS,G_DISCARD,G_EVAL,G_KEEPERR,G_LIST,G_NOARGS,G_SCALAR,G_VOID,GIMME,GIMME_V,is_lvalue_sub,LEAVE,LEAVE_with_name,mortal_destructor_sv,MORTALDESTRUCTOR_SV,MORTALSVFUNC_X,PL_errgv,save_aelem,save_aelem_flags,save_aptr,save_ary,save_hash,save_helem,save_helem_flags,save_hptr,save_item,save_scalar,save_svref,SAVEBOOL,SAVEDELETE,SAVEDESTRUCTOR,SAVEDESTRUCTOR_X,SAVEFREEOP,SAVEFREEPV,SAVEFREERCPV,SAVEFREESV,SAVEGENERICSV,SAVEINT,SAVEIV,SAVEI8,SAVEI16,SAVEI32,SAVEMORTALIZESV,SAVEPPTR,SAVERCPV,SAVESPTR,SAVESTACK_POS,SAVESTRLEN,SAVETMPS
Casting ๐
cBOOL,I_V,I_32,INT2PTR,PTRV,PTR2IV,PTR2nat,PTR2NV,PTR2ul,PTR2UV,U_V,U_32
Character case changing ๐ฆ
toFOLD,toFOLD_A,toFOLD_utf8,toFOLD_utf8_safe,toFOLD_uvchr,toLOWER,toLOWER_A,toLOWER_LATIN1,toLOWER_LC,toLOWER_L1,toLOWER_utf8,toLOWER_utf8_safe,toLOWER_uvchrtoTITLE,toTITLE_A,toTITLE_utf8,toTITLE_utf8_safe,toTITLE_uvchr,toUPPER,toUPPER_A,toUPPER_utf8,toUPPER_utf8_safe,toUPPER_uvchr
Character classification ๐
Ok this one is long bestie, but every single one matters, no skipping:
isALNUM,isALNUM_A,isALNUM_LC,isALNUM_LC_uvchr,isALNUMC,isALNUMC_A,isALNUMC_LC,isALNUMC_LC_uvchr,isALNUMC_L1,isALPHA,isALPHA_A,isALPHA_LC,isALPHA_LC_utf8_safe,isALPHA_LC_uvchr,isALPHA_L1,isALPHA_utf8,isALPHA_utf8_safe,isALPHA_uvchrisALPHANUMERIC,isALPHANUMERIC_A,isALPHANUMERIC_LC,isALPHANUMERIC_LC_utf8_safe,isALPHANUMERIC_LC_uvchr,isALPHANUMERIC_L1,isALPHANUMERIC_utf8,isALPHANUMERIC_utf8_safe,isALPHANUMERIC_uvchrisASCII,isASCII_A,isASCII_LC,isASCII_LC_utf8_safe,isASCII_LC_uvchr,isASCII_L1,isASCII_utf8,isASCII_utf8_safe,isASCII_uvchrisBLANK,isBLANK_A,isBLANK_LC,isBLANK_LC_utf8_safe,isBLANK_LC_uvchr,isBLANK_L1,isBLANK_utf8,isBLANK_utf8_safe,isBLANK_uvchrisCNTRL,isCNTRL_A,isCNTRL_LC,isCNTRL_LC_utf8_safe,isCNTRL_LC_uvchr,isCNTRL_L1,isCNTRL_utf8,isCNTRL_utf8_safe,isCNTRL_uvchrisDIGIT,isDIGIT_A,isDIGIT_LC,isDIGIT_LC_utf8_safe,isDIGIT_LC_uvchr,isDIGIT_L1,isDIGIT_utf8,isDIGIT_utf8_safe,isDIGIT_uvchrisGRAPH,isGRAPH_A,isGRAPH_LC,isGRAPH_LC_utf8_safe,isGRAPH_LC_uvchr,isGRAPH_L1,isGRAPH_utf8,isGRAPH_utf8_safe,isGRAPH_uvchrisIDCONT,isIDCONT_A,isIDCONT_LC,isIDCONT_LC_utf8_safe,isIDCONT_LC_uvchr,isIDCONT_L1,isIDCONT_utf8,isIDCONT_utf8_safe,isIDCONT_uvchrisIDFIRST,isIDFIRST_A,isIDFIRST_LC,isIDFIRST_LC_utf8_safe,isIDFIRST_LC_uvchr,isIDFIRST_L1,isIDFIRST_utf8,isIDFIRST_utf8_safe,isIDFIRST_uvchrisLOWER,isLOWER_A,isLOWER_LC,isLOWER_LC_utf8_safe,isLOWER_LC_uvchr,isLOWER_L1,isLOWER_utf8,isLOWER_utf8_safe,isLOWER_uvchrisOCTAL,isOCTAL_A,isOCTAL_L1,isPRINT,isPRINT_A,isPRINT_LC,isPRINT_LC_utf8_safe,isPRINT_LC_uvchr,isPRINT_L1,isPRINT_utf8,isPRINT_utf8_safe,isPRINT_uvchrisPSXSPC,isPSXSPC_A,isPSXSPC_LC,isPSXSPC_LC_utf8_safe,isPSXSPC_LC_uvchr,isPSXSPC_L1,isPSXSPC_utf8,isPSXSPC_utf8_safe,isPSXSPC_uvchrisPUNCT,isPUNCT_A,isPUNCT_LC,isPUNCT_LC_utf8_safe,isPUNCT_LC_uvchr,isPUNCT_L1,isPUNCT_utf8,isPUNCT_utf8_safe,isPUNCT_uvchrisSPACE,isSPACE_A,isSPACE_LC,isSPACE_LC_utf8_safe,isSPACE_LC_uvchr,isSPACE_L1,isSPACE_utf8,isSPACE_utf8_safe,isSPACE_uvchrisUPPER,isUPPER_A,isUPPER_LC,isUPPER_LC_utf8_safe,isUPPER_LC_uvchr,isUPPER_L1,isUPPER_utf8,isUPPER_utf8_safe,isUPPER_uvchrisWORDCHAR,isWORDCHAR_A,isWORDCHAR_LC,isWORDCHAR_LC_utf8_safe,isWORDCHAR_LC_uvchr,isWORDCHAR_L1,isWORDCHAR_utf8,isWORDCHAR_utf8_safe,isWORDCHAR_uvchrisXDIGIT,isXDIGIT_A,isXDIGIT_LC,isXDIGIT_LC_utf8_safe,isXDIGIT_LC_uvchr,isXDIGIT_L1,isXDIGIT_utf8,isXDIGIT_utf8_safe,isXDIGIT_uvchr
Compiler and Preprocessor information ๐ง
CPPLAST,CPPMINUS,CPPRUN,CPPSTDIN,HAS_BUILTIN_ADD_OVERFLOW,HAS_BUILTIN_CHOOSE_EXPR,HAS_BUILTIN_EXPECT,HAS_BUILTIN_MUL_OVERFLOW,HAS_BUILTIN_SUB_OVERFLOW,HAS_C99_VARIADIC_MACROS,HAS_STATIC_INLINE,HASATTRIBUTE_ALWAYS_INLINE,HASATTRIBUTE_DEPRECATED,HASATTRIBUTE_FORMAT,HASATTRIBUTE_NONNULL,HASATTRIBUTE_NORETURN,HASATTRIBUTE_PURE,HASATTRIBUTE_UNUSED,HASATTRIBUTE_VISIBILITY,HASATTRIBUTE_WARN_UNUSED_RESULT,MEM_ALIGNBYTES,PERL_STATIC_INLINE,PERL_THREAD_LOCAL,U32_ALIGNMENT_REQUIRED
Compiler directives ๐
__ASSERT_,ASSUME,dNOOP,END_EXTERN_C,EXTERN_C,LIKELY,NOOP,PERL_UNUSED_ARG,PERL_UNUSED_CONTEXT,PERL_UNUSED_DECL,PERL_UNUSED_RESULT,PERL_UNUSED_VAR,START_EXTERN_C,STATIC,STMT_START,STMT_END,UNLIKELY
Compile-time scope hooks ๐
BhkDISABLE,BhkENABLE,BhkENTRY_set,blockhook_register
Concurrency ๐ฅ
aTHX,aTHX_,CPERLscope,dTHR,dTHX,dTHXa,dTHXoa,dVAR,GETENV_PRESERVES_OTHER_THREAD,HAS_PTHREAD_ATFORK,HAS_PTHREAD_ATTR_SETSCOPE,HAS_PTHREAD_YIELD,HAS_SCHED_YIELD,I_MACH_CTHREADS,I_PTHREAD,MULTIPLICITY,OLD_PTHREAD_CREATE_JOINABLE,OLD_PTHREADS_API,PERL_IMPLICIT_CONTEXT,PERL_NO_GET_CONTEXT,pTHX,pTHX_,SCHED_YIELD
COPs and Hint Hashes ๐
cop_fetch_label,cop_hints_exists_pv,cop_hints_exists_pvn,cop_hints_exists_pvs,cop_hints_exists_svcop_hints_fetch_pv,cop_hints_fetch_pvn,cop_hints_fetch_pvs,cop_hints_fetch_sv
...and bestie the roll call literally just keeps going ๐ญ no cap, here's the tail end of that list:
cop_hints_2hvcop_store_labelCopFILECopFILE_copyCopFILE_freeCopFILE_LENCopFILE_setCopFILE_setnCopFILEAVCopFILEAVnCopFILEGVCopFILEGV_setCopFILESVcophh_copycophh_delete_pvcophh_delete_pvncophh_delete_pvscophh_delete_svcophh_exists_pvncophh_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 โจ
making your own little operators, iconic behaviour honestly ๐ here's who's on the list:
custom_op_registerPerl_custom_op_xopXopDISABLEXopENABLEXopENTRYXopENTRY_setXopENTRYCUSTOMXopFLAGS
โจ CV Handling โจ
the CV squad, main character energy fr ๐ฆ
caller_cxCvDEPTHCvGVCvREFCNT_incCvREFCNT_inc_simpleCvREFCNT_inc_simple_NNCvSTASHfind_runcvget_cvget_cvn_flagsget_cvsNullcv
โจ Debugging โจ
when something is lowkey broken and you need the receipts ๐ this whole section is your forensics kit:
av_dumpdebdeb_nocontextvdebdebstackdump_alldump_c_backtracedump_evaldump_formdump_packsubsdump_subget_c_backtrace_dumpgv_dumpHAS_BACKTRACEhv_dumpmagic_dumpop_classop_dumpopdump_printfPL_opPL_runopsPL_sv_serialpmop_dumpsv_dumpsv_dump_depthvdeb*
โจ Display functions โจ
the pretty-printing besties โจ say hi:
formform_nocontextvformmessmess_nocontextvmessmess_svpv_displaypv_escapepv_prettyvform*vmess*
โจ Embedding, Threads, and Interpreter Cloning โจ
okay this one is the big one, it's giving whole-interpreter energy ๐ซถ interpreter girlies stay winning:
call_atexitcv_clonecv_namecv_undeffind_rundefsvget_op_descsget_op_namesHAS_SKIP_LOCALE_INITintro_myload_moduleload_module_nocontextmy_exitmy_failure_exitnewPADNAMELISTnewPADNAMEouternewPADNAMEpvnnothreadhookpad_add_anonpad_add_name_pvpad_add_name_pvnpad_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- 0 - none
- 1 - full
- 2 or greater - full with checks
ptr_table_fetchptr_table_freeptr_table_newptr_table_splitptr_table_storerequire_pvvload_module
โจ Errno โจ
just the one entry, and she ate ๐
sv_string_from_errnum
โจ Exception Handling (simple) Macros โจ
catch it or yeet it, no in-between ๐ญ
dXCPTJMPENV_JUMPJMPENV_PUSHPL_restartopXCPT_CATCHXCPT_RETHROWXCPT_TRY_ENDXCPT_TRY_START
โจ Filesystem configuration values โจ
a whole closet of filesystem config symbols, obsessed with the sheer volume fr fr ๐
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!! numbers with โจvibesโจ โ brace yourself, this list is long ๐ญ
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 everything-else pile, we love a miscellaneous era ๐
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 ๐
and yeah, that's a whole separate index of the <code>HAS_foo</code> crew โ she gets her own list ๐
๐ List of #include needed symbols ๐
plus a dedicated list of the #include symbols you need, because of course she does โจ
โจ Global Variables โจ
the globals, the moment, the icons ๐
PL_checkPL_infix_pluginPL_keyword_pluginPL_phase
โจ GV Handling and Stashes โจ
glob and stash central, this one is packed bestie ๐ญ
amagic_callAMGf_noleftAMGf_norightAMGf_unaryAMGf_assignamagic_deref_callgv_add_by_typeGv_AMupdateโ 1 on success and there is some overload, 0 if there is no overload, -1 if some error occurred and it couldn't croak (because "destructing" is true)gv_autoload_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_autoload- If
-1 - If
0 gv_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 โจ
hooks! little grabby bits โจ
rcpv_copyrcpv_freercpv_newwrap_op_checker
โจ HV Handling โจ
hash values, the whole dang family, and yes we are listing 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_fetchs*hv_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 we are still going bestie, this index literally does not stop ๐ โจ
๐ฆ Input/Output ๐ฆ
okay bestie, buckle UP, because this is the entire I/O corner of perlapi and it is not short ๐ every single name, flag and macro, right here, no skips, no "etc." โ periodt.
- the filehandle-struct squad:
do_close,IoDIRP,IOf_FLUSH,IOf_UNTAINT,IoFLAGS,IoIFP,IoOFP,IoTYPE,my_chsize,my_dirfd,my_pclose,my_popen,newIO,PERL_FLUSHALL_FOR_CHILD - the layer gang:
PerlIO_apply_layers,PerlIO_binmode,PerlIO_canset_cnt,PerlIO_clearerr,PerlIO_close,PerlIO_debug,PerlIO_eof,PerlIO_error,PerlIO_exportFILE,PerlIO_fast_gets,PerlIO_fdopen,PerlIO_fileno,PerlIO_fill,PerlIO_findFILE,PerlIO_flush,PerlIO_get_base,PerlIO_get_bufsiz,PerlIO_get_cnt,PerlIO_get_ptr,PerlIO_getc,PerlIO_getpos,PerlIO_has_base,PerlIO_has_cntptr,PerlIO_importFILE,PerlIO_open,PerlIO_printf,PerlIO_putc,PerlIO_puts,PerlIO_read,PerlIO_releaseFILE,PerlIO_reopen,PerlIO_rewind,PerlIO_seek,PerlIO_set_cnt,PerlIO_set_ptrcnt,PerlIO_setlinebuf,PerlIO_setpos,PerlIO_stderr,PerlIO_stdin,PerlIO_stdout,PerlIO_stdoutf,PerlIO_tell,PerlIO_ungetc,PerlIO_unread,PerlIO_vprintf,PerlIO_write - the flag girlies:
PERLIO_F_APPEND,PERLIO_F_CANREAD,PERLIO_F_CANWRITE,PERLIO_F_CRLF,PERLIO_F_EOF,PERLIO_F_ERROR,PERLIO_F_FASTGETS,PERLIO_F_LINEBUF,PERLIO_F_OPEN,PERLIO_F_RDBUF,PERLIO_F_TEMP,PERLIO_F_TRUNCATE,PERLIO_F_UNBUF,PERLIO_F_UTF8,PERLIO_F_WRBUF - and the starred reprises, because yes they come around twice:
PerlIO_fast_gets*,PerlIO_fdopen*,PerlIO_fileno*,PerlIO_fill*,PerlIO_findFILE*,PerlIO_flush*,PERLIO_FUNCS_CAST,PERLIO_FUNCS_DECL,PerlIO_get_base*,PerlIO_get_bufsiz*,PerlIO_get_cnt*,PerlIO_get_ptr*,PerlIO_getc*,PerlIO_getpos*,PerlIO_has_base*,PerlIO_has_cntptr*,PerlIO_importFILE* - the K-constants + friends:
PERLIO_K_BUFFERED,PERLIO_K_CANCRLF,PERLIO_K_FASTGETS,PERLIO_K_MULTIARG,PERLIO_K_RAW,PERLIO_NOT_STDIO - more starred faves:
PerlIO_open*,PerlIO_printf*,PerlIO_putc*,PerlIO_puts*,PerlIO_read*,PerlIO_releaseFILE*,PerlIO_reopen*,PerlIO_rewind*,PerlIO_seek*,PerlIO_set_cnt*,PerlIO_set_ptrcnt*,PerlIO_setlinebuf*,PerlIO_setpos*,PerlIO_stderr*,PerlIO_stdin*,PerlIO_stdout*,PerlIO_stdoutf*,PerlIO_tell*,PerlIO_ungetc*,PerlIO_unread*,PerlIO_vprintf*,PerlIO_write* - and to close the section out:
PL_maxsysfd,repeatcpy,SvVSTRING,USE_STDIO
๐ข Integer ๐ข
the whole numeric-type menu, bestie. sizes, maxes, mins, typedefs, the works. โจ
CASTI32,HAS_INT64_T,HAS_LONG_LONG,HAS_QUAD,INTMAX_C,INTSIZE,INT16_C,INT32_C,INT64_C,IV- the I-family:
I8,I16,I32,I64,IV_MAX,IV_MIN,IVSIZE,IVTYPE - starred/typed I-crew:
I8*,I8SIZE,I8TYPE,I16*,I16SIZE,I16TYPE,I32*,I32df,I32SIZE,I32TYPE,I64*,I64SIZE,I64TYPE line_t,LONGLONGSIZE,LONGSIZE,memzero,PERL_INT_FAST8_T,PERL_INT_FAST16_T,PERL_UINT_FAST8_T,PERL_UINT_FAST16_T- the limit list, all of it:
PERL_INT_MAX,PERL_INT_MIN,PERL_LONG_MAX,PERL_LONG_MIN,PERL_QUAD_MAX,PERL_QUAD_MIN,PERL_SHORT_MAX,PERL_SHORT_MIN,PERL_UCHAR_MAX,PERL_UCHAR_MIN,PERL_UINT_MAX,PERL_UINT_MIN,PERL_ULONG_MAX,PERL_ULONG_MIN,PERL_UQUAD_MAX,PERL_UQUAD_MIN,PERL_USHORT_MAX,PERL_USHORT_MIN - and the fast-uint reprises:
PERL_UINT_FAST8_T*,PERL_UINT_FAST16_T*,SHORTSIZE,UINTMAX_C,UINT16_C,UINT32_C,UINT64_C - the U-family, unsigned edition:
UV,U8,U16,U32,U64,UV_MAX,UV_MIN,UVSIZE,UVTYPE - starred/typed U-crew:
U8*,U8SIZE,U8TYPE,U16*,U16SIZE,U16TYPE,U32*,U32of,U32SIZE,U32TYPE,U32uf,U32Xf,U32xf,U64*,U64SIZE,U64TYPE - and finally
WIDEST_UTYPE, the widest of them all, iconic ๐
๐จ๏ธ I/O Formats ๐จ๏ธ
printf/sprintf format macros so your C and your Perl agree on what a thing even is when you print it. ๐ธ
HvNAMEf,HvNAMEf_QUOTEDPREFIX,IVdf,NVef,NVff,NVgf- the long-double trio + scanner:
PERL_PRIeldbl,PERL_PRIfldbl,PERL_PRIgldbl,PERL_SCNfldbl PRINTF_FORMAT_NULL_OK,SVf,SVf_QUOTEDPREFIX,SVfARG,UTF8f,UTF8f_QUOTEDPREFIX,UTF8fARG- and the UV set:
UVf,UVof,UVuf,UVXf,UVxfโจ
๐ง Lexer interface ๐ง
the lexer/parser backend. this is where Perl's own guts read your source code character by character, lowkey iconic ๐ซถ
BHK,lex_bufutf8,lex_discard_to,lex_grow_linestr,lex_next_chunk,lex_peek_unichar,lex_read_space,lex_read_to,lex_read_unichar,lex_start- the stuffing crew:
lex_stuff_pv,lex_stuff_pvn,lex_stuff_pvs,lex_stuff_sv,lex_unstuff - parse this:
parse_arithexpr,parse_barestmt,parse_block,parse_fullexpr,parse_fullstmt,parse_label,parse_listexpr,parse_stmtseq,parse_subsignature,parse_termexpr PL_parser, plus its fields:PL_parser->bufend,PL_parser->bufptr,PL_parser->linestart,PL_parser->linestrresume_compcv_and_save,resume_compcv_final,suspend_compcv- identifier checks:
valid_identifier_pve,valid_identifier_pvn,valid_identifier_sv - plugin hooks:
wrap_infix_plugin,wrap_keyword_plugin๐
๐ Locales ๐
locale stuff, aka the "wait why is my number formatted like that" section. every macro, every helper, every tiny letter, all of it. ๐ญ
DECLARATION_FOR_LC_NUMERIC_MANIPULATION,HAS_DUPLOCALE,HAS_FREELOCALE,HAS_LC_MONETARY_2008,HAS_LOCALECONV,HAS_LOCALECONV_L,HAS_NEWLOCALE,HAS_NL_LANGINFO,HAS_NL_LANGINFO_L,HAS_QUERYLOCALE,HAS_SETLOCALE,HAS_SETLOCALE_R,HAS_USELOCALEI_LANGINFO,I_LOCALE,I_XLOCALE,IN_LOCALE,IN_LOCALE_COMPILETIME,IN_LOCALE_RUNTIME,NEED_XLOCALE_HPerl_langinfo*,Perl_langinfo8*,PERL_LC_ALL_CATEGORY_POSITIONS_INIT,PERL_LC_ALL_SEPARATOR,PERL_LC_ALL_USES_NAME_VALUE_PAIRS,Perl_localeconv,Perl_setlocaleRESTORE_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- and thenโฆ yeah:
a,b,c,d,eโ literally just the letters, that's what the index says, I don't make the rules ๐ switch_to_global_locale,POSIX::localeconv,I18N::Langinfo, items"CRNCYSTR"and"THOUSEP","sv_langinfo"in perlapi, items"CRNCYSTR"and"THOUSEP"sync_locale,WITH_LC_NUMERIC_SET_TO_NEEDED,WITH_LC_NUMERIC_SET_TO_NEEDED_IN๐
๐ฎ Magic ๐ฎ
magic!! the invisible little gremlins that live inside your SVs and do things when you touch them. absolutely main character energy. ๐
mg_clear,mg_copy,mg_find,mg_findext,mg_free,mg_free_type,mg_freeext,mg_get,mg_magical,mg_set- the MGf flags + table:
MGf_COPY,MGf_DUP,MGf_LOCAL,MGVTBL - the whole PERL_MAGIC catalogue, in order:
PERL_MAGIC_arylen,PERL_MAGIC_arylen_p,PERL_MAGIC_backref,PERL_MAGIC_bm,PERL_MAGIC_checkcall,PERL_MAGIC_collxfrm,PERL_MAGIC_dbfile,PERL_MAGIC_dbline,PERL_MAGIC_debugvar,PERL_MAGIC_defelem,PERL_MAGIC_destruct,PERL_MAGIC_env,PERL_MAGIC_envelem,PERL_MAGIC_ext,PERL_MAGIC_extvalue,PERL_MAGIC_fm,PERL_MAGIC_hints,PERL_MAGIC_hintselem,PERL_MAGIC_hook,PERL_MAGIC_hookelem,PERL_MAGIC_isa,PERL_MAGIC_isaelem,PERL_MAGIC_lvref,PERL_MAGIC_nkeys,PERL_MAGIC_nonelem,PERL_MAGIC_overload_table,PERL_MAGIC_pos,PERL_MAGIC_qr,PERL_MAGIC_regdata,PERL_MAGIC_regdatum,PERL_MAGIC_regex_global,PERL_MAGIC_rhash,PERL_MAGIC_shared,PERL_MAGIC_shared_scalar,PERL_MAGIC_sig,PERL_MAGIC_sigelem,PERL_MAGIC_substr,PERL_MAGIC_sv,PERL_MAGIC_symtab,PERL_MAGIC_taint,PERL_MAGIC_tied,PERL_MAGIC_tiedelem,PERL_MAGIC_tiedscalar,PERL_MAGIC_utf8,PERL_MAGIC_uvar,PERL_MAGIC_uvar_elem,PERL_MAGIC_vec,PERL_MAGIC_vstring - and
SvTIED_objto finish it off ๐
๐ง Memory Management ๐ง
allocating and freeing, the eternal cycle. here's every macro and helper in the section, fr fr.
dump_mstats,HAS_MALLOC_GOOD_SIZE,HAS_MALLOC_SIZE,HASATTRIBUTE_MALLOC,I_MALLOCMALLOC,MYMALLOC- the New-squad:
Newx,safemalloc,Newxc,Newxz,safecalloc,PERL_MALLOC_WRAP - renew + free:
Renew,saferealloc,Renewc,safecalloc*,Safefree,safemalloc*,saferealloc* - the sys variants:
safesyscalloc,safesysfree,safesysmalloc,safesysreallocโจ
๐ MRO ๐
method resolution order โ aka "which parent's method even wins here". the girlies that keep inheritance from descending into chaos. ๐ซถ
HvMROMETA,mro_get_from_name,mro_get_linear_isa,MRO_GET_PRIVATE_DATA,mro_method_changed_in,mro_register,mro_set_mro,mro_set_private_data
๐ Multicall Functions ๐
calling multiple subs off one stack setup. here's the four, bestie:
dMULTICALL,MULTICALL,POP_MULTICALL,PUSH_MULTICALL
๐งฎ Numeric Functions ๐งฎ
the whole math + number-parsing arsenal. every trig girlie, every base-grokker, every strtod variant. ๐
- the grokkers:
Atof*,grok_atoUV,grok_bin,grok_hex,grok_infnan,grok_number,grok_number_flags,grok_numeric_radix,GROK_NUMERIC_RADIX,grok_oct,isinfnan - atof/strtod set:
my_atof,Atof,my_strtod,Strtod PERL_ABS,Perl_acos,Perl_asin,Perl_atan,Perl_atan2,Perl_ceil,Perl_cos,Perl_cosh,Perl_exp,Perl_floor,Perl_fmod,Perl_frexp,Perl_isfinite,Perl_isinf,Perl_isnan,Perl_ldexp,Perl_log,Perl_log10,Perl_modf,Perl_pow,Perl_sin,Perl_sinh,Perl_sqrt,Perl_tan,Perl_tanhPerl_signbit, and the starred reprises:Perl_sin*,Perl_sinh*,Perl_sqrt*,Perl_tan*,Perl_tanh*PL_hexdigit,READ_XDIGIT,scan_bin,scan_hex,scan_octStrtod*,Strtol,Strtoul๐ฅ
๐ณ Optrees ๐ณ
optree construction, manipulation, and the whole OP-type ecosystem. this is the deep lore section, iykyk. ๐ฒ
alloccopstash,BINOP,block_end,block_start- call-checker crew:
ck_entersub_args_list,ck_entersub_args_proto,ck_entersub_args_proto_or_list,cv_const_sv,cv_get_call_checker,cv_get_call_checker_flags,cv_set_call_checker,cv_set_call_checker_flags finalize_optree,forbid_outofblock_ops,LINKLIST,LISTOP,LOGOP,LOOP- the new*-list, part one:
newANONATTRSUB,newANONHASH,newANONLIST,newANONSUB,newARGDEFELEMOP,newASSIGNOP,newATTRSUB,newAVREF,newBINOP,newCONDOP,newCONSTSUB,newCONSTSUB_flags,newCVREF,newDEFEROP,newDEFSVOP,newFOROP,newGIVENOP,newGVOP,newGVREF,newHVREF - the new*-list, part two:
newLISTOP,newLISTOPn,newLOGOP,newLOOPEX,newLOOPOP,newMETHOP,newMETHOP_named,newNULLLIST,newOP,newPADOP,newPMOP,newPVOP,newRANGE,newSLICEOP,newSTATEOP,newSUB,newSVOP,newSVREF,newTRYCATCHOP,newUNOP,newUNOP_AUX,newWHENOP,newWHILEOP,newXS - the OA_* flags:
OA_BASEOP,OA_BINOP,OA_COP,OA_LISTOP,OA_LOGOP,OA_LOOP,OA_PADOP,OA_PMOP,OA_PVOP_OR_SVOP,OA_SVOP,OA_UNOP OP,op_append_elem,op_append_list,OP_CLASS,op_contextualize,op_convert_list,OP_DESC,op_force_list,op_free,op_linklist,op_lvalue,OP_NAME,op_null,op_parent,op_prepend_elem,op_scope,op_sibling_splice,OP_TYPE_IS,OP_TYPE_IS_OR_WAS,op_wrap_finally,opcode- sibling macros:
OpHAS_SIBLING,OpLASTSIB_set,OpMAYBESIB_set,OpMORESIB_set,OpSIBLING optimize_optree,peep_t,Perl_cpeep_t,PL_opfreehook,PL_peepp,PL_rpeepp,PMOP,rv2cv_op_cv,UNOP,XOP๐
๐ฆ Pack and Unpack ๐ฆ
just two, but they do a lot:
packlist,unpackstring
โจ Pad Data Structures โจ
okay bestie, these are the pad data structure things you're gonna wanna know about, periodt ๐
: CvPADLIST, pad_add_name_pvs, pad_new, PadARRAY, PadlistARRAY, PadlistMAX, PadlistNAMES, PadlistNAMESARRAY, PadlistNAMESMAX, PadlistREFCNT, PadMAX, PadnameLEN, PadnamelistARRAY, PadnamelistMAX, PadnamelistREFCNT, PadnamelistREFCNT_dec, PadnamePV, PadnameREFCNT, PadnameREFCNT_dec, PadnameREFCNT_inc, PadnameSV, PadnameUTF8, PL_comppad, PL_comppad_name, PL_curpad, SVs_PADMY, SVs_PADTMP.
๐ Password and Group access ๐
bestie, these are the password and group access vibes, no cap: GRPASSWD, HAS_ENDGRENT, HAS_ENDGRENT_R, HAS_ENDPWENT, HAS_ENDPWENT_R, HAS_GETGRENT, HAS_GETGRENT_R, HAS_GETPWENT, HAS_GETPWENT_R, HAS_SETGRENT, HAS_SETGRENT_R, HAS_SETPWENT, HAS_SETPWENT_R, PWAGE, PWCHANGE, PWCLASS, PWCOMMENT, PWEXPIRE, PWGECOS, PWPASSWD, PWQUOTA.
๐ฃ๏ธ Paths to system commands ๐ฃ๏ธ
okay so these are the paths to system commands, lowkey important: CSH, LOC_SED, SH_PATH.
๐งฌ Prototype information ๐งฌ
this list is giving big brain energy, fr fr: CRYPT_R_PROTO, CTERMID_R_PROTO, DRAND48_R_PROTO, ENDGRENT_R_PROTO, ENDHOSTENT_R_PROTO, ENDNETENT_R_PROTO, ENDPROTOENT_R_PROTO, ENDPWENT_R_PROTO, ENDSERVENT_R_PROTO, GDBM_NDBM_H_USES_PROTOTYPES, GDBMNDBM_H_USES_PROTOTYPES, GETGRENT_R_PROTO, GETGRGID_R_PROTO, GETGRNAM_R_PROTO, GETHOSTBYADDR_R_PROTO, GETHOSTBYNAME_R_PROTO, GETHOSTENT_R_PROTO, GETLOGIN_R_PROTO, GETNETBYADDR_R_PROTO, GETNETBYNAME_R_PROTO, GETNETENT_R_PROTO, GETPROTOBYNAME_R_PROTO, GETPROTOBYNUMBER_R_PROTO, GETPROTOENT_R_PROTO, GETPWENT_R_PROTO, GETPWNAM_R_PROTO, GETPWUID_R_PROTO, GETSERVBYNAME_R_PROTO, GETSERVBYPORT_R_PROTO, GETSERVENT_R_PROTO, GETSPNAM_R_PROTO, HAS_DBMINIT_PROTO, HAS_DRAND48_PROTO, HAS_FLOCK_PROTO, HAS_GETHOST_PROTOS, HAS_GETNET_PROTOS, HAS_GETPROTO_PROTOS, HAS_GETSERV_PROTOS, HAS_MODFL_PROTO, HAS_SBRK_PROTO, HAS_SETRESGID_PROTO, HAS_SETRESUID_PROTO, HAS_SHMAT_PROTOTYPE, HAS_SOCKATMARK_PROTO, HAS_SYSCALL_PROTO, HAS_TELLDIR_PROTO, NDBM_H_USES_PROTOTYPES, RANDOM_R_PROTO, READDIR_R_PROTO, SETGRENT_R_PROTO, SETHOSTENT_R_PROTO, SETLOCALE_R_PROTO, SETNETENT_R_PROTO, SETPROTOENT_R_PROTO, SETPWENT_R_PROTO, SETSERVENT_R_PROTO, SRANDOM_R_PROTO, SRAND48_R_PROTO, STRERROR_R_PROTO, TMPNAM_R_PROTO, TTYNAME_R_PROTO.
๐งต Reference-counted stack manipulation ๐งต
okay bestie, this is the reference-counted stack manipulation squad, and yes it's a lot, but you got this ๐ช: rpp_context, rpp_extend, rpp_invoke_xs, rpp_is_lone, rpp_pop_1_norc, rpp_popfree_to, rpp_popfree_to_NN, rpp_popfree_1, rpp_popfree_1_NN, rpp_popfree_2, rpp_popfree_2_NN, rpp_push_1, rpp_push_IMM, rpp_push_2, rpp_xpush_1, rpp_xpush_IMM, rpp_xpush_2, rpp_push_1_norc, rpp_push_2*, rpp_replace_at, rpp_replace_at_NN, rpp_replace_at_norc, rpp_replace_at_norc_NN, rpp_replace_1_1, rpp_replace_1_1_NN, rpp_replace_1_IMM_NN, rpp_replace_2_1, rpp_replace_2_1_NN, rpp_replace_2_IMM_NN, rpp_stack_is_rc, rpp_try_AMAGIC_1, rpp_try_AMAGIC_2, rpp_xpush_IMM*, rpp_xpush_1*, rpp_xpush_2*, XSPP_wrapped.
๐งฉ REGEXP Functions ๐งฉ
these regexp functions are iconic, periodt: pregcomp, pregexec, re_compile, re_dup_guts, REGEX_LOCALE_CHARSET, REGEXP, regexp, regexp_engine, regexp_paren_pair, regmatch_info, REXEC_COPY_SKIP_POST, REXEC_COPY_SKIP_PRE, REXEC_COPY_STR, RX_BUFF_IDX_CARET_FULLMATCH, RX_BUFF_IDX_CARET_POSTMATCH, RX_BUFF_IDX_CARET_PREMATCH, RX_BUFF_IDX_FULLMATCH, RX_BUFF_IDX_POSTMATCH, RX_BUFF_IDX_PREMATCH, RX_MATCH_COPIED, RXapif_ALL, RXapif_CLEAR, RXapif_DELETE, RXapif_EXISTS, RXapif_FETCH, RXapif_FIRSTKEY, RXapif_NEXTKEY, RXapif_ONE, RXapif_REGNAME, RXapif_REGNAMES, RXapif_REGNAMES_COUNT, RXapif_SCALAR, RXapif_STORE, RXf_NO_INPLACE_SUBST, RXf_NULL, RXf_SKIPWHITE, RXf_SPLIT, RXf_START_ONLY, RXf_WHITE, RXf_PMf_EXTENDED, RXf_PMf_FOLD, RXf_PMf_KEEPCOPY, RXf_PMf_MULTILINE, RXf_PMf_SINGLELINE, RXf_SKIPWHITE*, RXf_SPLIT*, RXf_START_ONLY*, RXf_WHITE*, struct regexp, SV_SAVED_COPY, SvRX, SvRXOK.
๐ Reports and Formats ๐
here's the reports and formats crew: IoBOTTOM_GV, IoBOTTOM_NAME, IoFMT_GV, IoFMT_NAME, IoLINES, IoLINES_LEFT, IoPAGE, IoPAGE_LEN, IoTOP_GV, IoTOP_NAME.
๐จ Signals ๐จ
signals, bestie, they're giving drama: HAS_SIGINFO_SI_ADDR, HAS_SIGINFO_SI_BAND, HAS_SIGINFO_SI_ERRNO, HAS_SIGINFO_SI_PID, HAS_SIGINFO_SI_STATUS, HAS_SIGINFO_SI_UID, HAS_SIGINFO_SI_VALUE, PERL_SIGNALS_UNSAFE_FLAG, rsignal, rsignal_state, SIG_NAME, SIG_NUM, SIG_SIZE, Sigjmp_buf, Siglongjmp, Sigsetjmp, whichsig, whichsig_pv, whichsig_pvn, whichsig_sv.
โ๏ธ Site configuration โ๏ธ
site configuration, the main character energy of setup: ARCHLIB, ARCHLIB_EXP, ARCHNAME, BIN, BIN_EXP, INSTALL_USR_BIN_PERL, MULTIARCH, PERL_INC_VERSION_LIST, PERL_OTHERLIBDIRS, PERL_RELOCATABLE_INC, PERL_TARGETARCH, PERL_USE_DEVEL, PERL_VENDORARCH, PERL_VENDORARCH_EXP, PERL_VENDORLIB_EXP, PERL_VENDORLIB_STEM, PRIVLIB, PRIVLIB_EXP, SITEARCH, SITEARCH_EXP, SITELIB, SITELIB_EXP, SITELIB_STEM, STARTPERL, USE_BSD_GETPGRP, USE_BSD_SETPGRP, USE_C_BACKTRACE, USE_CPLUSPLUS, USE_CROSS_COMPILE, USE_DTRACE, USE_DYNAMIC_LOADING, USE_FAST_STDIO, USE_ITHREADS, USE_KERN_PROC_PATHNAME, USE_LARGE_FILES, USE_LONG_DOUBLE, USE_MORE_BITS, USE_NSGETEXECUTABLEPATH, USE_PERLIO, USE_QUADMATH, USE_REENTRANT_API, USE_SEMCTL_SEMID_DS, USE_SEMCTL_SEMUN, USE_SITECUSTOMIZE, USE_SOCKS, USE_STAT_BLOCKS, USE_STDIO_BASE, USE_STDIO_PTR, USE_STRICT_BY_DEFAULT, USE_THREADS, USE_64_BIT_ALL, USE_64_BIT_INT.
๐ Sockets configuration values ๐
sockets config, let's go: HAS_SOCKADDR_IN6, HAS_SOCKADDR_SA_LEN, HAS_SOCKADDR_STORAGE, HAS_SOCKATMARK, HAS_SOCKET, HAS_SOCKETPAIR, HAS_SOCKS5_INIT, I_SOCKS, I_SYS_SOCKIO.
๐๏ธ Source Filters ๐๏ธ
source filters, the vibe is real: apply_builtin_cv_attributes, filter_add, filter_del, filter_read, scan_vstring, start_subparse.
๐ฅ Stack Manipulation Macros ๐ฅ
stack manipulation macros, this list is long but slay: dMARK, dORIGMARK, dSP, dTARGET, EXTEND, MARK, mPUSHi, mPUSHn, mPUSHp, mPUSHpvs, mPUSHs, mPUSHu, mXPUSHi, mXPUSHn, mXPUSHp, mXPUSHpvs, mXPUSHs, mXPUSHu, newXSproto, ORIGMARK, PL_markstack, PL_markstack_ptr, PL_savestack, PL_savestack_ix, PL_scopestack, PL_scopestack_ix, PL_scopestack_name, PL_stack_base, PL_stack_sp, PL_tmps_floor, PL_tmps_ix, PL_tmps_stack, POPi, POPl, POPn, POPp, POPpx, POPpbytex, POPpx*, POPs, POPu, POPul, PUSHi, PUSHMARK, PUSHmortal, PUSHn, PUSHp, PUSHpvs, PUSHs, PUSHu, PUTBACK, SAVEt_INT, SP, SPAGAIN, SSNEW, SSNEWa, SSNEWat, SSNEWt, SSPTR, SSPTRt, TARG, TOPs, XPUSHi, XPUSHmortal, XPUSHn, XPUSHp, XPUSHpvs, XPUSHs, XPUSHu, XS_APIVERSION_BOOTCHECK, XS_VERSION, XS_VERSION_BOOTCHECK, XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_UV, XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV, XST_mPV, XST_mUNDEF, XST_mUV, XST_mYES.
๐งต String Handling ๐งต
string handling, bestie, these are the string vibes: Copy, CopyD, delimcpy, do_join, do_sprintf, fbm_compile, fbm_instr, foldEQ, foldEQ_locale, ibcmp, ibcmp_locale, ibcmp_utf8, instr, memCHRs, memEQ, memEQs, memNE, memNEs, Move, MoveD, my_snprintf, my_sprintf, my_strlcat, my_strlcpy, my_strnlen, my_vsnprintf, NewCopy, ninstr, Nullch, PL_na, rninstr, savepv, savepvn, savepvs, savesvpv, savesharedpv, savesharedpvn, savesharedpvs, savesharedsvpv, STR_WITH_LEN, strEQ, strGE, strGT, strLE, STRLEN, strLT, strNE, strnEQ, strnNE, Zero, ZeroD.
๐ท๏ธ SV Flags ๐ท๏ธ
SV flags, iconic: SVt_IV, SVt_NULL, SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVFM, SVt_PVGV, SVt_PVHV, SVt_PVIO, SVt_PVIV, SVt_PVLV, SVt_PVMG, SVt_PVNV, SVt_PVOBJ, SVt_REGEXP, svtype.
โจ SV Handling โจ
okay bestie, this is the big one, the SV handling motherlode, no cap. We're listing every single one because that's the vibe: AV_FROM_REF, CV_FROM_REF, GV_FROM_REF, HV_FROM_REF, BOOL_INTERNALS_sv_isbool, BOOL_INTERNALS_sv_isbool_false, BOOL_INTERNALS_sv_isbool_true, boolSV, croak_xs_usage, CV_FROM_REF*, DEFSV, DEFSV_set, get_sv, GV_FROM_REF*, HV_FROM_REF*, isGV_with_GP, looks_like_number, MUTABLE_AV, MUTABLE_CV, MUTABLE_GV, MUTABLE_HV, MUTABLE_IO, MUTABLE_PTR, MUTABLE_SV, newRV, newRV_inc, newRV_noinc, newSV, newSV_false, newSV_true, newSV_type, newSV_type_mortal, newSVbool, newSVhek, newSVhek_mortal, newSViv, newSVnv, newSVpadname, newSVpv, newSVpv_share, newSVpvf, newSVpvf_nocontext, newSVpvn, newSVpvn_flags, newSVpvn_share, newSVpvn_utf8, newSVpvs, newSVpvs_flags, newSVpvs_share, newSVpvz, newSVrv, newSVsv, newSVsv_flags, newSVsv_nomg, newSVuv, Nullsv, PL_sv_no, PL_sv_undef, PL_sv_yes, PL_sv_zero, SAVE_DEFSV, sortsv, sortsv_flags, SV, sv_backoff, sv_bless, sv_catpv, sv_catpv_flags, sv_catpv_mg, sv_catpv_nomg, sv_catpvn, sv_catpvn_flags, sv_catpvn_mg, sv_catpvn_nomg, sv_catpvn_nomg_maybeutf8, sv_catpvs, sv_catpvs_flags, sv_catpvs_mg, sv_catpvs_nomg, sv_catpvf, sv_catpvf_nocontext, sv_catpvf_mg, sv_catpvf_mg_nocontext, sv_vcatpvf, sv_vcatpvf_mg, sv_vcatpvfn, sv_vcatpvfn_flags, sv_catpvn*, sv_catpvn_flags*, sv_catpvn_mg*, sv_catpvn_nomg*, sv_catpvn_nomg_maybeutf8*, sv_catpvs*, sv_catpvs_flags*, sv_catpvs_mg*, sv_catpvs_nomg*, sv_catsv, sv_catsv_flags, sv_catsv_mg, sv_catsv_nomg, SV_CHECK_THINKFIRST, SV_CHECK_THINKFIRST_COW_DROP, sv_chop, sv_clear, sv_cmp, sv_cmp_flags, sv_cmp_locale, sv_cmp_locale_flags, sv_collxfrm, sv_collxfrm_flags, sv_copypv, sv_copypv_flags, sv_copypv_nomg, sv_dec, sv_dec_nomg, sv_derived_from, sv_derived_from_hv, sv_derived_from_pv, sv_derived_from_pvn, sv_derived_from_sv.
...and bestie, the list just keeps going, because of course it does ๐ . Here's the rest of the SV crew:
sv_does,sv_does_pv,sv_does_pvn,sv_does_sv,sv_eq,sv_eq_flags,sv_force_normal,sv_force_normal_flags, if the PV is a shared string, if we're a ref, if we're a glob, if we're a copy-on-write scalar, if this is a vstring, insv_force_normal_flagsifSV_COW_DROP_PVis set inflags,sv_free,sv_get_backrefs,sv_gets,sv_inc,sv_inc_nomg,sv_insert,sv_insert_flags,sv_isa,sv_isa_sv,sv_isobject,sv_len,sv_len_utf8,sv_len_utf8_nomg,sv_magic,sv_magicext,sv_mortalcopy,sv_mortalcopy_flags,sv_newmortal,sv_nolocking,sv_nounlocking,sv_numeq,sv_numeq_flags,sv_pos_b2u,sv_pos_b2u_flags,sv_pos_u2b,sv_pos_u2b_flags,sv_pvn_force_flags,sv_ref,sv_reftype,sv_replace,sv_report_used,sv_reset,sv_rvunweaken,sv_rvweaken,sv_set_bool,sv_set_false,sv_set_true,sv_set_undef,sv_setbool,sv_setbool_mg,sv_setiv,sv_setiv_mg,sv_setnv,sv_setnv_mg,sv_setpv,sv_setpv_mg,sv_setpvn,sv_setpvn_fresh,sv_setpvn_mg,sv_setpvs,sv_setpvs_mgsv_setpv_bufsize,sv_setpv_mg*,sv_setpvf,sv_setpvf_mg,sv_setpvf_mg_nocontext,sv_setpvf_nocontext,sv_setpvn*,sv_setpvn_fresh*,sv_setpvn_mg*,sv_setpvs*,sv_setpvs_mg*,sv_setref_iv,sv_setref_nv,sv_setref_pv,sv_setref_pvn,sv_setref_pvs,sv_setref_uv,sv_setrv_inc,sv_setrv_inc_mg,sv_setrv_noinc,sv_setrv_noinc_mg,sv_setsv,sv_setsv_flags,sv_setsv_mg,sv_setsv_nomg,sv_setuv,sv_setuv_mg,sv_streq,sv_streq_flags,sv_unmagic,sv_unmagicext,sv_unref,sv_unref_flags,sv_upgrade,sv_usepvn,sv_usepvn_flags,sv_usepvn_mg,sv_utf8_decode,sv_utf8_downgrade,sv_utf8_downgrade_flags,sv_utf8_downgrade_nomg,sv_utf8_encode,sv_utf8_upgrade,sv_utf8_upgrade_flags,sv_utf8_upgrade_flags_grow,sv_utf8_upgrade_nomgsv_vcatpvf*,sv_vcatpvf_mg*,sv_vcatpvfn*,sv_vcatpvfn_flags*,sv_vsetpvf,sv_vsetpvf_mg,sv_vsetpvfn,sv_2cv,sv_2io,sv_2iv_flags,sv_2mortal,sv_2nv_flags,sv_2pv,sv_2pv_flags,sv_2pvbyte,sv_2pvbyte_flags,sv_2pvutf8,sv_2pvutf8_flags,sv_2uv_flags,SvAMAGIC,SvAMAGIC_off,SvAMAGIC_on,SvBoolFlagsOK,SvCUR,SvCUR_set,SvEND,SvGAMAGIC,SvGETMAGIC,SvGROW,SvIandPOK,SvIandPOK_off,SvIandPOK_on,SvIOK,SvIOK_notUV,SvIOK_off,SvIOK_on,SvIOK_only,SvIOK_only_UV,SvIOK_UV,SvIOKp,SvIsBOOL,SvIsCOW,SvIsCOW_shared_hash,SvIV,SvIV_nomg,SvIVx,SvIV_set,SvIVX,SvIVx*,SvLEN,SvLEN_set,SvLOCK,SvMAGIC_set,SvNIOK,SvNIOK_off,SvNIOKp,SvNOK,SvNOK_off,SvNOK_on,SvNOK_only,SvNOKp,SvNV,SvNV_nomg,SvNVx,SvNV_set,SvNVX,SvNVx*,SvOK,SvOOK,SvOOK_off,SvOOK_offset,SvPOK,SvPOK_off,SvPOK_on,SvPOK_only,SvPOK_only_UTF8,SvPOKp,SvPV,SvPV_const,SvPV_flags,SvPV_flags_const,SvPV_flags_mutable,SvPV_mutable,SvPV_nolen,SvPV_nolen_const,SvPV_nomg,SvPV_nomg_const,SvPV_nomg_const_nolen,SvPV_nomg_nolen,SvPVbyte,SvPVbyte_nolen,SvPVbyte_nomg,SvPVbyte_or_null,SvPVbyte_or_null_nomg,SvPVbytex,SvPVbytex_nolen,SvPVutf8,SvPVutf8_nolen,SvPVutf8_nomg,SvPVutf8_or_null,SvPVutf8_or_null_nomg,SvPVutf8x,SvPVx,SvPVx_const,SvPVx_nolen,SvPVx_nolen_constSvPV_force,SvPV_force_flags,SvPV_force_flags_mutable,SvPV_force_flags_nolen,SvPV_force_mutable,SvPV_force_nolen,SvPV_force_nomg,SvPV_force_nomg_nolen,SvPVbyte_force,SvPVbytex_force,SvPVutf8_force,SvPVutf8x_force,SvPVx_forceSvPV_free,SvPV_mutable*,SvPV_nolen*,SvPV_nolen_const*,SvPV_nomg*,SvPV_nomg_const*,SvPV_nomg_const_nolen*,SvPV_nomg_nolen*,SvPV_renew,SvPV_set,SvPV_shrink_to_cur,SvPVbyte*,SvPVbyte_force*,SvPVbyte_nolen*,SvPVbyte_nomg*,SvPVbyte_or_null*,SvPVbyte_or_null_nomg*,SvPVbytex*,SvPVbytex_force*,SvPVbytex_nolen*,SvPVCLEAR,SvPVCLEAR_FRESH,SvPVutf8*,SvPVutf8_force*,SvPVutf8_nolen*,SvPVutf8_nomg*,SvPVutf8_or_null*,SvPVutf8_or_null_nomg*,SvPVutf8x*,SvPVutf8x_force*,SvPVX,SvPVX_const,SvPVX_mutable,SvPVXx,SvPVx*,SvPVx_const*,SvPVx_force*,SvPVx_nolen*,SvPVx_nolen_const*,SvPVXtrue,SvPVXx*,SvREADONLY,SvREADONLY_off,SvREADONLY_on,SvREFCNT,SvREFCNT_dec,SvREFCNT_dec_set_NULL,SvREFCNT_dec_ret_NULL,SvREFCNT_dec_NNSvREFCNT_inc,SvREFCNT_inc_NN,SvREFCNT_inc_simple,SvREFCNT_inc_simple_NN,SvREFCNT_inc_simple_void,SvREFCNT_inc_simple_void_NN,SvREFCNT_inc_void,SvREFCNT_inc_void_NNSvROK,SvROK_off,SvROK_on,SvRV,SvRV_set,SvSETMAGIC,SvSetMagicSV,SvSetMagicSV_nosteal,SvSetSV,SvSetSV_nosteal,SvSHARE,SvSHARED_HASH,SvSTASH,SvSTASH_set,SvTRUE,SvTRUE_NN,SvTRUE_nomg,SvTRUE_nomg_NN,SvTRUEx,SvTYPE,SvUNLOCK,SvUOK,SvUPGRADE,SvUTF8,SvUTF8_off,SvUTF8_on,SvUV,SvUV_nomg,SvUVx,SvUV_set,SvUVX,SvUVx*,SvUVXx,SvVOK,SvVSTRING_mg,uiv_2buf,vnewSVpvf
โจ Tainting โจ
SvTAINT,SvTAINTED,SvTAINTED_off,SvTAINTED_on
๐ฐ๏ธ Time ๐ฐ๏ธ
ASCTIME_R_PROTO,CTIME_R_PROTO,GMTIME_MAX,GMTIME_MIN,GMTIME_R_PROTO,HAS_ASCTIME_R,HAS_ASCTIME64,HAS_CTIME_R,HAS_CTIME64,HAS_DIFFTIME,HAS_DIFFTIME64,HAS_FUTIMES,HAS_GETITIMER,HAS_GETTIMEOFDAY,HAS_GMTIME_R,HAS_GMTIME64,HAS_LOCALTIME_R,HAS_LOCALTIME64,HAS_MKTIME,HAS_MKTIME64,HAS_NANOSLEEP,HAS_SETITIMER,HAS_STRFTIME,HAS_TIME,HAS_TIMEGM,HAS_TIMES,HAS_TM_TM_GMTOFF,HAS_TM_TM_ZONE,HAS_TZNAME,HAS_USLEEP,HAS_USLEEP_PROTO,I_TIME,I_UTIME,L_R_TZSET,LOCALTIME_MAX,LOCALTIME_MIN,LOCALTIME_R_NEEDS_TZSET,LOCALTIME_R_PROTO,mini_mktime,sv_strftime_ints,sv_strftime_tm,my_strftime,is_distis 0,is_distis >0,is_distis <0
๐ท๏ธ Typedef names ๐ท๏ธ
DB_Hash_t,DB_Prefix_t,Direntry_t,Fpos_t,Free_t,Gid_t,Gid_t_f,Gid_t_sign,Gid_t_size,Groups_t,Malloc_t,Mmap_t,Mode_t,Netdb_hlen_t,Netdb_host_t,Netdb_name_t,Netdb_net_t,Off_t,Off_t_size,Pid_t,Rand_seed_t,Select_fd_set_t,Shmat_t,Signal_t,Size_t,Size_t_size,Sock_size_t,SSize_t,Time_t,Uid_t,Uid_t_f,Uid_t_sign,Uid_t_size
๐ Unicode Support ๐
okay this section is giving maximalist, we love a Unicode queen ๐
BOM_UTF8,bytes_cmp_utf8,bytes_from_utf8*,bytes_to_utf8,bytes_to_utf8_free_me,bytes_to_utf8_temp_pv,c9strict_utf8_to_uv*,DO_UTF8,extended_utf8_to_uv*,foldEQ_utf8,is_ascii_string*,is_c9strict_utf8_string*,is_c9strict_utf8_string_loc*,is_c9strict_utf8_string_loclen*,is_invariant_string*,is_strict_utf8_string*,is_strict_utf8_string_loc*,is_strict_utf8_string_loclen*,is_utf8_char_buf*,is_utf8_fixed_width_buf_flags,is_utf8_fixed_width_buf_loc_flags,is_utf8_fixed_width_buf_loclen_flagsis_utf8_invariant_string,is_utf8_invariant_string_loc,is_ascii_string,is_invariant_stringis_utf8_string,is_utf8_string_loc,is_utf8_string_loclen,is_strict_utf8_string,is_strict_utf8_string_loc,is_strict_utf8_string_loclen,is_c9strict_utf8_string,is_c9strict_utf8_string_loc,is_c9strict_utf8_string_loclen,is_utf8_string_flags,is_utf8_string_loc_flags,is_utf8_string_loclen_flagsis_utf8_valid_partial_char,is_utf8_valid_partial_char_flags,isUTF8_CHAR,isSTRICT_UTF8_CHAR,isC9_STRICT_UTF8_CHAR,isUTF8_CHAR_flags,is_utf8_char_bufLATIN1_TO_NATIVE,NATIVE_TO_LATIN1,NATIVE_TO_UNI,pv_uni_display,UNI_DISPLAY_ISPRINT,UNI_DISPLAY_BACKSLASH,UNI_DISPLAY_BACKSPACE,UNI_DISPLAY_REGEX,UNI_DISPLAY_QQ,REPLACEMENT_CHARACTER_UTF8,strict_utf8_to_uv*,sv_cat_decode,sv_recode_to_utf8,sv_uni_display,UNI_TO_NATIVE,UNICODE_IS_NONCHAR,UNICODE_IS_REPLACEMENT,UNICODE_IS_SUPER,UNICODE_IS_SURROGATE,UNICODE_REPLACEMENT,UTF8_CHK_SKIP*,utf8_distance,utf8_hop,utf8_hop_back,utf8_hop_back_overshoot,utf8_hop_forward,utf8_hop_forward_overshoot,utf8_hop_safe,utf8_hop_overshoot,UTF8_IS_INVARIANT,UTF8_IS_NONCHAR,UTF8_IS_REPLACEMENT,UTF8_IS_SUPER,UTF8_IS_SURROGATE,utf8_length,UTF8_MAXBYTES,UTF8_MAXBYTES_CASE,UTF8_SAFE_SKIP*,UTF8_SKIP*,utf8_to_bytes_overwrite,utf8_to_bytes_new_pv,utf8_to_bytes_temp_pv,utf8_to_bytes,bytes_from_utf8utf8_to_bytes_overwrite,utf8_to_bytes_new_pv,utf8_to_bytes_temp_pv, The input turned out to already be in bytes form, The input was successfully converted, Forutf8_to_bytes_overwrite, Forutf8_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_utf8,utf8_to_uv,extended_utf8_to_uv,strict_utf8_to_uv,c9strict_utf8_to_uv,utf8_to_uv_or_die,utf8_to_uvchr_buf,utf8_to_uvchrutf8_to_uvforms,strict_utf8_to_uv,c9strict_utf8_to_uv,utf8_to_uv,utf8_to_uv_or die,utf8_to_uvchrforms, 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_ANYand kin,UTF8_DIE_IF_MALFORMED,utf8_to_uv_msgs,utf8n_to_uvchr_msgs,utf8_to_uv_errors,utf8n_to_uvchr_error
okay bestie we're still in the TOC trenches and these are the rest of the UTF-8-ish goodies โ every one of these is a real, listed thing, so here we go ๐
"UTF8_GOT_CONTINUATION""UTF8_GOT_EMPTY""UTF8_GOT_LONG""UTF8_GOT_NONCHAR""UTF8_GOT_NON_CONTINUATION""UTF8_GOT_OVERFLOW""UTF8_GOT_PERL_EXTENDED""UTF8_GOT_SHORT""UTF8_GOT_SUPER""UTF8_GOT_SURROGATE""text""warn_categories""flag""utf8_to_uv_or_die*""utf8_to_uvchr*""utf8_to_uvchr_buf*""utf8n_to_uvchr*""utf8ness_t""UTF8NESS_YES""UTF8NESS_NO""UTF8NESS_IMMATERIAL""UTF8NESS_UNKNOWN""0 <= enum value <= UTF8NESS_IMMATERIAL""UTF8NESS_IMMATERIAL <= <enum value""UTF8SKIP""UTF8_SKIP""UTF8_CHK_SKIP""UTF8_SAFE_SKIP"""UTF8_SAFE_SKIP" in perlapi"if you know the maximum ending pointer in the buffer pointed to by"s"""UTF8_CHK_SKIP" in perlapi"if you don't know the maximum ending pointer"uv_to_utf8""uv_to_utf8_flags""uvchr_to_utf8""uvchr_to_utf8_flags""uv_to_utf8_msgs""uvchr_to_utf8_flags_msgs""text""warn_categories""flag_bit""UNICODE_GOT_SURROGATE""UNICODE_GOT_NONCHAR""UNICODE_GOT_SUPER""UNICODE_GOT_PERL_EXTENDED""UVCHR_IS_INVARIANT""UVCHR_SKIP""uvchr_to_utf8*""uvchr_to_utf8_flags*""uvchr_to_utf8_flags_msgs*"
๐งฐ Utility Functions
the little helpers that just Do Things for you, no drama:
"C_ARRAY_END""C_ARRAY_LENGTH""getcwd_sv""IN_PERL_COMPILETIME""IN_PERL_RUNTIME""IS_SAFE_SYSCALL""is_safe_syscall""my_setenv""newPADxVOP""phase_name""PoisonFree""Poison""PoisonNew""PoisonWith""StructCopy""sv_destroyable""sv_nosharing"
๐ Versioning
version numbers, but make it a whole personality:
"new_version""PERL_REVISION""PERL_SUBVERSION""PERL_VERSION""PERL_VERSION_EQ""PERL_VERSION_GE""PERL_VERSION_GT""PERL_VERSION_LE""PERL_VERSION_LT""PERL_VERSION_NE""prescan_version""scan_version""upg_version""vcmp""vnormal""vnumify""vstringify""vverify"- The SV is an HV or a reference to an HV
- The hash contains a
"version"key - The
"version"key has a reference to an AV as its value
๐ญ Warning and Dieing
screaming (politely) is a whole API โ here's every entry:
"ck_warner","ck_warner_d""ckWARN","ckWARN2","ckWARN3","ckWARN4""ckWARN_d","ckWARN2_d","ckWARN3_d","ckWARN4_d""ckWARN2*","ckWARN3*","ckWARN4*""CLEAR_ERRSV""croak""croak_nocontext""croak_no_modify""croak_nocontext*""croak_sv""die""die_nocontext""die_sv""ERRSV""fatal_warner""packWARN","packWARN2","packWARN3","packWARN4""SANE_ERRSV""sv_regex_global_pos_clear""sv_regex_global_pos_get""sv_regex_global_pos_set""sv_vstring_get""vcroak""vfatal_warner""vwarn""vwarner""warn""warn_nocontext""warn_sv""warner""warner_nocontext"
๐ฆ XS
the classic XS macro lineup, iconic as always:
"aMY_CXT""aMY_CXT_""_aMY_CXT""ax""CLASS""dAX""dAXMARK""dITEMS""dMY_CXT""dMY_CXT_SV""dUNDERBAR""dXSARGS""dXSI32""items""ix""MY_CXT""MY_CXT_CLONE""MY_CXT_INIT""pMY_CXT""pMY_CXT_""_pMY_CXT""RETVAL""ST""START_MY_CXT""THIS""UNDERBAR""XS""XS_EXTERNAL""XS_INTERNAL""XSPROTO"
๐ซถ Undocumented elements
yes bestie, the TOC literally has a section for the vibes it won't explain. mysterious queen behavior โจ
๐ AUTHORS
๐ SEE ALSO
๐ง perlintern โ autogenerated documentation of purely internal Perl functions
okay so this one is the internal lore. not for the public, purely backstage ๐
โจ DESCRIPTION
๐๏ธ AV Handling
"av_fetch_simple""av_new_alloc""av_store_simple""AvFILLp"
๐ Callback Functions
"dowantarray""leave_scope""magic_freedestruct""mortal_svfunc_x""pop_scope""push_scope""save_adelete""save_freercpv""save_generic_pvref""save_generic_svref""save_hdelete""save_hints""save_op""save_padsv_and_mortalize""save_pushptr""save_rcpv""save_scalar_at""save_set_svflags""save_shared_pvref""save_vptr"
๐ Casting
๐ Character case changing
๐ Character classification
๐ Compiler and Preprocessor information
๐ Compiler directives
๐ Compile-time scope hooks
"BhkENTRY""BhkFLAGS""CALL_BLOCK_HOOKS"
๐ Concurrency
"CVf_SLABBED""CvROOT""CvSTART""CX_CUR""CX_LEAVE_SCOPE""CX_POP""cx_type""CXINC""cxstack""cxstack_ix""CXt_BLOCK""CXt_EVAL""CXt_FORMAT""CXt_GIVEN""CXt_LOOP_ARY""CXt_LOOP_LAZYIV""CXt_LOOP_LAZYSV""CXt_LOOP_LIST""CXt_LOOP_PLAIN""CXt_NULL""CXt_SUB""CXt_SUBST""CXt_WHEN""dounwind""my_fork""PERL_CONTEXT"
๐ COPs and Hint Hashes
๐ Custom Operators
"core_prototype"
๐ CV Handling
"CvREFCOUNTED_ANYSV""CvREFCOUNTED_ANYSV_off""CvREFCOUNTED_ANYSV_on""CvWEAKOUTSIDE""docatch"
๐ Debugging
"comma_aDEPTH""comma_pDEPTH""debop""debprof""debprofdump""debug_aDEPTH""debug_pDEPTH""free_c_backtrace""get_c_backtrace""PL_DBsingle""PL_DBsub""PL_DBtrace""runops_debug""runops_standard"
๐ Display functions
"sv_peek"
๐ Embedding, Threads, and Interpreter Cloning
"cv_dump""cv_forget_slab""do_dump_pad""get_context""noshutdownhook""pad_alloc_name""pad_block_start""pad_check_dup""pad_findlex""pad_fixup_inner_anons""pad_free""pad_leavemy""pad_push""pad_reset""pad_setsv""pad_sv""pad_swipe""padlist_dup""padname_dup""padnamelist_dup""set_context""si_dup""ss_dup"
๐ Errno
"dSAVE_ERRNO""dSAVEDERRNO""RESTORE_ERRNO""SAVE_ERRNO""SETERRNO"
๐ Exception Handling (simple) Macros
๐ Filesystem configuration values
๐ Floating point
๐ General Configuration
๐ Global Variables
๐ GV Handling and Stashes
"amagic_applies""gp_dup""gv_handler""gv_stashsvpvn_cached""gv_try_downgrade"
๐ Hook manipulation
๐ HV Handling
"hv_eiter_p""hv_eiter_set""hv_ename_add""hv_ename_delete""hv_fill""hv_placeholders_get""hv_placeholders_set""hv_riter_p""hv_riter_set""refcounted_he_chain_2hv""refcounted_he_fetch_pv""refcounted_he_fetch_pvn""refcounted_he_fetch_pvs""refcounted_he_fetch_sv""refcounted_he_free""refcounted_he_inc""refcounted_he_new_pv""refcounted_he_new_pvn""refcounted_he_new_pvs""refcounted_he_new_sv""unsharepvn"
๐ Input/Output
"dirp_dup""fp_dup""my_fflush_all""my_mkostemp""my_mkstemp""PL_last_in_gv""PL_ofsgv""PL_rs""start_glob"
๐ Integer
"ABS_IV_MIN""NEGATE_2IV""NEGATE_2UV"
๐ I/O Formats
๐ Lexer interface
"validate_proto"
๐ Locales
๐ Magic
"magic_clearhint""magic_clearhints""magic_methcall""magic_sethint""mg_dup""mg_localize"
๐ Memory Management
"calloc""malloc""mfree""realloc"
๐ MRO
"mro_get_linear_isa_dfs""mro_isa_changed_in""mro_package_moved"
๐ Multicall Functions
๐ Numeric Functions
"isinfnansv""S_perl_hash_siphash_1_3""S_perl_hash_siphash_1_3_with_state""S_perl_hash_siphash_1_3_with_state_64""S_perl_hash_siphash_1_3_64""S_perl_hash_siphash_2_4""S_perl_hash_siphash_2_4_with_state""S_perl_hash_siphash_2_4_with_state_64""S_perl_hash_siphash_2_4_64""S_perl_siphash_seed_state"
๐ Optrees
"newATTRSUB_x""newMYSUB""newXS_len_flags""op_refcnt_lock""op_refcnt_unlock""traverse_op_tree"
๐ Pack and Unpack
๐ Pad Data Structures
"CX_CURPAD_SAVE""CX_CURPAD_SV""PAD_BASE_SV""PAD_CLONE_VARS""PAD_COMPNAME_FLAGS""PAD_COMPNAME_GEN""PAD_COMPNAME_GEN_set""PAD_COMPNAME_OURSTASH""PAD_COMPNAME_PV""PAD_COMPNAME_TYPE""PAD_RESTORE_LOCAL""PAD_SAVE_LOCAL""PAD_SAVE_SETNULLPAD""PAD_SET_CUR""PAD_SET_CUR_NOSAVE""PAD_SETSV""PAD_SV""PAD_SVl""PadnameIsFIELD""PadnameIsOUR""PadnameIsSTATE""PadnameOURSTASH""PadnameOUTER""PadnameTYPE""SAVECLEARSV""SAVECOMPPAD""SAVEPADSV"
๐ Password and Group access
๐ Paths to system commands
๐ Prototype information
๐ Reference-counted stack manipulation
๐ REGEXP Functions
"regnode"
๐ Reports and Formats
๐ Signals
๐ Site configuration
๐ Sockets configuration values
๐ Source Filters
๐ Stack Manipulation Macros
"djSP""LVRET""save_alloc"
๐ String Handling
"delimcpy_no_escape""quadmath_format_needed""quadmath_format_valid"
๐ SV Flags
"SVt_INVLIST"
๐ SV Handling
"PL_Sv""sv_add_arena""sv_clean_all""sv_clean_objs""sv_free_arenas""sv_grow""sv_grow_fresh""sv_newref""sv_pv""sv_pvbyte""sv_pvbyten_force""sv_pvn_force""sv_pvutf8""sv_pvutf8n_force""sv_tainted""sv_true""sv_untaint""sv_2bool""sv_2bool_flags""sv_2num""sv_2pv_nolen""sv_2pvbyte_nolen""sv_2pvutf8_nolen""SvTHINKFIRST"
๐ Tainting
"sv_taint""TAINT""TAINT_ENV""taint_env""TAINT_get""TAINT_IF""TAINT_NOT""TAINT_PROPER""taint_proper""TAINT_set""TAINT_WARN_get""TAINT_WARN_set""TAINTING_get""TAINTING_set"
๐ Time
๐ Typedef names
๐ Unicode Support
"is_utf8_non_invariant_string""isSCRIPT_RUN""utf8_to_uvuni""utf8n_to_uvuni""uvoffuni_to_utf8_flags""valid_utf8_to_uvchr""variant_under_utf8_count"
๐ Utility Functions
"my_popen_list""my_socketpair"
๐ Versioning
๐ Warning and Dieing
"deprecate""deprecate_disappears_in""deprecate_fatal_in""find_uninit_var""PL_dowarn""report_uninit"
๐ XS
"my_cxt_init"
๐ซถ Undocumented elements
๐ AUTHORS
๐ SEE ALSO
๐ perliol โ C API for Perl's implementation of IO in Layers.
this one is about Perl's IO situation, and bestie it has layers ๐
โจ SYNOPSIS
๐ธ DESCRIPTION
๐ History and Background
๐ Basic Structure
๐ Layers vs Disciplines
๐ Data Structures
๐ Functions and Attributes
๐ Per-instance Data
๐ Layers in action
๐ Per-instance flag bits
PERLIO_F_EOF,PERLIO_F_CANWRITE,PERLIO_F_CANREAD,PERLIO_F_ERROR,PERLIO_F_TRUNCATE,PERLIO_F_APPEND,PERLIO_F_CRLF,PERLIO_F_UTF8,PERLIO_F_UNBUF,PERLIO_F_WRBUF,PERLIO_F_RDBUF,PERLIO_F_LINEBUF,PERLIO_F_TEMP,PERLIO_F_OPEN,PERLIO_F_FASTGETS
๐ Methods in Detail
fsize,name,size,kind,PERLIO_K_BUFFERED,PERLIO_K_RAW,PERLIO_K_CANCRLF,PERLIO_K_FASTGETS,PERLIO_K_MULTIARG,Pushed,Popped,Open,Binmode,Getarg,Fileno,Dup,Read,Write,Seek,Tell,Close,Flush,Fill,Eof,Error,Clearerr,Setlinebuf,Get_base,Get_bufsiz,Get_ptr,Get_cnt,Set_ptrcnt
๐ Utilities
๐ Implementing PerlIO Layers
- C implementations, Perl implementations
๐ Core Layers
"unix""perlio""stdio""crlf""mmap""pending""raw""utf8"
๐ Extension Layers
":encoding"":scalar"":via"
๐ฆ TODO
perlapio - perl's IO abstraction interface.
SYNOPSIS
DESCRIPTION โจ
okay so this is the entire IO abstraction interface, and bestie we are listing every single one of them, no skipping, no cap ๐
USE_STDIOUSE_PERLIO
then the functions themselves, all of them, here we go:
PerlIO_stdin()PerlIO_stdout()PerlIO_stderr()PerlIO_open(path, mode)PerlIO_fdopen(fd,mode)PerlIO_reopen(path,mode,f)PerlIO_printf(f,fmt,...)PerlIO_vprintf(f,fmt,a)PerlIO_stdoutf(fmt,...)PerlIO_read(f,buf,count)PerlIO_write(f,buf,count)PerlIO_fill(f)PerlIO_close(f)PerlIO_puts(f,s)PerlIO_putc(f,c)PerlIO_ungetc(f,c)PerlIO_unread(f,buf,count)PerlIO_getc(f)PerlIO_eof(f)PerlIO_error(f)PerlIO_fileno(f)PerlIO_clearerr(f)PerlIO_flush(f)PerlIO_seek(f,offset,whence)PerlIO_tell(f)PerlIO_getpos(f,p)PerlIO_setpos(f,p)PerlIO_rewind(f)PerlIO_tmpfile()PerlIO_setlinebuf(f)
Co-existence with stdio ๐ซถ
PerlIO_importFILE(f,mode)PerlIO_exportFILE(f,mode)PerlIO_releaseFILE(p,f)PerlIO_findFILE(f)
"Fast gets" Functions ๐๏ธ
PerlIO_fast_gets(f)PerlIO_has_cntptr(f)PerlIO_get_cnt(f)PerlIO_get_ptr(f)PerlIO_set_ptrcnt(f,p,c)PerlIO_canset_cnt(f)PerlIO_set_cnt(f,c)PerlIO_has_base(f)PerlIO_get_base(f)PerlIO_get_bufsiz(f)
Other Functions ๐ธ
PerlIO_apply_layers(aTHX_ f,mode,layers)PerlIO_binmode(aTHX_ f,ptype,imode,layers)'<'read'>'write'+'read/writePerlIO_debug(fmt,...)
perlhack - How to hack on Perl
DESCRIPTION
SUPER QUICK PATCH GUIDE โก
literally the speedrun route, in order, go:
- Check out the source repository
- Ensure you're following the latest advice
- Create a branch for your change
- Make your change
- Test your change
- Commit your change
- Send your change to the Perl issue tracker
- Thank you
- Acknowledgement
- Next time
BUG REPORTING ๐
PERL 5 PORTERS ๐
- perl-changes mailing list
#p5pon 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/compandt/opbasic- All other subdirectories of
t/ - Test files not found under
t/ - Special "make test" targets
test_portingminitesttest.valgrindcheck.valgrindtest_harnesstest-nottytest_notty
- Parallel tests
- Running tests by hand
- Using
t/harnessfor testing-v-torture-re=PATTERN-re LIST OF PATTERNSPERL_CORE=1PERL_DESTRUCT_LEVEL=2PERLPERL_SKIP_TTY_TESTPERL_TEST_Net_PingPERL_TEST_NOVREXXPERL_TEST_NUMCONVERTSPERL_TEST_MEMORY
- Performance testing
- Building perl at older commits
MORE READING FOR GUTS HACKERS ๐
perlsource,perlinterp,perlhacktut,perlhacktips,perlguts,perlxstutandperlxs,perlapi,Porting/pumpkin.pod
CPAN TESTERS AND PERL SMOKERS ๐จ
WHAT NEXT? ๐ฆ
- "The Road goes ever on and on, down from the door where it began."
- Metaphoric Quotations
AUTHOR
perlsource - A guide to the Perl source tree
DESCRIPTION
FINDING YOUR WAY AROUND ๐บ๏ธ
- C code
- Core modules
lib/,ext/,dist/,cpan/
- Tests
- Module tests,
t/base/,t/cmd/,t/comp/,t/io/,t/mro/,t/op/,t/opbasic/,t/re/,t/run/,t/uni/,t/win32/,t/porting/,t/lib/
- Module tests,
- Documentation
- Hacking tools and documentation
check*,Maintainers,Maintainers.pl, andMaintainers.pm,podtidy
- Build system
AUTHORSMANIFEST
perlinterp - An overview of the Perl interpreter
DESCRIPTION
ELEMENTS OF THE INTERPRETER ๐งฉ
- Startup
- Parsing
- Optimization
- Running
- Exception handing
- level 2: perl-level
exit()and internalsmy_exit() - level 3: perl-level
die()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
DESCRIPTION
EXAMPLE OF A SIMPLE PATCH โจ
- Writing the patch
- Testing the patch
- Documenting the patch
- Submit
AUTHOR
perlhacktips - Tips for Perl core C code hacking
DESCRIPTION
COMMON PROBLEMS ๐
- Perl environment problems
- C99 AIX, HP/UX, Solaris
- Symbol Names and Namespace Pollution
- Don't begin a file-level symbol name with an underscore; (e.g., don't use:
"_FOOBAR") - Don't use two consecutive underscores in a symbol name; (e.g., don't use
"FOO__BAR")
- 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
- Using a source-level debugger
run [args]break function_namebreak source.c:xxxstepnextcontinuefinish'enter'ptypeprint
- gdb macro support
- Dumping Perl Data Structures
- Using gdb to look at specific parts of a program
- Using gdb to look at what the parser/lexer are doing
SOURCE CODE STATIC ANALYSIS ๐ฌ
- lint
- Coverity
- HP-UX cadvise (Code Advisor)
- cpd (cut-and-paste detector)
- gcc warnings
- Warnings of other C compilers
MEMORY DEBUGGERS ๐ง
- valgrind
- AddressSanitizer
-Dcc=clang-Accflags=-fsanitize=address-Aldflags=-fsanitize=address-Alddlflags=-shared\ -fsanitize=address-fsanitize-blacklist=pwd/asan_ignore
- Dr Memory
PROFILING ๐
- Gprof Profiling
-a-b-e routine-f routine-s-z
- GCC gcov Profiling
- callgrind profiling
--threshold--auto
- "profiler" profiling (Cygwin)
- Visual Studio Profiling
MISCELLANEOUS TRICKS ๐
PERL_DESTRUCT_LEVEL- Leaked SV spotting:
sv_mark_arenas()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
.iTargets
AUTHOR
perlpolicy - Various and sundry policies and commitments related to the Perl core
DESCRIPTION
GOVERNANCE ๐๏ธ
- Perl 5 Porters
MAINTENANCE AND SUPPORT ๐ ๏ธ
BACKWARD COMPATIBILITY AND DEPRECATION โณ
- Terminology
- experimental
- deprecated
- discouraged
- removed
MAINTENANCE BRANCHES ๐ฟ
- Getting changes into a maint branch
CONTRIBUTED MODULES ๐
- A Social Contract about Artistic Control
DOCUMENTATION
STANDARDS OF CONDUCT ๐ค
CREDITS
perlgov - Perl Rules of Governance
PREAMBLE
Mandate
Definitions ๐
- "Core Team"
- "Steering Council"
- "Vote Administrator"
- The Core Team
- The Steering Council
- The Vote Administrator
Steering Council and Core Team Members
Steering Council Members ๐
- Aristotle Pagaltzis, Graham Knop, Philippe Bruhat
Core Team Members
- Active Members ๐
Aristotle Pagaltzis <pagaltzis@gmx.de>Chad Granum <exodist7@gmail.com>Chris 'BinGOs' Williams <chris@bingosnet.co.uk>Craig Berry <craigberry@mac.com>Dagfinn Ilmari Mannsรฅker <ilmari@ilmari.org>David Mitchell <davem@iabyn.com>Graham Knop <haarg@haarg.org>H. Merijn Brand <perl5@tux.freedom.nl>Hugo van der Sanden <hv@crypt.org>James E Keenan <jkeenan@cpan.org>Karen Etheridge <ether@cpan.org>Karl Williamson <khw@cpan.org>Leon Timmermans <fawaka@gmail.com>Matthew Horsfall <wolfsage@gmail.com>Max Maischein <cpan@corion.net>Neil Bowers <neilb@neilb.org>Nicholas Clark <nick@ccl4.org>Nicolas R <atoomic@cpan.org>Paul "LeoNerd" Evans <leonerd@leonerd.org.uk>Philippe "BooK" Bruhat <book@cpan.org>Ricardo Signes <rjbs@semiotic.systems>Steve Hay <steve.m.hay@googlemail.com>Stuart Mackintosh <stuart@perlfoundation.org>Todd Rinaldo <toddr@cpanel.net>Tony Cook <tony@develop-help.com>Yves Orton <demerphq@gmail.com>
- Inactive Members ๐ค
Abhijit Menon-Sen <ams@toroid.org>Andy Dougherty <doughera@lafayette.edu>David Golden <xdg@xdg.me>Jan Dubois <jan@jandubois.com>Jason McIntosh <jmac@jmac.org>Jesse Vincent <jesse@fsck.com>
perlgit - Detailed information about git and the Perl repository
DESCRIPTION
CLONING THE REPOSITORY ๐งฌ
WORKING WITH THE REPOSITORY ๐
- Finding out your status
- Patch workflow
- A note on derived files
- Cleaning a working directory
- Bisecting
- Topic branches and rewriting history
- Grafts
WRITE ACCESS TO THE GIT REPOSITORY ๐
- Working with GitHub pull requests
- Accepting a patch
- Committing to blead
- On merging and rebasing
- Committing to maintenance versions
- Using a smoke-me branch to test changes
perlhist - the Perl history records
DESCRIPTION
INTRODUCTION
THE KEEPERS OF THE PUMPKIN ๐
- PUMPKIN?
THE RECORDS ๐
- SELECTED RELEASE SIZES
- SELECTED PATCH SIZES
THE KEEPERS OF THE RECORDS
perldelta - what is new for perl v5.42.3
DESCRIPTION
Security ๐
CVE-2026-8376- Buffer overflow inPerl_study_chunkCVE-2026-57432- Buffer overflow inS_measure_structCVE-2026-13221- Regex trie 16-bit field overflow
Incompatible Changes โ ๏ธ
Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
Documentation ๐
- Changes to Existing Documentation
Diagnostics ๐ฉบ
- New Diagnostics
Testing ๐งช
Acknowledgements ๐
Reporting Bugs ๐
Give Thanks ๐
SEE ALSO
perl5423delta, perldelta - what is new for perl v5.42.3
DESCRIPTION
Security ๐
CVE-2026-8376- Buffer overflow inPerl_study_chunkCVE-2026-57432- Buffer overflow inS_measure_structCVE-2026-13221- Regex trie 16-bit field overflow
Incompatible Changes โ ๏ธ
Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
Documentation ๐
- Changes to Existing Documentation
Diagnostics ๐ฉบ
- New Diagnostics
Testing ๐งช
Acknowledgements ๐
Reporting Bugs ๐
Give Thanks ๐
SEE ALSO
perl5422delta - what is new for perl v5.42.2
DESCRIPTION
Security ๐
[CVE-2026-4176]Vulnerability inCompress::Raw::Zlib
Incompatible Changes โ ๏ธ
Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
Documentation ๐
- Changes to Existing Documentation
- Testing
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
perl5421delta โ what is new for perl v5.42.1
- DESCRIPTION
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- Changes to Existing Documentation
- Configuration and Compilation
- Testing
- Platform Support
- Platform-Specific Notes
- AIX, Win32
- Platform-Specific Notes
- Selected Bug Fixes
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
perl5420delta โ what is new for perl v5.42.0
- DESCRIPTION
- Core Enhancements
- More
CORE::subs โจ - New pragma
"source::encoding"slay - New
":writer"attribute on field variables - New
"any"and"all"operators - Apostrophe as a global name separator can be disabled
- Lexical method declaration using
"my method" - Lexical method invocation operator
"->&" - Switch and Smart Match operator kept, behind a feature
- Unicode 16.0 supported iconic
- Assigning logical xor
"^^="operator
- More
- Security
[CVE-2024-56406]Heap buffer overflow vulnerability withtr//[CVE-2025-40909]Perl threads have a working directory race condition where file operations may target unintended paths bestie this one is serious
- Incompatible Changes
- Removed containing function references for functions without
eval
- Removed containing function references for functions without
- Performance Enhancements
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- Changes to Existing Documentation
- Diagnostics
- New Diagnostics
- Changes to Existing Diagnostics
- Utility Changes
Porting/test-dist-modules.pl
- Configuration and Compilation
- Testing
- Platform Support
- Platform-Specific Notes
- arm64 Darwin, Android, Cygwin, MacOS (Darwin)
- Platform-Specific Notes
- Internal Changes
- Selected Bug Fixes
- Obituaries
- Abe Timmerman ๐ฏ๏ธ
- Andrew Main
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
perl5404delta โ what is new for perl v5.40.4
- DESCRIPTION
- Security
[CVE-2026-4176]Vulnerability inCompress::Raw::Zlibyikes
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- Changes to Existing Documentation
- Testing
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
perl5403delta โ what is new for perl v5.40.3
- DESCRIPTION
- Security
[CVE-2025-40909]Perl threads have a working directory race condition where file operations may target unintended paths
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- Changes to Existing Documentation
- Testing
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
perl5402delta โ what is new for perl v5.40.2
- DESCRIPTION
- Security
[CVE-2024-56406]Heap buffer overflow vulnerability withtr//
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
perl5401delta โ what is new for perl v5.40.1
- DESCRIPTION
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- Changes to Existing Documentation
- Configuration and Compilation
- Testing
- Selected Bug Fixes
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
perl5400delta โ what is new for perl v5.40.0
- DESCRIPTION
- Core Enhancements
- New
"__CLASS__"Keyword ":reader"attribute for field variables- Permit a space in
"-M"command-line option - Restrictions to
"use VERSION"declarations - New
"builtin::inf"and"builtin::nan"functions (experimental) - New
"^^"logical xor operator "try"/"catch"feature is no longer experimental"for"iterating over multiple values at a time is no longer experimental finally"builtin"module is no longer experimental- The
":5.40"feature bundle adds"try" "use v5.40;"imports builtin functions
- New
- Security
CVE-2023-47038- Write past buffer end via illegal user-defined Unicode propertyCVE-2023-47039- Perl for Windows binary hijacking vulnerability
- Incompatible Changes
reset EXPRnow calls set-magic on scalars- Calling the import method of an unknown package produces a warning
"return"no longer allows an indirect object- Class barewords no longer resolved as file handles in method calls under
"no feature "bareword_filehandles""
- Deprecations
- Performance Enhancements
- Modules and Pragmata
- New Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- Changes to Existing Documentation
- Diagnostics
- New Diagnostics
- Changes to Existing Diagnostics
- Configuration and Compilation
- Testing
- Platform Support
- New Platforms
- Serenity OS <butterfly>๐ฆ</butterfly>
- Platform-Specific Notes
- Windows, Linux, MacOS/Darwin, VMS, Oracle Developer Studio (Solaris, Oracle Linux)
- New Platforms
- Internal Changes
- Selected Bug Fixes
- Known Problems
perlivpis missingstreamzipon 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 withtr//
- 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 propertyCVE-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 propertyCVE-2023-47039- Perl for Windows binary hijacking vulnerability
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
perl5380delta โ what is new for perl v5.38.0
- DESCRIPTION
- Core Enhancements
- New
"class"Feature <sparkles>โจ</sparkles> - Unicode 15.0 is supported
- Deprecation warnings now have specific subcategories
%{^HOOK}API introducedPERL_RAND_SEED- Defined-or and logical-or assignment default expressions in signatures
@INCHook Enhancements and$INCandINCDIR- Forbidden control flow out of
"defer"or"finally"now detected at compile-time - Optimistic Eval in Patterns
REG_INFhas been raised from65,536to2,147,483,647numbersss- New API functions
optimize_optreeandfinalize_optree - Some
"goto"s are now permitted in"defer"and"finally"blocks - New regexp variable
${^LAST_SUCCESSFUL_PATTERN} - Locale category
LC_NAMEnow supported on participating platforms
- New
- Incompatible Changes
readline()no longer clears the stream error and eof flags"INIT"blocks no longer run after anexit()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
- Use of
- 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 propertyCVE-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 propertyCVE-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"-gcommand-line flag- Unicode 14.0 is supported
- regex sets are no longer considered experimental
- Variable length lookbehind is mostly no longer considered experimental
SIGFPEno longer deferred- Stable boolean tracking fr fr
- iterating over multiple values at a time (experimental)
- builtin functions (experimental)
builtin::trim,builtin::indexed,builtin::true,builtin::false,builtin::is_bool,builtin::weaken,builtin::unweaken,builtin::is_weak,builtin::blessed,builtin::refaddr,builtin::reftype,builtin::ceil,builtin::floor๐
...and we're still in the changelog zone bestie ๐ซถ this is literally the tail end of the previous delta โ the last little crumbs before the next set of release notes kicks in:
"defer" blocks (experimental)try/catchcan now have a"finally"block (experimental)`- non-ASCII delimiters for quote-like operators (experimental)
@_is now experimental within signatured subs
not the entire list being tagged (experimental) ๐ญ the devs really said "vibe check first, stability later." then the regular sections roll up:
- Incompatible Changes
- A physically empty sort is now a compile-time error
- Deprecations
"use VERSION"(where VERSION is below v5.11) after"use v5.11"is deprecated
- Performance Enhancements
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- New Documentation
- Changes to Existing Documentation
- Diagnostics
- New Diagnostics
- Changes to Existing Diagnostics
- Configuration and Compilation
- Testing
- Platform Support
- Windows
- VMS
"keys %ENV"on VMS returns consistent results - Discontinued Platforms
- AT&T UWIN, DOS/DJGPP, NetWare
- Platform-Specific Notes
- z/OS
- Internal Changes
- Selected Bug Fixes
- Errata From Previous Releases
- Obituaries
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ธ perl5343delta - what is new for perl v5.34.3 ๐ธ
a lil maintenance-drop, very "quiet luxury" energy โจ here's the menu:
- DESCRIPTION
- Security
- CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
- CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ฆ perl5342delta - what is new for perl v5.34.2 ๐ฆ
same energy, different patch number, no cap:
- DESCRIPTION
- Security
- CVE-2023-47038 - Write past buffer end via illegal user-defined Unicode property
- CVE-2023-47039 - Perl for Windows binary hijacking vulnerability
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ perl5341delta - what is new for perl v5.34.1 ๐
a little patch, a lot of polish:
- DESCRIPTION
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Testing
- Platform-Specific Notes
- Windows
- Platform-Specific Notes
- Selected Bug Fixes
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ perl5340delta - what is new for perl v5.34.0 ๐
oh this one is stacked โ the big v5.34 feature drop ๐
- DESCRIPTION
- Core Enhancements
- Experimental Try/Catch Syntax
"qr/{,n}/"is now accepted
- Blanks freely allowed within but adjacent to curly braces
- New octal syntax
"0oddddd" - Performance Enhancements
- Modules and Pragmata
- New Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- New Documentation
- Changes to Existing Documentation
- Diagnostics
- New Diagnostics
- Changes to Existing Diagnostics
- Utility Changes
- perl5db.pl (the debugger)
- New option:
"HistItemMinLength", Fix to"i"and"l"commands
- New option:
- perl5db.pl (the debugger)
- Configuration and Compilation
- stadtx hash support has been removed, Configure,
"-Dusedefaultstrict"
- stadtx hash support has been removed, Configure,
- 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 ๐
a tidy lil maintenance patch, we love to see it:
- DESCRIPTION
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- New Documentation
- Changes to Existing Documentation
- Diagnostics
- Changes to Existing Diagnostics
- Configuration and Compilation
- Testing
- Platform Support
- Platform-Specific Notes
- MacOS (Darwin), Minix
- Platform-Specific Notes
- Selected Bug Fixes
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ perl5320delta - what is new for perl v5.32.0 ๐
okay this one is long โ grab a snack bestie, we're going in ๐
- DESCRIPTION
- Core Enhancements
- The isa Operator
- Unicode 13.0 is supported
- Chained comparisons capability
- New Unicode properties
"Identifier_Status"and"Identifier_Type"supported - It is now possible to write
"qr/\p{Name=...}/", or"qr!\p{na=/(SMILING|GRINNING) FACE/}!" - Improvement of POSIX::mblen(),
"mbtowc", and"wctomb" - Alpha assertions are no longer experimental
- Script runs are no longer experimental
- Feature checks are now faster
- Perl is now developed on GitHub
- Compiled patterns can now be dumped before optimization
- Security
- [CVE-2020-10543] Buffer overflow caused by a crafted regular expression
- [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression
- [CVE-2020-12723] Buffer overflow caused by a crafted regular expression
- Additional Note
- Incompatible Changes
- Certain pattern matching features are now prohibited in compiling Unicode property value wildcard subpatterns
- Unused functions
"POSIX::mbstowcs"and"POSIX::wcstombs"are removed - A bug fix for
"(?[...])"may have caused some patterns to no longer compile "\p{user-defined}"properties now always override official Unicode ones- Modifiable variables are no longer permitted in constants
- Use of
"vec"on strings with code points above 0xFF is forbidden - Use of code points over 0xFF in string bitwise operators
- Sys::Hostname::hostname() does not accept arguments
- Plain
"0"string now treated as a number for range operator "\K"now disallowed in look-ahead and look-behind assertions
- Performance Enhancements
- Modules and Pragmata
- Updated Modules and Pragmata
- Removed Modules and Pragmata
- Documentation
- Changes to Existing Documentation
"caller","__FILE__","__LINE__","return","open"
- Changes to Existing Documentation
- Diagnostics
- New Diagnostics
- Changes to Existing Diagnostics
- Utility Changes
- perlbug
- The bug tracker homepage URL now points to GitHub
- streamzip
- perlbug
- Configuration and Compilation
- Configure
- Testing
- Platform Support
- Discontinued Platforms
- Windows CE
- Platform-Specific Notes
- Linux, NetBSD 8.0, Windows, Solaris, VMS, z/OS
- Discontinued Platforms
- Internal Changes
- Selected Bug Fixes
- Obituary
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ง perl5303delta - what is new for perl v5.30.3 ๐ง
the security-patch trio is back again โ same three CVEs, same "Additional Note" lil footnote:
- DESCRIPTION
- Security
- [CVE-2020-10543] Buffer overflow caused by a crafted regular expression
- [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression
- [CVE-2020-12723] Buffer overflow caused by a crafted regular expression
- Additional Note
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Testing
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
โญ perl5302delta - what is new for perl v5.30.2 โญ
- DESCRIPTION
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Documentation
- Changes to Existing Documentation
- Configuration and Compilation
- Testing
- Platform Support
- Platform-Specific Notes
- Windows
- Platform-Specific Notes
- 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
- Platform-Specific Notes
- Selected Bug Fixes
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ฅ perl5300delta - what is new for perl v5.30.0 ๐ฅ
v5.30.0 said "let me cook" and cooked ๐ณ look at all these changes:
- DESCRIPTION
- Notice
- Core Enhancements
- Limited variable length lookbehind in regular expression pattern matching is now experimentally supported
- The upper limit
"n"specifiable in a regular expression quantifier of the form"{m,n}"has been doubled to 65534 - Unicode 12.1 is supported
- Wildcards in Unicode property value specifications are now partially supported
- qr'\N{name}' is now supported
- Turkic UTF-8 locales are now seamlessly supported
- It is now possible to compile perl to always use thread-safe locale operations
- Eliminate opASSIGN macro usage from core
"-Drv"now means something on"-DDEBUGGING"builds
- Incompatible Changes
- Assigning non-zero to $[ is fatal
- Delimiters must now be graphemes
- Some formerly deprecated uses of an unescaped left brace
"{"in regular expression patterns are now illegal - Previously deprecated sysread()/syswrite() on :utf8 handles is now fatal
- my() in false conditional prohibited
- Fatalize $* and $#
- Fatalize unqualified use of dump()
- Remove File::Glob::glob()
- pack() no longer can return malformed UTF-8
- Any set of digits in the Common script are legal in a script run of another script
- JSON::PP enables allow_nonref by default
- Deprecations
- In XS code, use of various macros dealing with UTF-8
- Performance Enhancements
- Modules and Pragmata
- Updated Modules and Pragmata
- Removed Modules and Pragmata
- Documentation
- Changes to Existing Documentation
- Diagnostics
- Changes to Existing Diagnostics
- Utility Changes
- xsubpp
- Configuration and Compilation
- Testing
- Platform Support
- Platform-Specific Notes
- HP-UX 11.11, Mac OS X, Minix3, Cygwin, Win32 Mingw, Windows
- Platform-Specific Notes
- Internal Changes
- Selected Bug Fixes
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ฆ perl5283delta - what is new for perl v5.28.3 ๐ฆ
same CVE trio, same energy, lil maintenance moment:
- DESCRIPTION
- Security
- [CVE-2020-10543] Buffer overflow caused by a crafted regular expression
- [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression
- [CVE-2020-12723] Buffer overflow caused by a crafted regular expression
- Additional Note
- Incompatible Changes
- Modules and Pragmata
- Updated Modules and Pragmata
- Testing
- Acknowledgements
- Reporting Bugs
- Give Thanks
- SEE ALSO
๐ perl5282delta - what is new for perl v5.28.2 ๐
last one in this batch bestie, and it's a lil shortie:
- DESCRIPTION
- Incompatible Changes
- Any set of digits in the Common script are legal in a script run of another script
- Modules and Pragmata
- Updated Modules and Pragmata
- Platform Support
- Platform-Specific Notes
- Windows, Mac OS X
- Platform-Specific Notes
Selected Bug FixesAcknowledgementsReporting BugsGive ThanksSEE ALSO
perl5281delta โ what is new for perl v5.28.1
Bestie this one is a maintenance release and its TOC is chef's kiss tidy:
DESCRIPTIONSecurity[CVE-2018-18311]Integer overflow leading to buffer overflow and segmentation fault[CVE-2018-18312]Heap-buffer-overflow write inS_regatom(regcomp.c)
Incompatible ChangesModules and Pragmata- Updated Modules and Pragmata
Selected Bug FixesAcknowledgementsReporting BugsGive ThanksSEE ALSO
perl5280delta โ what is new for perl v5.28.0
okay this one is a big one, it's giving main character energy, buckle up ๐
DESCRIPTIONCore 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 AUTOLOAD for non-methods is no longer allowed
- Use of strings with code points over
0xFFis not allowed for bitwise string operators - Setting
"${^ENCODING}"to a defined value is now illegal - Backslash no longer escapes colon in
PATHfor 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 above0xFFis 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 associatedCountry,CurrencyandLanguagemodules
- Use of
Performance EnhancementsModules and Pragmata- Removal of
use vars - Use of
DynaLoaderchanged toXSLoaderin many modules - Updated Modules and Pragmata
- Removed Modules and Pragmata
- Removal of
Documentation- Changes to Existing Documentation
"Variable length lookbehind not implemented in regex m/%s/"in perldiag,"Use of state $_ is experimental"in perldiag
- Changes to Existing Documentation
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
- C89 requirement, New probes,
TestingPackagingPlatform Support- Discontinued Platforms
- PowerUX / Power MAX OS
- Platform-Specific Notes
- CentOS, Cygwin, Darwin, FreeBSD, VMS, Windows
- Discontinued Platforms
Internal ChangesSelected Bug FixesAcknowledgementsReporting BugsGive ThanksSEE ALSO
perl5263delta โ what is new for perl v5.26.3
Security patch central, bestie. Every single CVE listed, no skips ๐
DESCRIPTIONSecurity[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 ChangesModules and Pragmata- Updated Modules and Pragmata
Diagnostics- New Diagnostics
- Changes to Existing Diagnostics
AcknowledgementsReporting BugsGive ThanksSEE ALSO
perl5262delta โ what is new for perl v5.26.2
DESCRIPTIONSecurity[CVE-2018-6797]heap-buffer-overflow (WRITEof size 1) inS_regatom(regcomp.c)[CVE-2018-6798]Heap-buffer-overflow inPerl__byte_dump_string(utf8.c)[CVE-2018-6913]heap-buffer-overflow inS_pack_rec- Assertion failure in
Perl__core_swash_init(utf8.c)
Incompatible ChangesModules and Pragmata- Updated Modules and Pragmata
Documentation- Changes to Existing Documentation
Platform Support- Platform-Specific Notes
- Windows
- Platform-Specific Notes
Selected Bug FixesAcknowledgementsReporting BugsGive ThanksSEE ALSO
perl5261delta โ what is new for perl v5.26.1
DESCRIPTIONSecurity[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 ChangesModules and Pragmata- Updated Modules and Pragmata
Platform Support- Platform-Specific Notes
- FreeBSD, Windows
- Platform-Specific Notes
Selected Bug FixesAcknowledgementsReporting BugsGive ThanksSEE ALSO
perl5260delta โ what is new for perl v5.26.0
This TOC is LONG and I'm obsessed with it ๐ฆ every last heading, coming right up:
DESCRIPTIONNotice"."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 improvedScript_Extensionsproperty - 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- c2ph and pstruct
Porting/pod_lib.plPorting/sync-with-cpanperf/benchmarksPorting/checkAUTHORS.plt/porting/regen.tutils/h2xs.PL- perlbug
Configuration and CompilationTestingPlatform 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 ChangesSelected Bug FixesKnown ProblemsErrata From Previous ReleasesObituaryAcknowledgementsReporting BugsGive ThanksSEE ALSO
perl5244delta โ what is new for perl v5.24.4
DESCRIPTIONSecurity[CVE-2018-6797]heap-buffer-overflow (WRITEof size 1) inS_regatom(regcomp.c)[CVE-2018-6798]Heap-buffer-overflow inPerl__byte_dump_string(utf8.c)[CVE-2018-6913]heap-buffer-overflow inS_pack_rec- Assertion failure in
Perl__core_swash_init(utf8.c)
Incompatible ChangesModules and Pragmata- Updated Modules and Pragmata
Selected Bug FixesAcknowledgementsReporting BugsSEE ALSO
perl5243delta โ what is new for perl v5.24.3
DESCRIPTIONSecurity[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 ChangesModules and Pragmata- Updated Modules and Pragmata
Configuration and CompilationPlatform Support- Platform-Specific Notes
- VMS, Windows
- Platform-Specific Notes
Selected Bug FixesAcknowledgementsReporting BugsSEE ALSO
perl5242delta โ what is new for perl v5.24.2
DESCRIPTIONSecurity- Improved handling of
'.'in@INCinbase.pm "Escaped"colons and relative paths inPATH
- Improved handling of
Modules and Pragmata- Updated Modules and Pragmata
Selected Bug FixesAcknowledgementsReporting BugsSEE ALSO
perl5241delta โ what is new for perl v5.24.1
DESCRIPTIONSecurity-Diswitch is now required for PerlIO debugging output- Core modules and tools no longer search
"."for optional modules
Incompatible ChangesModules and Pragmata- Updated Modules and Pragmata
โฆand that last page finishes out exactly like this, bestie, no skips:
- Documentation
- Changes to Existing Documentation
- Testing
- Selected Bug Fixes
- Acknowledgements
- Reporting Bugs
- SEE ALSO
๐ฆ perl5240delta โ what is new for perl v5.24.0
v5.24.0 walked in and ate, honestly. Here's its full table of contents, every line, nothing cut:
- DESCRIPTION โ the little intro, the vibe-setter ๐
- Core Enhancements ๐ฅ
- postfix dereferencing is no longer experimental, it graduated ๐
- Unicode 8.0 is supported now ๐ฆ
- perl will now
croakwhen closing an in-place output file fails ๐ญ - new
"\b{lb}"boundary in regular expressions "qr/(?[ ])/"now works in UTF-8 locales โจ- integer shift (
"<<"and">>") is now more explicitly defined printfandsprintfnow allow reordered precision arguments- more fields get handed to the
"sigaction"callback with"SA_SIGINFO" - hashbang redirection to Perl 6 ๐
- Security ๐
- set the 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 the 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{}/"is now disallowed under"use re "strict""- nested declarations are now disallowed
- the
"/\C/"character class has been removed chdir('')no longer chdirs home- ASCII characters in variable names must now be all visible
- an off by one issue in
$Carp::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
the v5.22.4 rundown, short and sweet but every line is here fr:
- DESCRIPTION
- Security ๐
- improved handling of
'.'in@INCinbase.pm "Escaped"colons and relative paths inPATH
- 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
v5.22.3, the one where security said "actually, no." ๐
- 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
v5.22.2's list, and yeah the security section is doing the most, as it should:
- DESCRIPTION
- Security ๐
- fix out of boundary access in Win32 path handling
- fix loss of taint in
canonpath() - set proper
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
v5.22.1, small but it knew exactly what it was doing โจ
- DESCRIPTION
- Incompatible Changes ๐
- Bounds Checking Constructs
- Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
- Documentation ๐
- Changes to Existing Documentation
- Diagnostics ๐ฉบ
- Changes to Existing Diagnostics
- Configuration and Compilation โ๏ธ
- Platform Support ๐ฅ๏ธ
- Platform-Specific Notes
- IRIX
- Platform-Specific Notes
- Selected Bug Fixes ๐
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ perl5220delta โ what is new for perl v5.22.0
okay this one is a WHOLE meal, the section list is giving main character energy, let's go line by line ๐ฅ
- DESCRIPTION
- Core Enhancements ๐ฅ
- new bitwise operators
- new double-diamond operator ๐
- new
"\b"boundaries in regular expressions - non-capturing regular expression flag
"use re 'strict'"- Unicode 7.0 (with correction) is now supported ๐ฆ
"use locale"can restrict which locale categories are affected- Perl now supports POSIX 2008 locale currency additions
- better heuristics on older platforms for determining locale UTF-8ness
- aliasing via reference
"prototype"with no arguments- new
":const"subroutine attribute "fileno"now works on directory handles- list form of pipe open implemented for Win32
- assignment to list repetition
- infinity and NaN (not-a-number) handling improved
- floating point parsing has been improved
- packing infinity or not-a-number into a character is now fatal ๐
- experimental C Backtrace API
- Security ๐
- Perl is now compiled with
"-fstack-protector-strong"if available - the Safe module could allow outside packages to be replaced
- Perl is now always compiled with
"-D_FORTIFY_SOURCE=2"if available
- Perl is now compiled with
- 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)anddefined(%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
- setting
- 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
- Regained Platforms
- Internal Changes ๐ ๏ธ
- Selected Bug Fixes ๐
- Known Problems โ ๏ธ
- Obituary ๐ฏ๏ธ
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ perl5203delta โ what is new for perl v5.20.3
v5.20.3, quiet, tidy, still got h2ph a whole subsection ๐
- DESCRIPTION
- Incompatible Changes ๐
- Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
- Documentation ๐
- Changes to Existing Documentation
- Utility Changes ๐งฐ
- h2ph
- Testing ๐งช
- Platform Support ๐ฅ๏ธ
- Platform-Specific Notes
- Win32
- Platform-Specific Notes
- Selected Bug Fixes ๐
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
โจ perl5202delta โ what is new for perl v5.20.2
v5.20.2 out here with an Errata section, very "we fixed it, bestie" of it ๐ญ
- DESCRIPTION
- Incompatible Changes ๐
- Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
- Documentation ๐
- New Documentation
- Changes to Existing Documentation
- Diagnostics ๐ฉบ
- Changes to Existing Diagnostics
- Testing ๐งช
- Platform Support ๐ฅ๏ธ
- Regained Platforms
- Selected Bug Fixes ๐
- Known Problems โ ๏ธ
- Errata From Previous Releases ๐
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ง perl5201delta โ what is new for perl v5.20.1
v5.20.1, full little list, platform notes got a whole lineup:
- DESCRIPTION
- Incompatible Changes ๐
- Performance Enhancements ๐
- Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
- Documentation ๐
- Changes to Existing Documentation
- Diagnostics ๐ฉบ
- Changes to Existing Diagnostics
- Configuration and Compilation โ๏ธ
- Platform Support ๐ฅ๏ธ
- Platform-Specific Notes
- Android, OpenBSD, Solaris, VMS, Windows
- Platform-Specific Notes
- Internal Changes ๐ ๏ธ
- Selected Bug Fixes ๐
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ perl5200delta โ what is new for perl v5.20.0
and v5.20.0, the big one, Core Enhancements section is stacked. here's what we've got so far:
- DESCRIPTION
- Core Enhancements ๐ฅ
- Experimental Subroutine signatures
"sub"s now take a"prototype"attribute- more consistent prototype parsing
"rand"now uses a consistent random number generator- new slice syntax
- Experimental Postfix Dereferencing
- Unicode 6.3 now supported ๐ฆ
- new
"\p{Unicode}"regular expression pattern property - better 64-bit support
"use locale"now works on UTF-8 locales"use locale"now compiles on systems without locale ability- more locale initialization fallback options
"-DL"runtime option now added for tracing locale setting-Fnow implies-aand-aimplies-n$aand$bwarnings exemption
- Security ๐
- avoid possible read of
free()d memory during parsing
- avoid possible read of
that's where this part stops, bestie โ the rest of perl5200delta is coming in the next chunk ๐ซถ
๐ Incompatible Changes ๐
okay so these are the glow-ups that might break your old code, bestie. read carefully! ๐จ
docan 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 localescope - Assignments of Windows sockets error codes to $! now prefer errno.h values over WSAGetLastError() values
- Functions
PerlIO_vsprintfandPerlIO_sprintfhave been removed
๐ซ Deprecations ๐ซ
these are on thin ice, bestie. they're giving โyou should probably stop using thisโ energy. ๐
- The
/\C/character class - Literal control characters in variable names
- References to non-integers and non-positive integers in $/
- Character matching routines in POSIX
- Interpreter-based threads are now discouraged
- Module removals
- CGI and its associated CGI:: packages, inc::latest, Package::Constants, Module::Build and its associated Module::Build:: packages
- Utility removals
- find2perl, s2p, a2p
โก Performance Enhancements โก
we love a speed-up, no cap. ๐๏ธโจ
๐ฆ Modules and Pragmata ๐ฆ
the module tea is piping hot. โ
- New Modules and Pragmata
- Updated Modules and Pragmata
๐ Documentation ๐
read the docs, bestie. it's giving โthe manual is your friendโ. ๐๐
- New Documentation
- Changes to Existing Documentation
๐ฉบ Diagnostics ๐ฉบ
when perl yells at you, it's doing it with love. ๐
- New Diagnostics
- Changes to Existing Diagnostics
๐ ๏ธ Utility Changes ๐ ๏ธ
the tools got a little glow-up. ๐งโจ
โ๏ธ Configuration and Compilation โ๏ธ
build stuff, compile stuff, you know the vibe. ๐๏ธ
๐งช Testing ๐งช
test test test. periodt. ๐งชโ
๐ฅ๏ธ Platform Support ๐ฅ๏ธ
perl runs on everything, literally everything. ๐
- New Platforms
- Android, Bitrig, FreeMiNT, Synology
- Discontinued Platforms
sfio, AT&T 3b1, DG/UX, EBCDIC
- Platform-Specific Notes
- Cygwin, GNU/Hurd, Linux, Mac OS, MidnightBSD, Mixed-endian platforms, VMS, Win32, WinCE
๐ง Internal Changes ๐ง
under the hood stuff, iykyk. ๐ ๏ธ
๐ Selected Bug Fixes ๐
squashing bugs like it's our job (because it is). ๐๐ฅ
- Regular Expressions
- Perl 5 Debugger and -d
- Lexical Subroutines
- Everything Else
โ ๏ธ Known Problems โ ๏ธ
nobody's perfect, not even perl. ๐
๐๏ธ Obituary ๐๏ธ
rest in peace to the legends we lost. ๐
๐ Acknowledgements ๐
shoutout to everyone who contributed. y'all are the real MVPs. ๐ซถ
๐ Reporting Bugs ๐
found a bug? don't be shy, report it. the devs wanna know. ๐โก๏ธ๐ฉ
๐ SEE ALSO ๐
go read these next, bestie. iykyk. ๐โจ
perl5184delta - what is new for perl v5.18.4
๐ DESCRIPTION ๐
๐ฆ Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
๐ฅ๏ธ Platform Support ๐ฅ๏ธ
- Platform-Specific Notes
- Win32
๐ Selected Bug Fixes ๐
๐ Acknowledgements ๐
๐ Reporting Bugs ๐
๐ SEE ALSO ๐
perl5182delta - what is new for perl v5.18.2
๐ DESCRIPTION ๐
๐ฆ Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
๐ Documentation ๐
- Changes to Existing Documentation
๐ Selected Bug Fixes ๐
๐ Acknowledgements ๐
๐ Reporting Bugs ๐
๐ SEE ALSO ๐
perl5181delta - what is new for perl v5.18.1
๐ DESCRIPTION ๐
๐ Incompatible Changes ๐
๐ฆ Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
๐ฅ๏ธ Platform Support ๐ฅ๏ธ
- Platform-Specific Notes
- AIX, MidnightBSD
๐ Selected Bug Fixes ๐
๐ Acknowledgements ๐
๐ Reporting Bugs ๐
๐ SEE ALSO ๐
perl5180delta - what is new for perl v5.18.0
๐ DESCRIPTION ๐
๐ Core Enhancements ๐
- New mechanism for experimental features
- Hash overhaul
- Upgrade to Unicode 6.2
- Character name aliases may now include non-Latin1-range characters
- New DTrace probes
${^LAST_FH}- Regular Expression Set Operations
- Lexical subroutines
- Computed Labels
- More CORE:: subs
killwith negative signal names
๐ Security ๐
- See also: hash overhaul
Storablesecurity warning in documentationLocale::Maketextallowed 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
givennow aliases the global $_- The smartmatch family of features are now experimental
- Lexical $_ is now experimental
- readline() with
$/ = \Nnow reads N characters, not N bytes - Overridden
globis 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 subandour sub- Defined values stored in environment are forced to byte strings
requiredies for unreadable filesgv_fetchmeth_*and SUPERsplit's first argument is more consistently interpreted
๐ซ Deprecations ๐ซ
- Module removals
- encoding, Archive::Extract, B::Lint, B::Lint::Debug, CPANPLUS and all included
CPANPLUS::*modules, Devel::InnerPackage, Log::Message, Log::Message::Config, Log::Message::Handlers, Log::Message::Item, Log::Message::Simple, Module::Pluggable, Module::Pluggable::Object, Object::Accessor, Pod::LaTeX, Term::UI, Term::UI::History
- encoding, Archive::Extract, B::Lint, B::Lint::Debug, CPANPLUS and all included
- Deprecated Utilities
- cpanp,
cpanp-run-perl, cpan2dist, pod2latex
- cpanp,
- PL_sv_objcount
- Five additional characters should be escaped in patterns with
/x - User-defined charnames with surprising whitespace
- Various XS-callable functions are now deprecated
- Certain rare uses of backslashes within regexes are now deprecated
- Splitting the tokens
(?and(*in regular expressions - Pre-PerlIO IO implementations
๐ฎ Future Deprecations ๐ฎ
- DG/UX, NeXT
โก Performance Enhancements โก
๐ฆ Modules and Pragmata ๐ฆ
- New Modules and Pragmata
- Updated Modules and Pragmata
- Removed Modules and Pragmata
๐ Documentation ๐
- Changes to Existing Documentation
- New Diagnostics
- Changes to Existing Diagnostics
๐ ๏ธ Utility Changes ๐ ๏ธ
โ๏ธ Configuration and Compilation โ๏ธ
๐งช Testing ๐งช
๐ฅ๏ธ Platform Support ๐ฅ๏ธ
- Discontinued Platforms
- BeOS, UTS Global, VM/ESA, MPE/IX, EPOC, Rhapsody
- Platform-Specific Notes
๐ง Internal Changes ๐ง
๐ Selected Bug Fixes ๐
โ ๏ธ Known Problems โ ๏ธ
๐๏ธ Obituary ๐๏ธ
๐ Acknowledgements ๐
๐ Reporting Bugs ๐
๐ SEE ALSO ๐
perl5163delta - what is new for perl v5.16.3
๐ DESCRIPTION ๐
๐ Core Enhancements ๐
๐ Security ๐
- CVE-2013-1667: memory exhaustion with arbitrary hash keys
- wrap-around with IO on long strings
- memory leak in Encode
๐ Incompatible Changes ๐
๐ซ Deprecations ๐ซ
๐ฆ Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
โ ๏ธ Known Problems โ ๏ธ
๐ Acknowledgements ๐
๐ Reporting Bugs ๐
๐ SEE ALSO ๐
perl5162delta - what is new for perl v5.16.2
๐ DESCRIPTION ๐
๐ Incompatible Changes ๐
๐ฆ Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
โ๏ธ Configuration and Compilation โ๏ธ
- configuration should no longer be confused by ls colorization
๐ฅ๏ธ Platform Support ๐ฅ๏ธ
- Platform-Specific Notes
- AIX
๐ Selected Bug Fixes ๐
- fix /\h/ equivalence with /[\h]/
โ ๏ธ Known Problems โ ๏ธ
๐ Acknowledgements ๐
๐ Reporting Bugs ๐
๐ SEE ALSO ๐
perl5161delta - what is new for perl v5.16.1
๐ DESCRIPTION ๐
๐ Security ๐
- an off-by-two error in Scalar-List-Util has been fixed
๐ Incompatible Changes ๐
๐ฆ Modules and Pragmata ๐ฆ
- Updated Modules and Pragmata
โ๏ธ Configuration and Compilation โ๏ธ
๐ฅ๏ธ Platform Support ๐ฅ๏ธ
- Platform-Specific Notes
- VMS
๐ Selected Bug Fixes ๐
โ ๏ธ Known Problems โ ๏ธ
๐ Acknowledgements ๐
๐ Reporting Bugs ๐
๐ SEE ALSO ๐
perl5160delta - what is new for perl v5.16.0
๐ DESCRIPTION ๐
๐ข Notice ๐ข
๐ Core Enhancements ๐
use VERSION__SUB__- New and Improved Built-ins
- Unicode Support
- XS Changes
- Changes to Special Variables
- Debugger Changes
- The
CORENamespace - Other Changes
๐ Security ๐
- Use is_utf8_char_buf() and not is_utf8_char()
- Malformed UTF-8 input could cause attempts to read beyond the end of the buffer
- File::Glob::bsd_glob() memory error with GLOB_ALTDIRFUNC (CVE-2011-2728)
- Privileges are now set correctly when assigning to $(
๐ซ Deprecations ๐ซ
- Don't read the Unicode data base files in lib/unicore
- XS functions is_utf8_char(), utf8_to_uvchr() and utf8_to_uvuni()
๐ฎ Future Deprecations ๐ฎ
- Core Modules
- Platforms with no supporting programmers
- Other Future Deprecations
๐ Incompatible Changes ๐
- Special blocks called in void context
- The
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::Open3 no longer provides xfork(), xclose_on_exec() and xpipe_anon()
- $$ no longer caches PID
- $$ and getppid() no longer emulate POSIX semantics under LinuxThreads
- $<, $>, $( and $) are no longer cached
- Which Non-ASCII characters get quoted by
quotemetaand\Qhas changed
โก Performance Enhancements โก
๐ฆ Modules and Pragmata ๐ฆ
- Deprecated Modules
- Version::Requirements
- New Modules and Pragmata
- Updated Modules and Pragmata
- Removed Modules and Pragmata
๐ Documentation ๐
- New Documentation
- Changes to Existing Documentation
- Removed Documentation
๐ฉบ Diagnostics ๐ฉบ
- New Diagnostics
- Removed Errors
- Changes to Existing Diagnostics
๐ ๏ธ Utility Changes ๐ ๏ธ
โ๏ธ Configuration and Compilation โ๏ธ
๐ฅ๏ธ Platform Support ๐ฅ๏ธ
- Platform-Specific Notes
(psst โ we're still deep inside the delta from the last part, so these next bits are its insides, not a brand-new one ๐)
- Internal Changes โ guts-level renovations, zero user-facing chaos ๐
- Selected Bug Fixes โ the receipts list, bestie, and it is LONG โจ
- Array and hash ๐
- C API fixes ๐ง
- Compile-time hints โญ
- Copy-on-write scalars ๐ฆ
- The debugger ๐
- Dereferencing operators ๐
- Filehandle, last-accessed ๐
- Filetests and
stat๐ - Formats ๐
givenandwhen๐- The
globoperator ๐ธ - Lvalue subroutines ๐
- Overloading ๐ฅ
- Prototypes of built-in keywords ๐ซถ
- Regular expressions ๐
- Smartmatching ๐ญ
- The
sortoperator ๐ - The
substroperator โ๏ธ - Support for embedded nulls โญ
- Threading bugs ๐งต
- Tied variables ๐
- Version objects and vstrings ๐
- Warnings, redefinition ๐
- Warnings,
Uninitialized๐ - Weak references ๐ฆ
- Other notable fixes โจ
- Known Problems โ the stuff that's still lowkey haunted, no cap ๐ป
- Acknowledgements โ thank-you notes to the whole group chat ๐ซถ
- Reporting Bugs โ where to send your receipts ๐ฎ
- SEE ALSO โ the little "go read these too" menu ๐
๐ perl5144delta โ what is new for perl v5.14.4
- DESCRIPTION โ the intro vibe check
- Core Enhancements โ glow-ups in the core itself โจ
- Security โ the serious ones, and yes we're listing all of them ๐
CVE-2013-1667: memory exhaustion with arbitrary hash keysmemory leak in Encode[perl #111594] Socket::unpack_sockaddr_un heap-buffer-overflow[perl #111586] SDBM_File: fix off-by-one access to global ".dir"off-by-two error in List::Util[perl #115994] fix segv in regcomp.c:S_join_exact()[perl #115992] PL_eval_start use-after-freewrap-around with IO on long strings
- Incompatible Changes โ the "yeah this works differently now" section ๐
- Deprecations โ the soft launch of "please stop doing this" ๐
- Modules and Pragmata โ module gossip time ๐
- New Modules and Pragmata ๐ฑ
- Updated Modules and Pragmata โฌ๏ธ
Socket,SDBM_File,List::Util
- Removed Modules and Pragmata ๐๏ธ
- Documentation โ words got written ๐
- New Documentation ๐
- Changes to Existing Documentation โ๏ธ
- Diagnostics โ the error-message lore ๐จ
- Utility Changes โ the little tools got tweaks ๐ง
- Configuration and Compilation โ build-time business ๐๏ธ
- Platform Support โ every OS is a main character here ๐ป
- New Platforms ๐
- Discontinued Platforms ๐ชฆ
- Platform-Specific Notes ๐
- VMS
- Selected Bug Fixes โ the highlight reel โจ
- Known Problems โ still cursed, sorry bestie ๐ญ
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ฆ perl5143delta โ what is new for perl v5.14.3
- DESCRIPTION
- Core Enhancements โจ
- Security ๐
"Digest" unsafe use of eval (CVE-2011-3597)Heap buffer overrun in 'x' string repeat operator (CVE-2012-5195)
- Incompatible Changes ๐
- Deprecations ๐
- Modules and Pragmata ๐
- New Modules and Pragmata ๐ฑ
- Updated Modules and Pragmata โฌ๏ธ
- Removed Modules and Pragmata ๐๏ธ
- Documentation ๐
- New Documentation ๐
- Changes to Existing Documentation โ๏ธ
- Configuration and Compilation ๐๏ธ
- Platform Support ๐ป
- New Platforms ๐
- Discontinued Platforms ๐ชฆ
- Platform-Specific Notes ๐
FreeBSD, Solaris and NetBSD, HP-UX, Linux, Mac OS X, GNU/Hurd, NetBSD
- Bug Fixes ๐
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ธ perl5142delta โ what is new for perl v5.14.2
- DESCRIPTION
- Core Enhancements โจ
- Security ๐
File::Glob::bsd_glob() memory error with GLOB_ALTDIRFUNC (CVE-2011-2728)"Encode" decode_xs n-byte heap-overflow (CVE-2011-2939)
- Incompatible Changes ๐
- Deprecations ๐
- Modules and Pragmata ๐
- New Modules and Pragmata ๐ฑ
- Updated Modules and Pragmata โฌ๏ธ
- Removed Modules and Pragmata ๐๏ธ
- Platform Support ๐ป
- New Platforms ๐
- Discontinued Platforms ๐ชฆ
- Platform-Specific Notes ๐
HP-UX PA-RISC/64 now supports gcc-4.xBuilding on OS X 10.7 Lion and Xcode 4 works again
- Bug Fixes ๐
- Known Problems ๐ป
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ perl5141delta โ what is new for perl v5.14.1
- DESCRIPTION
- Core Enhancements โจ
- Security ๐
- Incompatible Changes ๐
- Deprecations ๐
- Modules and Pragmata ๐
- New Modules and Pragmata ๐ฑ
- Updated Modules and Pragmata โฌ๏ธ
- Removed Modules and Pragmata ๐๏ธ
- Documentation ๐
- New Documentation ๐
- Changes to Existing Documentation โ๏ธ
- Diagnostics ๐จ
- New Diagnostics ๐
- Changes to Existing Diagnostics โ๏ธ
- Utility Changes ๐ง
- Configuration and Compilation ๐๏ธ
- Testing ๐งช
- Platform Support ๐ป
- New Platforms ๐
- Discontinued Platforms ๐ชฆ
- Platform-Specific Notes ๐
- Internal Changes ๐
- Bug Fixes ๐
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
โญ perl5140delta โ what is new for perl v5.14.0
okay bestie, this one is the BIG one. Grab a snack. ๐
- DESCRIPTION
- Notice ๐ข
- Core Enhancements โจ
- Unicode ๐ค
- Regular Expressions ๐
- Syntactical Enhancements ๐
- Exception Handling ๐จ
- Other Enhancements ๐
-d:-foo,-d:-foo=bar
- New C APIs ๐ง
- Security ๐
- User-defined regular expression properties
- Incompatible Changes ๐
- Regular Expressions and String Escapes
- Stashes and Package Variables
- Changes to Syntax or to Perl Operators
- Threads and Processes
- Configuration
- Deprecations ๐
- Omitting a space between a regular expression and subsequent word
\cX\b{and\B{- Perl 4-era
.pllibraries - List assignment to
$[ - Use of
qw(...)as parentheses \N{BELL}?PATTERN?- Tie functions on scalars holding typeglobs
- User-defined case-mapping
- Deprecated modules ๐ชฆ
- Devel::DProf
- Performance Enhancements ๐
Safe signalsoptimisation- 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 SV and HV structures
- Memory consumption improvements to Exporter
- Memory savings for weak references
%+and%-use less memory- Multiple small improvements to threads
- Adjacent pairs of nextstate opcodes are now optimized away
- Modules and Pragmata ๐
- New Modules and Pragmata ๐ฑ
- Updated Modules and Pragma โฌ๏ธ
- much less configuration dialog hassle, support for
META/MYMETA.json, support forlocal::lib, support forHTTP::Tinyto reduce the dependency on FTP sites, automatic mirror selection, iron out all known bugs inconfigure_requires, support for distributions compressed withbzip2(1), allowFoo/Bar.pmon the command line to meanFoo::Bar,charinfo(),charscript(),charblock()
- much less configuration dialog hassle, support for
- Removed Modules and Pragmata ๐๏ธ
- Documentation ๐
- New Documentation ๐
- Changes to Existing Documentation โ๏ธ
- Diagnostics ๐จ
- New Diagnostics ๐
Closure prototype calledInsecure user-defined property %spanic: gp_free failed to free glob pointer - something is repeatedly re-creating entriesParsing code internal error (%s)refcnt: fd %d%sRegexp modifier "/%c" may not appear twiceRegexp modifiers "/%c" and "/%c" are mutually exclusiveUsing !~ with %s doesn't make sense"\b{" is deprecated; use "\b\{" instead"\B{" is deprecated; use "\B\{" insteadOperation "%s" returns its argument for ..Use of qw(...) as parentheses is deprecated
- Changes to Existing Diagnostics โ๏ธ
- New Diagnostics ๐
- Utility Changes ๐ง
- Configuration and Compilation ๐๏ธ
- Platform Support ๐ป
- New Platforms ๐
- AIX
- Discontinued Platforms ๐ชฆ
- Apollo DomainOS, MacOS Classic
- Platform-Specific Notes ๐
- New Platforms ๐
- Internal Changes ๐
- New APIs ๐
- C API Changes ๐
- Deprecated C APIs ๐
Perl_ptr_table_clear,sv_compile_2op,find_rundefsvoffset,CALL_FPTRandCPERLscope
- Other Internal Changes ๐
- Selected Bug Fixes โจ
- I/O
- Regular Expression Bug Fixes
- Syntax/Parsing Bugs
- Stashes, Globs and Method Lookup
Aliasing packages by assigning to globs [perl #77358],Deleting packages by deleting their containing stash elements,Undefining the glob containing a package ("undef *Foo::"),Undefining an ISA glob ("undef *Foo::ISA"),Deleting an ISA stash element ("delete $Foo::{ISA}"),Sharing @ISA arrays between classes (via "*Foo::ISA = \@Bar::ISA" or "*Foo::ISA = *Bar::ISA") [perl #77238]
- Unicode
- Ties, Overloading and Other Magic
- The Debugger
- Threads
- Scoping and Subroutines
- Signals
- Miscellaneous Memory Leaks
- Memory Corruption and Crashes
- Fixes to Various Perl Operators
- Bugs Relating to the C API
- Known Problems ๐ป
- Errata ๐
keys(),values(), andeach()work on arrayssplit()and@_
- Obituary ๐ฏ๏ธ
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ perl5125delta โ what is new for perl v5.12.5
- DESCRIPTION
- Security ๐
"Encode" decode_xs n-byte heap-overflow (CVE-2011-2939)File::Glob::bsd_glob() memory error with GLOB_ALTDIRFUNC (CVE-2011-2728)Heap buffer overrun in 'x' string repeat operator (CVE-2012-5195)
- Incompatible Changes ๐
- Modules and Pragmata ๐
- Updated Modules โฌ๏ธ
- Changes to Existing Documentation โ๏ธ
perlebcdicperlunicodeperluniprops
- Installation and Configuration Improvements ๐๏ธ
- Platform Specific Changes ๐ป
- Mac OS X, NetBSD
- Platform Specific Changes ๐ป
- 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,valueswork on arrays
- Bug Fixes ๐
- Platform Specific Notes ๐
- Solaris, VMS, VOS
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ perl5122delta โ what is new for perl v5.12.2
- DESCRIPTION
- Incompatible Changes ๐
- Core Enhancements โจ
- Modules and Pragmata ๐
- New Modules and Pragmata ๐ฑ
- Pragmata Changes ๐
- Updated Modules โฌ๏ธ
Carp,CPANPLUS,File::Glob,File::Copy,File::Spec
- Utility Changes ๐ง
- Changes to Existing Documentation โ๏ธ
- Installation and Configuration Improvements ๐๏ธ
- Configuration improvements โ๏ธ
- Compilation improvements ๐จ
- Selected Bug Fixes โจ
- Platform Specific Notes ๐
- AIX
- Windows
- VMS
- Acknowledgements ๐ซถ
- Reporting Bugs ๐ฎ
- SEE ALSO ๐
๐ง perl5121delta โ what is new for perl v5.12.1
- DESCRIPTION
- Incompatible Changes ๐
- Core Enhancements โจ
- Modules and Pragmata ๐
- Pragmata Changes ๐
- Updated Modules โฌ๏ธ
- Changes to Existing Documentation โ๏ธ
- Testing ๐งช
- Testing Improvements ๐
Installation and Configuration Improvements
- Configuration improvements
Bug Fixes
Platform Specific Notes
- HP-UX
- AIX
- FreeBSD 7
- VMS
Known Problems
Acknowledgements
Reporting Bugs
SEE ALSO
perl5120delta โ what is new for perl v5.12.0
okay bestie, deep breath, because the 5.12 glow-up is huge ๐
DESCRIPTION
Core Enhancements
- New
package NAME VERSIONsyntax - The
...operator - Implicit strictures
- Unicode improvements
- Y2038 compliance
- qr overloading
- Pluggable keywords
- APIs for more internals
- Overridable function lookup
- A proper interface for pluggable Method Resolution Orders
\Nexperimental regex escape- DTrace support
- Support for
configure_requiresin CPAN module metadata each,keys,valuesare now more flexiblewhenas a statement modifier$,flexibility//in when clauses- Enabling warnings from your shell environment
delete local- New support for Abstract namespace sockets
- 32-bit limit on substr arguments removed
Potentially Incompatible Changes
โ ๏ธ read this bit, fr โ things you used to do might hit different now
- Deprecations warn by default
- Version number formats
@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
gototo jump into a construct - Custom character names in
\N{name}that don't look like names - Deprecated Modules
Class::ISAPod::PlainerShellSwitch
- 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
Utility Changes
Selected Bug Fixes
Platform Specific Changes
- New Platforms
- Haiku, MirOS BSD
- Discontinued Platforms
- Domain/OS, MiNT, Tenon MachTen
- Updated Platforms
- AIX, Cygwin, Darwin (Mac OS X), DragonFly BSD, FreeBSD, Irix, NetBSD, OpenVMS, Stratus VOS, Symbian, Windows
Known Problems
Errata
Acknowledgements
Reporting Bugs
SEE ALSO
perl5101delta โ what is new for perl v5.10.1
the lil maintenance baby of the 5.10 era ๐ธ still got a whole lot of receipts tho
DESCRIPTION
Incompatible Changes
- Switch statement changes
- flip-flop operators, defined-or operator
- Smart match changes
- Other incompatible changes
Core Enhancements
- Unicode Character Database 5.1.0
- A proper interface for pluggable Method Resolution Orders
- The
overloadingpragma - Parallel tests
- DTrace support
- Support for
configure_requiresin CPAN module metadata
Modules and Pragmata
- New Modules and Pragmata
autodie,Compress::Raw::Bzip2,parent,Parse::CPAN::Meta
- Pragmata Changes
attributes,attrs,base,bigint,bignum,bigrat,charnames,constant,feature,fields,lib,open,overload,overloading,version
- Updated Modules
Archive::Extract,Archive::Tar,Attribute::Handlers,AutoLoader,AutoSplit,B,B::Debug,B::Deparse,B::Lint,B::Xref,Benchmark,Carp,CGI,Compress::Zlib,CPAN,CPANPLUS,CPANPLUS::Dist::Build,Cwd,Data::Dumper,DB,DB_File,Devel::PPPort,Digest::MD5,Digest::SHA,DirHandle,Dumpvalue,DynaLoader,Encode,Errno,Exporter,ExtUtils::CBuilder,ExtUtils::Command,ExtUtils::Constant,ExtUtils::Embed,ExtUtils::Install,ExtUtils::MakeMaker,ExtUtils::Manifest,ExtUtils::ParseXS,Fatal,File::Basename,File::Compare,File::Copy,File::Fetch,File::Find,File::Path,File::Spec,File::stat,File::Temp,FileCache,FileHandle,Filter::Simple,Filter::Util::Call,FindBin,GDBM_File,Getopt::Long,Hash::Util::FieldHash,I18N::Collate,IO,IO::Compress::*,IO::Dir,IO::Handle,IO::Socket,IO::Zlib,IPC::Cmd,IPC::Open3,IPC::SysV,lib,List::Util,Locale::MakeText,Log::Message,Math::BigFloat,Math::BigInt,Math::BigInt::FastCalc,Math::BigRat,Math::Complex,Math::Trig,Memoize,Module::Build,Module::CoreList,Module::Load,Module::Load::Conditional,Module::Loaded,Module::Pluggable,NDBM_File,Net::Ping,NEXT,Object::Accessor,OS2::REXX,Package::Constants,PerlIO,PerlIO::via,Pod::Man,Pod::Parser,Pod::Simple,Pod::Text,POSIX,Safe,Scalar::Util,SelectSaver,SelfLoader,Socket,Storable,Switch,Symbol,Sys::Syslog,Term::ANSIColor,Term::ReadLine,Term::UI,Test::Harness,Test::Simple,Text::ParseWords,Text::Tabs,Text::Wrap,Thread::Queue,Thread::Semaphore,threads,threads::shared,Tie::RefHash,Tie::StdHandle,Time::HiRes,Time::Local,Time::Piece,Unicode::Normalize,Unicode::UCD,UNIVERSAL,Win32,Win32API::File,XSLoader
Utility Changes
- h2ph, h2xs, perl5db.pl, perlthanks
New Documentation
- perlhaiku, perlmroapi, perlperf, perlrepository, perlthanks
Changes to Existing Documentation
Performance Enhancements
Installation and Configuration Improvements
- ext/ reorganisation
- Configuration improvements
- Compilation improvements
- Platform Specific Changes
- AIX, Cygwin, FreeBSD, Irix, Haiku, MirOS BSD, NetBSD, Stratus VOS, Symbian, Win32, VMS
Selected Bug Fixes
New or Changed Diagnostics
panic: sv_chop %s,Can't locate package %s for the parents of %s,v-string in use/require is non-portable, Deep recursion on subroutine"%s"
Changed Internals
SVf_UTF8,SVs_TEMP
New Tests
- t/comp/retainedlines.t, t/io/perlio_fail.t, t/io/perlio_leaks.t, t/io/perlio_open.t, t/io/perlio.t, t/io/pvbm.t, t/mro/package_aliases.t, t/op/dbm.t, t/op/index_thr.t, t/op/pat_thr.t, t/op/qr_gc.t, t/op/reg_email_thr.t, t/op/regexp_qr_embed_thr.t, t/op/regexp_unicode_prop.t, t/op/regexp_unicode_prop_thr.t, t/op/reg_nc_tie.t, t/op/reg_posixcc.t, t/op/re.t, t/op/setpgrpstack.t, t/op/substr_thr.t, t/op/upgrade.t, t/uni/lex_utf8.t, t/uni/tie.t
Known Problems
Deprecations
Acknowledgements
Reporting Bugs
SEE ALSO
perl5100delta โ what is new for perl 5.10.0
the origin story ๐ซถ the era that gave us say energy before we even knew we needed it
DESCRIPTION
Core Enhancements
- The
featurepragma - New -E command-line switch
- Defined-or operator
- Switch and Smart Match operator
- Regular expressions
- Recursive Patterns, Named Capture Buffers, Possessive Quantifiers, Backtracking control verbs, Relative backreferences,
\Kescape, Vertical and horizontal whitespace, and linebreak, Optional pre-match and post-match captures with the /p flag
- Recursive Patterns, Named Capture Buffers, Possessive Quantifiers, Backtracking control verbs, Relative backreferences,
say()Lexical $_The "_" prototypeUNITCHECKblocksNew Pragma, "mro"readdir() may return a "short filename" on Windowsreadpipe() is now overridableDefault argument for readline()state() variablesStacked filetest operatorsUNIVERSAL::DOES()FormatsByte-order modifiers for pack() and unpack()"no VERSION""chdir", "chmod" and "chown" on filehandlesOS groupsRecursive sort subsExceptions in constant foldingSource filters in @INCNew internal variables๐ซถ"${^RE_DEBUG_FLAGS}", "${^CHILD_ERROR_NATIVE}", "${^RE_TRIE_MAXBUF}", "${^WIN32_SLOPPY_STAT}"
Miscellaneousโ the catch-all bucket, we love a grab bag ๐UCD 5.0.0MADkill() on Windows
๐ฅ Incompatible Changes ๐ฅ
bestie this is the part where things you used to do justโฆ don't work anymore. read it, fr fr.
Packing and UTF-8 stringsByte/character count feature in unpack()The $* and $# variables have been removedsubstr() lvalues are no longer fixed-lengthParsing of "-f _"":unique"Effect of pragmas in evalchdir FOOHandling of .pmc files$^V is now a "version" object instead of a v-string@- and @+ in patterns$AUTOLOAD can now be taintedTainting and printfundef and signal handlersstrictures and dereferencing in defined()"(?p{})" has been removedPseudo-hashes have been removedโ RIP bestie, you had a good run ๐Removal of the bytecode compiler and of perlccRemoval of the JPLRecursive inheritance detected earlierwarnings::enabled and warnings::warnif changed to favor users of modulesRemoval of "package;" ("package" without arguments)
๐งฉ Modules and Pragmata ๐งฉ
Upgrading individual core modulesPragmata Changesโจ"feature", "mro", Scoping of the "sort" pragma, Scoping of "bignum", "bigint", "bigrat", "base", "strict" and "warnings", "version", "warnings", "less"
New modulesSelected Changes to Core Modules๐"Attribute::Handlers", "B::Lint", "B", "Thread"
๐ ๏ธ Utility Changes ๐ ๏ธ
perl -d, ptar, ptardiff, shasum, corelist, h2ph and h2xs, perlivp, find2perl, config_data, cpanp, cpan2dist, pod2html
๐ New Documentation ๐
(no sub-entries here, it's justโฆ new docs. iconic.)
โก Performance Enhancements โก
In-place sortingLexical array accessXS-assisted SWASHGETConstant subroutines"PERL_DONT_CREATE_GVSV"Weak references are cheapersort() enhancementsMemory optimisationsUTF-8 cache optimisationSloppy stat on WindowsRegular expressions optimisations๐Engine de-recursivised, Single char char-classes treated as literals, Trie optimisation of literal string alternations, Aho-Corasick start-point optimisation
๐๏ธ Installation and Configuration Improvements ๐๏ธ
Configuration improvements๐"-Dusesitecustomize", Relocatable installations, strlcat() and strlcpy(), "d_pseudofork" and "d_printf_format_null", Configure help
Compilation improvementsโจParallel build, Borland's compilers support, Static build on Windows, ppport.h files, C++ compatibility, Support for Microsoft 64-bit compiler, Visual C++, Win32 builds
Installation improvements๐ซถModule auxiliary files
New Or Improved Platforms
๐ Selected Bug Fixes ๐
strictures in regexp-eval blocks, Calling CORE::require(), Subscripts of slices, "no warnings 'category'" works correctly with -w, threads improvements, chr() and negative values, PERL5SHELL and tainting, Using *FILE{IO}, Overloading and reblessing, Overloading and UTF-8, eval memory leaks fixed, Random device on Windows, PERLIO_DEBUG, PerlIO::scalar and read-only scalars, study() and UTF-8, Critical signals, @INC-hook fix, "-t" switch fix, Duping UTF-8 filehandles, Localisation of hash elements
๐จ New or Changed Diagnostics ๐จ
Use of uninitialized value, Deprecated use of my() in false conditional, !=~ should be !~, Newline in left-justified string, Too late for "-T" option, "%s" variable %s masks earlier declaration, readdir()/closedir()/etc. attempted on invalid dirhandle, Opening dirhandle/filehandle %s also as a file/directory, Use of -P is deprecated, v-string in use/require is non-portable, perl -V
๐ง Changed Internals ๐ง
Reordering of SVt_* constantsElimination of SVt_PVBMNew type SVt_BINDRemoval of CPP symbolsLess space is used by opsNew parserUse of "const"Mathoms"AvFLAGS" has been removed"av_*" changes$^H and %^HB:: modules inheritance changedAnonymous hash and array constructors
๐ญ Known Problems ๐ญ
UTF-8 problemsโ the eternal struggle, nglPlatform Specific ProblemsReporting BugsSEE ALSO
๐ฆ perl589delta - what is new for perl v5.8.9 ๐ฆ
DESCRIPTION
Notice
Incompatible Changes
โจ Core Enhancements โจ
Unicode Character Database 5.1.0stat and -X on directory handlesSource filters in @INCExceptions in constant folding"no VERSION"Improved internal UTF-8 caching codeRuntime relocatable installationsNew internal variables๐"${^CHILD_ERROR_NATIVE}", "${^UTF8CACHE}"
"readpipe" is now overridablesimple exception handling macros-D option enhancementsXS-assisted SWASHGETConstant subroutines
New Platforms
๐ฆ Modules and Pragmata ๐ฆ
New ModulesUpdated Modules
๐ ๏ธ Utility Changes ๐ ๏ธ
debugger upgraded to version 1.31perlthanksperlbugh2xsh2ph
๐ New Documentation ๐
Changes to Existing Documentation
โก Performance Enhancements โก
๐๏ธ Installation and Configuration Improvements ๐๏ธ
Relocatable installationsConfiguration improvementsCompilation improvementsInstallation improvementsPlatform Specific Changes
๐ Selected Bug Fixes ๐
UnicodePerlIOMagicReblessing overloaded objects now works"strict" now propagates correctly into string evalsOther fixesPlatform Specific FixesSmaller fixes
๐จ New or Changed Diagnostics ๐จ
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 ๐งช
ext/DynaLoader/t/DynaLoader.t, t/comp/fold.t, t/io/pvbm.t, t/lib/proxy_constant_subs.t, t/op/attrhand.t, t/op/dbm.t, t/op/inccode-tie.t, t/op/incfilter.t, t/op/kill0.t, t/op/qrstack.t, t/op/qr.t, t/op/regexp_qr_embed.t, t/op/regexp_qr.t, t/op/rxcode.t, t/op/studytied.t, t/op/substT.t, t/op/symbolcache.t, t/op/upgrade.t, t/mro/package_aliases.t, t/pod/twice.t, t/run/cloexec.t, t/uni/cache.t, t/uni/chr.t, t/uni/greek.t, t/uni/latin2.t, t/uni/overload.t, t/uni/tie.t
๐ญ Known Problems ๐ญ
Platform Specific Notes
Win32OS/2VMS
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 -wRemove over-optimisationsprintf() fixesDebugger and Unicode slowdownSmaller 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.0suidperl less insecureOptional 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 debuggerh2ph
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 wrappingUnicode Character Database 4.0.1suidperl less insecureformat
๐ฆ Modules and Pragmata ๐ฆ
Updated modules๐Attribute::Handlers, B, Benchmark, CGI, Carp, Cwd, Exporter, File::Find, IO, IPC::Open3, Local::Maketext, Math::BigFloat, Math::BigInt, Math::BigRat, MIME::Base64, ODBM_File, POSIX, Shell, Socket, Storable, Switch, Sys::Syslog, Term::ANSIColor, Time::HiRes, Unicode::UCD, Win32, base, open, threads, utf8
Performance Enhancements
Utility Changes
Installation and Configuration Improvements
Selected Bug Fixes
New or Changed Diagnostics
Changed Internals
Future Directions
Platform Specific Problems
Reporting Bugs
SEE ALSO
Okay so these next ones are the โจdeltaโจ pages โ the "what even changed" gossip columns for each Perl release. Think of them as the group chat receipts for every version. Let's go, no cap ๐
perl583delta โ what is new for perl v5.8.3 ๐
The tea on v5.8.3, served fresh:
- DESCRIPTION
- Incompatible Changes
- Core Enhancements
- Modules and Pragmata
- CGI, Cwd, Digest, Digest::MD5, Encode, File::Spec, FindBin, List::Util, Math::BigInt, PodParser, Pod::Perldoc, POSIX, Unicode::Collate, Unicode::Normalize, Test::Harness, threads::shared
- Utility Changes
- New Documentation
- Installation and Configuration Improvements
- Selected Bug Fixes
- New or Changed Diagnostics
- Changed Internals
- Configuration and Building
- Platform Specific Problems
- Known Problems
- Future Directions
- Obituary
- Reporting Bugs
- SEE ALSO
perl582delta โ what is new for perl v5.8.2 ๐ฆ
v5.8.2's receipts, bestie:
- DESCRIPTION
- Incompatible Changes
- Core Enhancements
- Hash Randomisation
- Threading
- Modules and Pragmata
- Updated Modules And Pragmata
- Devel::PPPort, Digest::MD5, I18N::LangTags, libnet, MIME::Base64, Pod::Perldoc, strict, Tie::Hash, Time::HiRes, Unicode::Collate, Unicode::Normalize, UNIVERSAL
- Updated Modules And Pragmata
- Selected Bug Fixes
- Changed Internals
- Platform Specific Problems
- Future Directions
- Reporting Bugs
- SEE ALSO
perl581delta โ what is new for perl v5.8.1 ๐ธ
The v5.8.1 rundown, and it's giving thorough:
- DESCRIPTION
- Incompatible Changes
- Hash Randomisation
- UTF-8 On Filehandles No Longer Activated By Locale
- Single-number v-strings are no longer v-strings before
"=>" - (Win32) The
-CSwitch Has Been Repurposed - (Win32) The
/dSwitch Ofcmd.exe
- Core Enhancements
- UTF-8 no longer default under UTF-8 locales
- Unsafe signals again available
- Tied Arrays with Negative Array Indices
local ${$x}- Unicode Character Database 4.0.0
- Deprecation Warnings
- Miscellaneous Enhancements
- Modules and Pragmata
- Updated Modules And Pragmata
- base, B::Bytecode, B::Concise, B::Deparse, Benchmark, ByteLoader, bytes, CGI, charnames, CPAN, Data::Dumper, DB_File, Devel::PPPort, Digest::MD5, Encode, fields, libnet, Math::BigInt, MIME::Base64, NEXT, Net::Ping, PerlIO::scalar, podlators, Pod::LaTeX, PodParsers, Pod::Perldoc, Scalar::Util, Storable, strict, Term::ANSIcolor, Test::Harness, Test::More, Test::Simple, Text::Balanced, Time::HiRes, threads, threads::shared, Unicode::Collate, Unicode::Normalize, Win32::GetFolderPath, Win32::GetOSVersion
- Updated Modules And Pragmata
- 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
- Changed Internals
- New Tests
- Known Problems
- Tied hashes in scalar context
- Net::Ping 450_service and 510_ping_udp failures
- B::C
- Platform Specific Problems
- EBCDIC Platforms
- Cygwin 1.5 problems
- HP-UX: HP cc warnings about sendfile and sendpath
- IRIX: t/uni/tr_7jis.t falsely failing
- Mac OS X: no usemymalloc
- Tru64: No threaded builds with GNU cc (gcc)
- Win32: sysopen, sysread, syswrite
- Future Directions
- Reporting Bugs
- SEE ALSO
perl58delta โ what is new for perl v5.8.0 ๐
The BIG one. v5.8.0 said "main character energy" and meant it:
- DESCRIPTION
- Highlights In 5.8.0
- Incompatible Changes
- Binary Incompatibility
- 64-bit platforms and malloc
- AIX Dynaloading
- Attributes for
"my"variables now handled at run-time - Socket Extension Dynamic in VMS
- IEEE-format Floating Point Default on OpenVMS Alpha
- New Unicode Semantics (no more
"use utf8", almost) - New Unicode Properties
REF(...)Instead OfSCALAR(...)pack/unpackD/Frecycledglob()now returns filenames in alphabetical order- Deprecations
- Core Enhancements
- Unicode Overhaul
- PerlIO is Now The Default
- ithreads
- Restricted Hashes
- Safe Signals
- Understanding of Numbers
- Arrays now always interpolate into double-quoted strings [561]
- Miscellaneous Changes
- Modules and Pragmata
- New Modules and Pragmata
- Updated And Improved Modules and Pragmata
- Utility Changes
- New Documentation
- Performance Enhancements
- Installation and Configuration Improvements
- Generic Improvements
- New Or Improved Platforms
- Selected Bug Fixes
- Platform Specific Changes and Fixes
- New or Changed Diagnostics
- Changed Internals
- Security Vulnerability Closed [561]
- New Tests
- Known Problems
- The Compiler Suite Is Still Very Experimental
- Localising Tied Arrays and Hashes Is Broken
- Building Extensions Can Fail Because Of Largefiles
- Modifying
$_Insidefor(..) - mod_perl 1.26 Doesn't Build With Threaded Perl
- lib/ftmp-security tests warn 'system possibly insecure'
- libwww-perl (LWP) fails base/date #51
- PDL failing some tests
- Perl_get_sv
- Self-tying Problems
- ext/threads/t/libc
- Failure of Thread (5.005-style) tests
- Timing problems
- Tied/Magical Array/Hash Elements Do Not Autovivify
- Unicode in package/class and subroutine names does not work
- Platform Specific Problems
- AIX
- Alpha systems with old gccs fail several tests
- AmigaOS
- BeOS
- Cygwin "unable to remap"
- Cygwin ndbm tests fail on FAT
- DJGPP Failures
- FreeBSD built with ithreads coredumps reading large directories
- FreeBSD Failing locale Test 117 For ISO 8859-15 Locales
- IRIX fails ext/List/Util/t/shuffle.t or Digest::MD5
- HP-UX lib/posix Subtest 9 Fails When LP64-Configured
- Linux with glibc 2.2.5 fails t/op/int subtest #6 with
-Duse64bitint - Linux With Sfio Fails op/misc Test 48
- Mac OS X
- Mac OS X dyld undefined symbols
- OS/2 Test Failures
- op/sprintf tests 91, 129, and 130
- SCO
- Solaris 2.5
- Solaris x86 Fails Tests With
-Duse64bitint - SUPER-UX (NEC SX)
- Term::ReadKey not working on Win32
- UNICOS/mk
- UTS
- VOS (Stratus)
- VMS
- Win32
- XML::Parser not working
- z/OS (OS/390)
- Unicode Support on EBCDIC Still Spotty
- Seen In Perl 5.7 But Gone Now
- Reporting Bugs
- SEE ALSO
- HISTORY
perl561delta โ what's new for perl v5.6.1 ๐
v5.6.1, aka the glow-up between 5.6.0 and 5.6.1. Obsessed:
- DESCRIPTION
- Summary of changes between 5.6.0 and 5.6.1
- Security Issues
- Core bug fixes
UNIVERSAL::isa(), Memory leaks, Numeric conversions,qw(a\\b),caller(), Bugs in regular expressions,"slurp"mode, Autovivification of symbolic references to special variables, Lexical warnings, Spurious warnings and errors,glob(), Tainting,sort(),#linedirectives, Subroutine prototypes,map(), Debugger,PERL5OPT,chop(), Unicode support, 64-bit support, Compiler, Lvalue subroutines,IO::Socket,File::Find,xsubpp,"no Module;", Tests
- Core features
- Configuration issues
- Documentation
- Bundled modules
- B::Concise, File::Temp, Pod::LaTeX, Pod::Text::Overstrike, CGI, CPAN, Class::Struct, DB_File, Devel::Peek, File::Find, Getopt::Long, IO::Poll, IPC::Open3, Math::BigFloat, Math::Complex, Net::Ping, Opcode, Pod::Parser, Pod::Text, SDBM_File, Sys::Syslog, Tie::RefHash, Tie::SubstrHash
- Platform-specific improvements
- NCR MP-RAS, NonStop-UX
- Core Enhancements
- Interpreter cloning, threads, and concurrency
- Lexically scoped warning categories
- Unicode and UTF-8 support
- Support for interpolating named characters
"our"declarations- Support for strings represented as a vector of ordinals
- Improved Perl version numbering system
- New syntax for declaring subroutine attributes
- File and directory handles can be autovivified
open()with more than two arguments- 64-bit support
- Large file support
- Long doubles
"more bits"- Enhanced support for
sort()subroutines "sort $coderef @foo"allowed- File globbing implemented internally
- Support for
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 ๐ธ
bestie, this is the glow-up era of perl and it brought FRIENDS ๐ซถ every single one of these is a module or pragma that got the spotlight:
๐ Modules ๐
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 ๐
(that's it bestie, the heading is the whole vibe ๐)
๐ ๏ธ Utility Changes ๐ ๏ธ
the little tools got a makeover, no cap โจ
dprofpp
find2perl
h2xs
perlcc
perldoc
The Perl Debugger
๐ Improved Documentation ๐
the docs ate and left no crumbs ๐
here's every .pod that got some love:
perlapi.podperlboot.podperlcompile.podperldbmfilter.podperldebug.podperldebguts.podperlfork.podperlfilter.podperlhack.podperlintern.podperllexwarn.podperlnumber.podperlopentut.podperlreftut.podperltootc.podperltodo.podperlunicode.pod
โก Performance enhancements โก
she's faster now and she knows it ๐๐ฅ
- Simple
sort()using{ $a <=> $b }and the like are optimized - Optimized assignments to lexical variables
- Faster subroutine calls
delete(),each(),values()and hash iteration are faster
๐ Installation and Configuration Improvements ๐
the setup experience is giving organized ๐
-Dusethreadsmeans something different- New Configure flags
- Threadedness and 64-bitness now more daring
- Long Doubles
-Dusemorebits-Duselargefilesinstallusrbinperl- SOCKS support
"-A"flag- Enhanced Installation Directories
gccautomatically tried if'cc'does not seem to be working
๐ Platform specific changes ๐
perl said "I contain multitudes" fr fr ๐
- Supported platforms
- DOS
- OS390 (OpenEdition MVS)
- VMS
- Win32
๐ Significant bug fixes ๐
not me being obsessed with all these little gremlins getting squashed ๐ฆ
<HANDLE>on empty files"eval '...'"improvements- All compilation errors are true errors
- Implicitly closed filehandles are safer
- Behavior of list slices is more consistent
"(\$)"prototype and$foo{a}"goto &sub"and AUTOLOAD"-bareword"allowed under"use integer"- Failures in
DESTROY() - Locale bugs fixed
- Memory leaks
- Spurious subroutine stubs after failed subroutine calls
- Taint failures under
"-U" - END blocks and the
"-c"switch - Potential to leak DATA filehandles
๐ New or Changed Diagnostics ๐
okay so this is the LONG one bestie, brace yourself, every single new or changed message is right here and I'm not skipping a single one ๐ญ
"%s" variable %s masks earlier declaration in same %s"my sub" not yet implemented"our" variable %s redeclared'!' allowed only after types %s/ cannot take a count/ must be followed by a, A or Z/ must be followed by a*, A* or Z*/ must follow a numeric type/%s/: Unrecognized escape \\%c passed through/%s/: Unrecognized escape \\%c in character class passed through/%s/ should probably be written as "%s"%s() called too early to check prototype%s argument is not a HASH or ARRAY element%s argument is not a HASH or ARRAY element or slice%s argument is not a subroutine name%s package attribute may clash with future reserved word: %s(in cleanup) %s<> should be 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
phew. you made it. hydration check, bestie ๐
๐งช New tests ๐งช
(more tests, more slay, the heading is the whole thing โจ)
๐ง Incompatible Changes ๐ง
heads up bestie, some stuff works DIFFERENT now, this is not a drill ๐
Perl Source Incompatibilities
- CHECK is a new keyword
- Treatment of list slices of undef has changed
- Format of
$English::PERL_VERSIONis different - Literals of the form
1.2.3parse differently - Possibly changed pseudo-random number generator
- Hashing function for hash keys has changed
"undef"fails on read only values- Close-on-exec bit may be set on pipe and socket handles
- Writing
"$$1"to mean"${$}1"is unsupported delete(),each(),values()and"\(%h)"vec(EXPR,OFFSET,BITS)enforces powers-of-two BITS- Text of some diagnostic output has changed
"%@"has been removed- Parenthesized
not()behaves like a list operator - Semantics of bareword prototype
"(*)"have changed - Semantics of bit operators may have changed on 64-bit platforms
- More builtins taint their results
C Source Incompatibilities
"PERL_POLLUTE""PERL_IMPLICIT_CONTEXT""PERL_POLLUTE_MALLOC"
Compatible C Source API Changes
"PATCHLEVEL"is now"PERL_VERSION"
Binary Incompatibilities
(that's the whole section, no entries, just the vibe ๐)
โ ๏ธ Known Problems โ ๏ธ
ngl some things are still lowkey cursed, we're being honest about it ๐
- Localizing a tied hash element may leak memory
- Known test failures
- EBCDIC platforms not fully supported
- UNICOS/mk CC failures during Configure run
- Arrow operator and arrays
๐ง Experimental features ๐ง
these are the "we're still figuring it out" girlies โจ:
- Threads
- Unicode
- 64-bit support
- Lvalue subroutines
- Weak references
- The pseudo-hash data type
- The Compiler suite
- Internal implementation of file globbing
- The DB module
- The regular expression code constructs:
๐๏ธ Obsolete Diagnostics ๐๏ธ
old messages that got the boot ๐ iconic of them tbh
Character class syntax [: :] is reserved for future 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 ๐
(found a bug? the heading says it all, bestie ๐)
๐ SEE ALSO ๐
(more pages to vibe with, the heading is the whole thing ๐ธ)
๐ HISTORY ๐
(where perl came from, the origin story, the heading carries it ๐)
๐ซ perl56delta - what's new for perl v5.6.0 ๐ซ
okay bestie, deep breath ๐ this is the full table of contents for the entire "what's new in perl v5.6.0" document, and it is a whole saga. every section, every subsection, all listed out. grab a snack ๐
๐ DESCRIPTION
โจ Core Enhancements โจ
this is the main-character lineup of everything that leveled up:
- Interpreter cloning, threads, and concurrency ๐งต
- Lexically scoped warning categories
- Unicode and UTF-8 support ๐
- Support for interpolating named characters
- "our" declarations
- Support for strings represented as a vector of ordinals
- Improved Perl version numbering system
- New syntax for declaring subroutine attributes
- File and directory handles can be autovivified
- open() with more than two arguments
- 64-bit support
- Large file support
- Long doubles
- "more bits"
- Enhanced support for sort() subroutines
- "sort $coderef @foo" allowed
- File globbing implemented internally
- Support for CHECK blocks
- POSIX character class syntax [: :] supported
- Better pseudo-random number generator
- Improved "qw//" operator
- Better worst-case behavior of hashes
- pack() format 'Z' supported
- pack() format modifier '!' supported
- pack() and unpack() support counted strings
- Comments in pack() templates
- Weak references
- Binary numbers supported
- Lvalue subroutines
- Some arrows may be omitted in calls through references
- Boolean assignment operators are legal lvalues
- exists() is supported on subroutine names
- exists() and delete() are supported on array elements
- Pseudo-hashes work better
- Automatic flushing of output buffers
- Better diagnostics on meaningless filehandle operations
- Where possible, buffered data discarded from duped input filehandle
- eof() has the same old magic as <>
- binmode() can be used to set :crlf and :raw modes
- "-T" filetest recognizes UTF-8 encoded files as "text"
- system(), backticks and pipe open now reflect exec() failure
- Improved diagnostics
- Diagnostics follow STDERR
- More consistent close-on-exec behavior
- syswrite() ease-of-use
- Better syntax checks on parenthesized unary operators
- Bit operators support full native integer width
- Improved security features
- More functional bareword prototype (*)
- "require" and "do" may be overridden
- $^X variables may now have names longer than one character
- New variable $^C reflects "-c" switch
- New variable $^V contains Perl version as a string
- Optional Y2K warnings
- Arrays now always interpolate into double-quoted strings
- @- and @+ provide starting/ending offsets of regex matches
๐ฆ Modules and Pragmata ๐ฆ
- Modules
- attributes, B, Benchmark, ByteLoader, constant, charnames, Data::Dumper, DB, DB_File, Devel::DProf, Devel::Peek, Dumpvalue, DynaLoader, English, Env, Fcntl, File::Compare, File::Find, File::Glob, File::Spec, File::Spec::Functions, Getopt::Long, IO, JPL, lib, Math::BigInt, Math::Complex, Math::Trig, Pod::Parser, Pod::InputObjects, Pod::Checker, podchecker, Pod::ParseUtils, Pod::Find, Pod::Select, podselect, Pod::Usage, pod2usage, Pod::Text and Pod::Man, SDBM_File, Sys::Syslog, Sys::Hostname, Term::ANSIColor, Time::Local, Win32, XSLoader, DBM Filters
- Pragmata
๐ Utility Changes ๐
- dprofpp
- find2perl
- h2xs
- perlcc
- perldoc
- The Perl Debugger
๐ Improved Documentation ๐
the glow-up era for the docs, fr fr:
- perlapi.pod
- perlboot.pod
- perlcompile.pod
- perldbmfilter.pod
- perldebug.pod
- perldebguts.pod
- perlfork.pod
- perlfilter.pod
- perlhack.pod
- perlintern.pod
- perllexwarn.pod
- perlnumber.pod
- perlopentut.pod
- perlreftut.pod
- perltootc.pod
- perltodo.pod
- perlunicode.pod
๐ Performance enhancements ๐
she got faster, bestie:
- Simple sort() using { $a <=> $b } and the like are optimized
- Optimized assignments to lexical variables
- Faster subroutine calls
- delete(), each(), values() and hash iteration are faster
โ๏ธ Installation and Configuration Improvements โ๏ธ
- -Dusethreads means something different
- New Configure flags
- Threadedness and 64-bitness now more daring
- Long Doubles
- -Dusemorebits
- -Duselargefiles
- installusrbinperl
- SOCKS support
- "-A" flag
- Enhanced Installation Directories
๐ฅ Platform specific changes ๐ฅ
- Supported platforms
- DOS
- OS390 (OpenEdition MVS)
- VMS
- Win32
๐ Significant bug fixes ๐
the glow-up list, periodt:
- <HANDLE> on empty files
- "eval '...'" improvements
- All compilation errors are true errors
- Implicitly closed filehandles are safer
- Behavior of list slices is more consistent
- "(\$)" prototype and $foo{a}
- "goto &sub" and AUTOLOAD
- "-bareword" allowed under "use integer"
- Failures in DESTROY()
- Locale bugs fixed
- Memory leaks
- Spurious subroutine stubs after failed subroutine calls
- Taint failures under "-U"
- END blocks and the "-c" switch
- Potential to leak DATA filehandles
๐จ New or Changed Diagnostics ๐จ
okay this one is a whole wall, bestie ๐ญ every single message, in order, no skips:
"%s" variable %s masks earlier declaration in same %s, "my sub" not yet implemented, "our" variable %s redeclared, '!' allowed only after types %s, / cannot take a count, / must be followed by a, A or Z, / must be followed by a*, A* or Z*, / must follow a numeric type, /%s/: Unrecognized escape \%c passed through, /%s/: Unrecognized escape \%c in character class passed through, /%s/ should probably be written as "%s", %s() called too early to check prototype, %s argument is not a HASH or ARRAY element, %s argument is not a HASH or ARRAY element or slice, %s argument is not a subroutine name, %s package attribute may clash with future reserved word: %s, (in cleanup) %s, <> should be quotes, Attempt to join self, Bad evalled substitution pattern, Bad realloc() ignored, Bareword found in conditional, Binary number > 0b11111111111111111111111111111111 non-portable, Bit vector size > 32 non-portable, Buffer overflow in prime_env_iter: %s, Can't check filesystem of script "%s", Can't declare class for non-scalar %s in "%s", Can't declare %s in "%s", Can't ignore signal CHLD, forcing to default, Can't modify non-lvalue subroutine call, Can't read CRTL environ, Can't remove %s: %s, skipping file, Can't return %s from lvalue subroutine, Can't weaken a nonreference, Character class [:%s:] unknown, Character class syntax [%s] belongs inside character classes, Constant is not %s reference, constant(%s): %s, CORE::%s is not a keyword, defined(@array) is deprecated, defined(%hash) is deprecated, Did not produce a valid header, (Did you mean "local" instead of "our"?), Document contains no data, entering effective %s failed, false [] range "%s" in regexp, Filehandle %s opened only for output, flock() on closed filehandle %s, Global symbol "%s" requires explicit package name, Hexadecimal number > 0xffffffff non-portable, Ill-formed CRTL environ value "%s", Ill-formed message in prime_env_iter: |%s|, Illegal binary digit %s, Illegal binary digit %s ignored, Illegal number of bits in vec, Integer overflow in %s number, Invalid %s attribute: %s, Invalid %s attributes: %s, invalid [] range "%s" in regexp, Invalid separator character %s in attribute list, Invalid separator character %s in subroutine attribute list, leaving effective %s failed, Lvalue subs returning %s not implemented yet, Method %s not permitted, Missing %sbrace%s on \N{}, Missing command in piped open, Missing name in "my sub", No %s specified for -%c, No package name allowed for variable %s in "our", No space allowed after -%c, no UTC offset information; assuming local time is UTC, Octal number > 037777777777 non-portable, panic: del_backref, panic: kid popen errno read, panic: magic_killbackrefs, Parentheses missing around "%s" list, Possible unintended interpolation of %s in string, Possible Y2K bug: %s, pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead, Premature end of script headers, Repeat count in pack overflows, Repeat count in unpack overflows, realloc() of freed memory ignored, Reference is already weak, setpgrp can't take arguments, Strange *+?{} on zero-length expression, switching effective %s is not implemented, This Perl can't reset CRTL environ elements (%s), This Perl can't set CRTL environ elements (%s=%s), Too late to run %s block, Unknown open() mode '%s', Unknown process %x sent message to prime_env_iter: %s, Unrecognized escape \%c passed through, Unterminated attribute parameter in attribute list, Unterminated attribute list, Unterminated attribute parameter in subroutine attribute list, Unterminated subroutine attribute list, Value of CLI symbol "%s" too long, Version number must be a constant number
๐งช New tests ๐งช
๐ Incompatible Changes ๐
not everything is a slay โ some of this will break your old code, and that's just the tea ๐
- Perl Source Incompatibilities
- CHECK is a new keyword, Treatment of list slices of undef has changed, Format of $English::PERL_VERSION is different, Literals of the form 1.2.3 parse differently, Possibly changed pseudo-random number generator, Hashing function for hash keys has changed, "undef" fails on read only values, Close-on-exec bit may be set on pipe and socket handles, Writing "$$1" to mean "${$}1" is unsupported, delete(), each(), values() and "(%h)", vec(EXPR,OFFSET,BITS) enforces powers-of-two BITS, Text of some diagnostic output has changed, "%@" has been removed, Parenthesized not() behaves like a list operator, Semantics of bareword prototype "(*)" have changed, Semantics of bit operators may have changed on 64-bit platforms, More builtins taint their results
- C Source Incompatibilities
- "PERL_POLLUTE", "PERL_IMPLICIT_CONTEXT", "PERL_POLLUTE_MALLOC"
- Compatible C Source API Changes
- "PATCHLEVEL" is now "PERL_VERSION"
- Binary Incompatibilities
๐ Known Problems ๐
the "yeah we know, we're working on it" section ๐ซถ
- Thread test failures
- EBCDIC platforms not supported
- In 64-bit HP-UX the lib/io_multihomed test may hang
- NEXTSTEP 3.3 POSIX test failure
- Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with gcc
- UNICOS/mk CC failures during Configure run
- Arrow operator and arrays
- Experimental features
- Threads, Unicode, 64-bit support, Lvalue subroutines, Weak references, The pseudo-hash data type, The Compiler suite, Internal implementation of file globbing, The DB module, The regular expression code constructs:
Obsolete Diagnostics ๐
these ones are literally retired, bestie โ they don't even go here anymore โจ
- Character class syntax
[: :]is reserved for future extensions - Ill-formed logical name
|%s|inprime_env_iter - In string,
@%snow must be written as\@%s - Probable precedence problem on
%s regexp too big- Use of
"$$<digit>"to mean"${$}<digit>"is deprecated
Reporting Bugs ๐
yeah, if something's busted, this is where you go ๐
SEE ALSO ๐
HISTORY ๐
perl5005delta - what's new for perl5.005 โจ
DESCRIPTION
About the new versioning system
Incompatible Changes โ ๏ธ
WARNING: This version is not binary compatible with Perl 5.004
Bestie. Read this one twice. It is NOT binary compatible with Perl 5.004. That's the whole vibe of this warning, no cap. ๐
Default installation structure has changed
Perl Source Compatibility
C Source Compatibility
Binary Compatibility
Security fixes may affect compatibility
Relaxed new mandatory warnings introduced in 5.004
Licensing
Core Changes ๐ฅ
Threads
Compiler
Regular Expressions
the glow-up era for regex, honestly:
- Many new and improved optimizations
- Many bug fixes
- New regular expression constructs
- New operator for precompiled regular expressions
- Other improvements
- Incompatible changes
Improved malloc()
Quicksort is internally implemented
Reliable signals
Reliable stack pointers
More generous treatment of carriage returns
Memory leaks
Better support for multiple interpreters
Behavior of local() on array and hash elements is now well-defined
"%!" is transparently tied to the Errno module
Pseudo-hashes are supported
"EXPR foreach EXPR" is supported
Keywords can be globally overridden
$^E is meaningful on Win32
"foreach (1..1000000)" optimized
"Foo::" can be used as implicitly quoted package name
"exists $Foo::{Bar::}" tests existence of a package
Better locale support
Experimental support for 64-bit platforms
prototype() returns useful results on builtins
Extended support for exception handling
Re-blessing in DESTROY() supported for chaining DESTROY() methods
All "printf" format conversions are handled internally
New "INIT" keyword
New "lock" keyword
New "qr//" operator
"our" is now a reserved word
Tied arrays are now fully supported
Tied handles support is better
4th argument to substr
Negative LENGTH argument to splice
Magic lvalues are now more magical
<> now reads in records
Supported Platforms ๐
New Platforms
Changes in existing support
Modules and Pragmata ๐ฆ
New Modules
fresh drops, all of them:
BData::DumperDumpvalueErrnoFile::SpecExtUtils::InstalledExtUtils::PacklistFatalIPC::SysVTestTie::ArrayTie::HandleThreadattrsfieldsre
Changes in existing modules
the OGs got updates:
BenchmarkCarpCGIFcntlMath::ComplexMath::TrigPOSIXDB_FileMakeMakerCPANCwd
Utility Changes ๐ ๏ธ
Documentation Changes ๐
New Diagnostics ๐จ
- Ambiguous call resolved as
CORE::%s(), qualify as such or use& - Bad index while coercing array into hash
- Bareword
"%s"refers to nonexistent package - Can't call method
"%s"on an undefined value - Can't check filesystem of script
"%s"for nosuid - Can't coerce array into hash
- Can't goto subroutine from an eval-string
- Can't localize pseudo-hash element
- Can't use
%%!becauseErrno.pmis not available - Cannot find an opnumber for
"%s" - Character class syntax
[. .]is reserved for future extensions - Character class syntax
[: :]is reserved for future extensions - Character class syntax
[= =]is reserved for future extensions %s: Eval-group in insecure regular expression%s: Eval-group not allowed, usere 'eval'%s: Eval-group not allowed at run time- Explicit blessing to
''(assuming package main) - Illegal hex digit ignored
- No such array field
- No such field
"%s"in variable%sof type%s - Out of memory during ridiculously large request
- Range iterator outside integer range
- Recursive inheritance detected while looking for method
'%s' %s - Reference found where even-sized list expected
- Undefined value assigned to typeglob
- Use of reserved word
"%s"is deprecated perl: warning: Setting locale failed
Obsolete Diagnostics ๐
Can't mktemp()- Can't write to temp file for
-e:%s - Cannot open temporary file
regexp too big
Configuration Changes โ๏ธ
BUGS
SEE ALSO ๐
HISTORY ๐
perl5004delta - what's new for perl5.004 โจ
DESCRIPTION
Supported Environments ๐
Core Changes ๐ฅ
List assignment to %ENV works
Change to "Can't locate Foo.pm in @INC" error
Compilation option: Binary compatibility with 5.003
$PERL5OPT environment variable
Limitations on -M, -m, and -T options
More precise warnings
Deprecated: Inherited "AUTOLOAD" for non-methods
Previously deprecated %OVERLOAD is no longer usable
Subroutine arguments created only when they're modified
Group vector changeable with $)
Fixed parsing of $$<digit>, &$<digit>, etc.
Fixed localization of $<digit>, $&, etc.
No resetting of $. on implicit close
"wantarray" may return undef
"eval EXPR" determines value of EXPR in scalar context
Changes to tainting checks
- No
glob()or<*> - No spawning if tainted
$CDPATH,$ENV,$BASH_ENV - No spawning if tainted
$TERMdoesn't look like a terminal name
New Opcode module and revised Safe module
Embedding improvements
Internal change: FileHandle class based on IO::* classes
Internal change: PerlIO abstraction interface
New and changed syntax
$coderef->(PARAMS)
New and changed builtin constants
__PACKAGE__
New and changed builtin variables
$^E$^H$^M
New and changed builtin functions
- delete on slices
flockprintfandsprintfkeysas an lvaluemy()in Control Structurespack()andunpack()sysseek()use VERSIONuse Module VERSION LISTprototype(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, LISTPRINT this, LISTPRINTF this, LISTREAD this LISTREADLINE thisGETC thisDESTROY this
Malloc enhancements
-DPERL_EMERGENCY_SBRK-DPACK_MALLOC-DTWO_POT_OPTIMIZE
Miscellaneous efficiency enhancements
Support for More Operating Systems ๐
Win32
Plan 9
QNX
AmigaOS
Pragmata โจ
use autouse MODULE => qw(sub1 sub2 sub3)use blibuse blib 'dir'use constant NAME => VALUEuse localeuse opsuse vmsish
Modules ๐ฆ
Required Updates
Installation directories
Module information summary
Fcntl
IO
Math::Complex
Math::Trig
DB_File
Net::Ping
Object-oriented overrides for builtin operators
Utility Changes ๐ ๏ธ
pod2html
- Sends converted HTML to standard output
xsubpp
"void"XSUBs now default to returning nothing
C Language API Changes ๐งฉ
"gv_fetchmethod"and"perl_call_sv""perl_eval_pv"- Extended API for manipulating hashes
Documentation Changes ๐
perldeltaperlfaqperllocaleperltootperlapioperlmodlibperldebugperlsec
New Diagnostics ๐จ
"my"variable%smasks earlier declaration in same scope%sargument is not a HASH element or slice- Allocation too large:
%lx - Allocation too large
- Applying
%sto%swill 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%sref while"strict refs"in use Cannot resolve method `%s' overloading `%s' in package `%s'- Constant subroutine
%sredefined - Constant subroutine
%sundefined - 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
%dinner references still exist - Unrecognized character
%s - Unsupported function fork
- Use of
"$$<digit>"to mean"${$}<digit>"is deprecated - Value of
%scan be"0"; test withdefined() - Variable
"%s"may be unavailable - Variable
"%s"will not stay shared - Warning: something's wrong
- Ill-formed logical name
|%s|inprime_env_iter - Got an error from
DosAllocMem - Malformed
PERLLIB_PREFIX PERL_SH_DIRtoo long- Process terminated by
SIG%s
BUGS
SEE ALSO ๐
HISTORY ๐
perlbook - Books about and related to Perl ๐
DESCRIPTION
The most popular books
the sacred texts, fr fr:
- Programming Perl (the "Camel Book"):
- The Perl Cookbook (the "Ram Book"):
- Learning Perl (the "Llama Book")
- Intermediate Perl (the "Alpaca Book")
References
- Perl 5 Pocket Reference
- Perl Debugger Pocket Reference
- Regular Expression Pocket Reference
Tutorials
- Beginning Perl
- Learning Perl (the "Llama Book")
- Intermediate Perl (the "Alpaca Book")
- Mastering Perl
- Effective Perl Programming
Task-Oriented
- Writing Perl Modules for CPAN
- The Perl Cookbook
- Automating System Administration with Perl
- Real World SQL Server Administration with Perl
Special Topics
- Regular Expressions Cookbook
- Programming the Perl DBI
- Perl Best Practices
- Higher-Order Perl
- Mastering Regular Expressions
- Network Programming with Perl
- Perl Template Toolkit
- Object Oriented Perl
- Data Munging with Perl
- Mastering Perl/Tk
- Extending and Embedding Perl
- Pro Perl Debugging
Free (as in beer) books
Other interesting, non-Perl books
- Programming Pearls
- More Programming Pearls
A note on freshness
Get your book listed
๐ฆ perlcommunity โ a brief overview of the Perl community
this is the "where my people at" page, bestie. it's giving community-center-but-make-it-nerdy energy, and honestly? we love that for us. ๐
DESCRIPTION
- 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 icon. the moment. the thing you type when you forgot what a function does. ๐
SYNOPSIS
DESCRIPTION
OPTIONS
one bullet per flag, all of them, in order, no cap:
-h-D-t-u-mmodule-l-U-F-fperlfunc-qperlfaq-search-regexp-aperlapifunc-vperlvar-T-ddestination-filename-ooutput-formatname-Mmodule-name-woption:value or-woption-X-Llanguage_code- PageName|ModuleName|ProgramName|URL
-nsome-formatter-r-i-V
SECURITY
ENVIRONMENT
CHANGES
SEE ALSO
AUTHOR
๐งช perlexperiment โ A listing of experimental features in Perl
the "handle with care, bestie" page. everything here is literally labeled experimental, so do not come for me if it wiggles. ๐
DESCRIPTION
- Current experiments
- Pluggable keywords
- Aliasing via reference
use re 'strict';- Declaring a reference to a variable
- There is an
"installhtml"target in the Makefile - (Limited) Variable-length look-behind
- Unicode private use character hooks
- Unicode property wildcards
- try/catch control structure
- Use of
@_within subroutine signatures - The
builtinnamespace - The
deferblock modifier - Extra paired delimiters for quote-like operators
"any"and"all"list processing operators
- Accepted features
- 64-bit support
dieaccepts a referenceDBmodule- 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::LongOptions 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)
- Smart match (
SEE ALSO
AUTHORS
COPYRIGHT
LICENSE
๐จ perlartistic โ the Perl Artistic License
the legal paperwork, but make it iconic. yes we're reading the license. yes it's a vibe. โจ
SYNOPSIS
DESCRIPTION
The "Artistic License"
- Preamble
- Definitions
"Package","Standard Version","Copyright Holder","You","Reasonable copying fee","Freely Available"
- Conditions
- a), b), c), d), a), b), c), d)
๐ perlgpl โ the GNU General Public License, version 1
more legal lore. sip your drink, bestie, this one's a classic. ๐
SYNOPSIS
DESCRIPTION
GNU GENERAL PUBLIC LICENSE
๐ง perlaix โ Perl version 5 on IBM AIX (UNIX) systems
AIX said "I'm different" and meant it. buckle up. ๐
DESCRIPTION
- Compiling Perl 5 on AIX
- Supported Compilers
- Incompatibility with AIX Toolbox lib gdbm
- Perl 5 was successfully compiled and tested on:
- Building Dynamic Extensions on AIX
- Using Large Files with Perl
- Threaded Perl
- 64-bit Perl
- Long doubles
- Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (threaded/32-bit)
- Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (32-bit)
- Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (threaded/64-bit)
- Recommended Options AIX 5.1/5.2/5.3/6.1 and 7.1 (64-bit)
- Compiling Perl 5 on AIX 7.1.0
- Compiling Perl 5 on older AIX versions up to 4.3.3
- OS level
- Building Dynamic Extensions on AIX < 5L
- The IBM ANSI C Compiler
- The usenm option
- Using GNU's gcc for building Perl
- Using Large Files with Perl < 5L
- Threaded Perl < 5L
- 64-bit Perl < 5L
- AIX 4.2 and extensions using C++ with statics
AUTHORS
๐น๏ธ perlamiga โ Perl under AmigaOS 4.1
retro tech, main character energy, we respect the hustle. ๐
NOTE
SYNOPSIS
DESCRIPTION
- Prerequisites for running Perl 5.22.1 under AmigaOS 4.1
- AmigaOS 4.1 update 6 with all updates applied as of 9th October 2013, newlib.library version 53.28 or greater, AmigaOS SDK, abc-shell
- Starting Perl programs under AmigaOS 4.1
- Limitations of Perl under AmigaOS 4.1
- Nested Piped programs can crash when run from older abc-shells
- Incorrect or unexpected command line unescaping
- Starting subprocesses via open has limitations
- If you find any other limitations or bugs then let me know
INSTALLATION
Amiga Specific Modules
- Amiga::ARexx
- Amiga::Exec
BUILDING
CHANGES
- August 2015
- Port to Perl 5.22
- Add handling of NIL: to afstat()
- Fix inheritance of environment variables by subprocesses
- Fix exec, and exit in "forked" subprocesses
- Fix issue with newlib's unlink, which could cause infinite loops
- Add flock() emulation using IDOS->LockRecord thanks to Tony Cook for the suggestion
- Fix issue where kill was using the wrong kind of process ID
- 27th November 2013
- Create new installation system based on installperl links and Amiga protection bits now set correctly
- Pod now defaults to text
- File::Spec should now recognise an Amiga style absolute path as well as an Unix style one. Relative paths must always be Unix style
- 20th November 2013
- Configured to use SDK:Local/C/perl to start standard scripts
- Added Amiga::Exec module with support for Wait() and AmigaOS signal numbers
- 10th October 13
SEE ALSO
๐ค perlandroid โ Perl under Android
perl on your phone. it's giving pocket-sized chaos and I'm obsessed. ๐ฅ
SYNOPSIS
DESCRIPTION
Cross-compilation
- Get the Android Native Development Kit (NDK)
- Determine the architecture you'll be cross-compiling for
- Set up a standalone toolchain
- adb or ssh?
- Configure and beyond
Native Builds
- CCTools
- Termux
AUTHOR
๐ฅ๏ธ perlbs2000 โ building and installing Perl for BS2000.
big iron, big feelings. ๐ง
SYNOPSIS
DESCRIPTION
- gzip on BS2000
- bison on BS2000
- Unpacking Perl Distribution on BS2000
- Compiling Perl on BS2000
- Testing Perl on BS2000
- Installing Perl on BS2000
- Using Perl in the Posix-Shell of BS2000
- Using Perl in "native" BS2000
- Floating point anomalies on BS2000
- Using PerlIO and different encodings on ASCII and EBCDIC partitions
AUTHORS
SEE ALSO
- Mailing list
HISTORY
๐ฆข perlcygwin โ Perl for Cygwin
"Don't leave UNIX without it" is genuinely a slay tagline and I will not be taking questions. ๐
SYNOPSIS
PREREQUISITES FOR COMPILING PERL ON CYGWIN
- Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it)
- Cygwin Configuration
"PATH",nroff
CONFIGURE PERL ON CYGWIN
- Stripping Perl Binaries on Cygwin
- Optional Libraries for Perl on Cygwin
"-lcrypt","-lgdbm_compat"("use GDBM_File"),"-ldb"("use DB_File"),"cygserver"("use IPC::SysV"),"-lutil"
- Configure-time Options for Perl on Cygwin
"-Uusedl","-Dusemymalloc","-Uuseperlio","-Dusemultiplicity","-Uuse64bitint","-Duselongdouble","-Uuseithreads","-Duselargefiles","-Dmksymlinks"
MAKE ON CYGWIN
TEST ON CYGWIN
- File Permissions on Cygwin
- NDBM_File and ODBM_File do not work on FAT filesystems
- fork() failures in io_* tests
Specific features of the Cygwin port
- Script Portability on Cygwin
- Pathnames, Text/Binary, PerlIO, .exe, Cygwin vs. Windows process ids, Cygwin vs. Windows errors, rebase errors on fork or system, Miscellaneous
- Prebuilt methods:
"Cwd::cwd","Cygwin::pid_to_winpid","Cygwin::winpid_to_pid","Cygwin::win_to_posix_path","Cygwin::posix_to_win_path", Cygwin::mount_table(),"Cygwin::mount_flags","Cygwin::is_binmount","Cygwin::sync_winenv"
INSTALL PERL ON CYGWIN
MANIFEST ON CYGWIN
- Documentation, Build, Configure, Make, Install, Tests, Compiled Perl Source, Compiled Module Source, Perl Modules/Scripts, Perl Module Tests
BUGS ON CYGWIN
AUTHORS
HISTORY
๐ perlfreebsd โ Perl version 5 on FreeBSD systems
short page, spicy contents. ๐
DESCRIPTION
- FreeBSD core dumps from readdir_r with ithreads
$^Xdoesn't always contain a full path in FreeBSD
AUTHOR
๐ perlhaiku โ Perl version 5.10+ on Haiku
cute OS name, cute page. that's it, that's the whole note. ๐ธ
DESCRIPTION
BUILD AND INSTALL
KNOWN PROBLEMS
CONTACT
๐๏ธ perlhpux โ Perl version 5 on Hewlett-Packard Unix (HP-UX) systems
PA-RISC, Itanium, kernel parameters... this page ate and left no crumbs, honestly. ๐
DESCRIPTION
- Using perl as shipped with HP-UX
- Using perl from HP's porting centre
- Other prebuilt perl binaries
- Compiling Perl 5 on HP-UX
- PA-RISC
- PA-RISC 1.0
- PA-RISC 1.1
- PA-RISC 2.0
- Portability Between PA-RISC Versions
- Itanium Processor Family (IPF) and HP-UX
- Itanium, Itanium 2 & Madison 6
- HP-UX versions
- Building Dynamic Extensions on HP-UX
- The HP ANSI C Compiler
- The GNU C Compiler
- Using Large Files with Perl on HP-UX
- Threaded Perl on HP-UX
- 64-bit Perl on HP-UX
- Oracle on HP-UX
- GDBM and Threads on HP-UX
- NFS filesystems and utime(2) on HP-UX
- HP-UX Kernel Parameters (maxdsiz) for Compiling Perl
nss_delete core dump from op/pwent or op/grent
error: pasting ")" and "l" does not give a valid preprocessing token
Redeclaration of "sendpath" with a different storage class specifier
Miscellaneous
AUTHOR
๐ข perlhurd โ Perl version 5 on Hurd
niche, mysterious, lowkey legendary. ๐ซถ
DESCRIPTION
- Known Problems with Perl on Hurd
AUTHOR
๐บ perlirix โ Perl version 5 on Irix systems
SGI nostalgia hours. 32-bit, 64-bit, threads, malloc drama โ the whole saga. ๐
DESCRIPTION
- Building 32-bit Perl in Irix
- Building 64-bit Perl in Irix
- About Compiler Versions of Irix
- Linker Problems in Irix
- Malloc in Irix
- Building with threads in Irix
- Irix 5.3
AUTHOR
๐ง perllinux โ Perl version 5 on Linux systems
your fave platform, fr fr. short and sweet. โญ
DESCRIPTION
- Deploying Perl on Linux
- Experimental Support for Sun Studio Compilers for Linux OS
AUTHOR
๐ perlmacosx โ Perl under Mac OS X
aesthetic OS, aesthetic page. universal binaries, SDK support, prebinding โ very demure, very mindful. ๐
SYNOPSIS
DESCRIPTION
- Installation Prefix
- SDK support
- Universal Binary support
- 64-bit PPC support
- libperl and Prebinding
- Updating Apple's Perl
- Known problems
- Cocoa
Starting From Scratch
AUTHOR
DATE
perlopenbsd โ Perl version 5 on OpenBSD systems ๐ก
okay BSD besties this one's for you
DESCRIPTION
- OpenBSD core dumps from
getprotobyname_randgetservbyname_rwith ithreads
AUTHOR
perlos2 โ Perl under OS/2, DOS, Win0.3*, Win0.95 and WinNT. ๐พ
not me pulling up a whole OS from the history books, but the lore is REAL and we're keeping all of it
SYNOPSIS
DESCRIPTION
- Target
- Other OSes
- Prerequisites
- EMX, RSX, HPFS, pdksh
- Starting Perl programs under OS/2 (and DOS and...)
- Starting OS/2 (and DOS) programs under Perl
Frequently asked questions
- "It does not work"
- I cannot run external programs
- I cannot embed perl into my program, or use
perl.dllfrom your program.- Is your program EMX-compiled with
-Zmt -Zcrtdll?, Did you useExtUtils::Embed?
- Is your program EMX-compiled with
``and pipe-opendo 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
infofiles - PDF files
LaTeXdocs
BUILD
- The short story
- Prerequisites
- Getting perl source
- Application of the patches
- Hand-editing
- Making
- Testing
- A lot of "bad free", Process terminated by SIGTERM/SIGINT, op/fs.t, 18, 25, op/stat.t
- Installing the built perl
a.out-style build
Building a binary distribution
Building custom .EXE files
- Making executables with a custom collection of statically loaded extensions
- Making executables with a custom search-paths
Build FAQ
- Some
/became\in pdksh - 'errno' - unresolved external
- Problems with tr or sed
- Some problem (forget which ;-)
- Library ... not found
- Segfault in make
- op/sprintf test failure
Specific (mis)features of OS/2 port
setpriority,getprioritysystem()extprocon the first line- Additional modules:
- Prebuilt methods:
File::Copy::syscopy,DynaLoader::mod2fname,Cwd::current_drive(),Cwd::sys_chdir(name),Cwd::change_drive(name),Cwd::sys_is_absolute(name),Cwd::sys_is_rooted(name),Cwd::sys_is_relative(name),Cwd::sys_cwd(name),Cwd::sys_abspath(name, dir),Cwd::extLibpath([type]),Cwd::extLibpath_set( path [, type ] ),OS2::Error(do_harderror,do_exception),OS2::Errors2Drive(drive),OS2::SysInfo(),OS2::BootDrive(),OS2::MorphPM(serve),OS2::UnMorphPM(serve),OS2::Serve_Messages(force),OS2::Process_Messages(force [, cnt]),OS2::_control87(new,mask),OS2::get_control87(),OS2::set_control87_em(new=MCW_EM,mask=MCW_EM),OS2::DLLname([how [, \&xsub]])
- Prebuilt variables:
$OS2::emx_rev,$OS2::emx_env,$OS2::os_ver,$OS2::is_aout,$OS2::can_fork,$OS2::nsyserror
- Misfeatures
- Modifications
popen,tmpnam,tmpfile,ctermid,stat,mkdir,rmdir,flock
- Identifying DLLs
- Centralized management of resources
HAB,HMQ, Treating errors reported by OS/2 API,CheckOSError(expr),CheckWinError(expr),SaveWinError(expr),SaveCroakWinError(expr,die,name1,name2),WinError_2_Perl_rc,FillWinError,FillOSError(rc), Loading DLLs and ordinals in DLLs
Perl flavors
perl.exeperl_.exeperl__.exeperl___.exe- Why strange names?
- Why dynamic linking?
- Why chimera build?
ENVIRONMENT
PERLLIB_PREFIXPERL_BADLANGPERL_BADFREEPERL_SH_DIRUSE_PERL_FLOCKTMPorTEMP
Evolution
- 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
- Global DLLs, specific DLLs,
- DLL forwarder generation
- Threading
- Calls to external programs
- Memory allocation
- Threads
COND_WAIT, os2.c
BUGS
AUTHOR
SEE ALSO
perlos390 โ building and installing Perl for z/OS (previously called OS/390) ๐ข
mainframe girlies rise up, the big iron is serving
SYNOPSIS
DESCRIPTION
- Tools
- Building a 64-bit Dynamic ASCII Perl
- Building a 64-bit Dynamic EBCDIC Perl
- Setup and utilities for Perl on OS/390
- Useful files for trouble-shooting
- Build Anomalies with Perl on OS/390
- Testing Anomalies with Perl on OS/390
- Usage Hints for Perl on z/OS
- Modules and Extensions for Perl on z/OS (Static Only)
- Running Perl on z/OS
- For ASCII Only:, For ASCII or EBCDIC:
AUTHORS
OTHER SITES
HISTORY
perlos400 โ Perl version 5 on OS/400 ๐
PASE girlies, we see you
DESCRIPTION
- Compiling Perl for OS/400 PASE
- Installing Perl in OS/400 PASE
- Using Perl in OS/400 PASE
- Known Problems
- Perl on ILE
AUTHORS
perlplan9 โ Plan 9-specific documentation for Perl ๐
the niche-of-niche OS representation we deserve
DESCRIPTION
- Invoking Perl
- What's in Plan 9 Perl
- What's not in Plan 9 Perl
- Perl5 Functions not currently supported in Plan 9 Perl
- Signals in Plan 9 Perl
COMPILING AND INSTALLING PERL ON PLAN 9
- Installing Perl Documentation on Plan 9
BUGS
Revision date
AUTHOR
perlqnx โ Perl version 5 on QNX ๐ ๏ธ
real-time OS bestie, let's go
DESCRIPTION
- Required Software for Compiling Perl on QNX4
/bin/sh, ar, nm, cpp, make
- Outstanding Issues with Perl on QNX4
- QNX auxiliary files
qnx/ar,qnx/cpp
- Outstanding issues with perl under QNX6
- Cross-compilation
AUTHOR
perlriscos โ Perl version 5 for RISC OS ๐
Acorn girlies, this is your moment
DESCRIPTION
BUILD
AUTHOR
perlsolaris โ Perl version 5 on Solaris systems โ๏ธ
the whole Solaris saga, and honestly? it ate
DESCRIPTION
- Solaris Version Numbers
RESOURCES
- Solaris FAQ, Precompiled Binaries, Solaris Documentation
SETTING UP
- File Extraction Problems on Solaris
- Compiler and Related Tools on Solaris
- Environment for Compiling perl on Solaris
RUN CONFIGURE
- 64-bit perl on Solaris
- Threads in perl on Solaris
- Malloc Issues with perl on Solaris
MAKE PROBLEMS
- Dynamic Loading Problems With GNU as and GNU ld,
ld.so.1: ./perl: fatal: relocation error:, dlopen: stub interception failed,#error "No DATAMODEL_NATIVE specified",sh: ar: not found
MAKE TEST
- op/stat.t test 4 in Solaris
- nss_delete core dump from op/pwent or op/grent
CROSS-COMPILATION
PREBUILT BINARIES OF PERL FOR SOLARIS
RUNTIME ISSUES FOR PERL ON SOLARIS
- Limits on Numbers of Open Files on Solaris
SOLARIS-SPECIFIC MODULES
SOLARIS-SPECIFIC PROBLEMS WITH MODULES
- Proc::ProcessTable on Solaris
- BSD::Resource on Solaris
- Net::SSLeay on Solaris
SunOS 4.x
AUTHOR
perlsynology โ Perl 5 on Synology DSM systems ๐
your NAS has been holding out on you
DESCRIPTION
- Setting up the build environment
- Compiling Perl 5
- Known problems
- Error message "No error definitions found",
ext/DynaLoader/t/DynaLoader.t
- Error message "No error definitions found",
- Smoke testing Perl
- Adding libraries
REVISION
AUTHOR
perltru64 โ Perl version 5 on Tru64 (formerly known as Digital UNIX formerly known as DEC OSF/1) systems ๐
the name has a whole ancestry at this point, iconic
DESCRIPTION
- Compiling Perl 5 on Tru64
- Using Large Files with Perl on Tru64
- Threaded Perl on Tru64
- Long Doubles on Tru64
- DB_File tests failing on Tru64
- 64-bit Perl on Tru64
- Warnings about floating-point overflow when compiling Perl on Tru64
Testing Perl on Tru64
ext/ODBM_File/odbm Test Failing With Static Builds
Perl Fails Because Of Unresolved Symbol sockatmark
read_cur_obj_info: bad file magic number
AUTHOR
perlvms โ VMS-specific documentation for Perl ๐ง
VMS besties, this one's a whole vibe
DESCRIPTION
Installation
Organization of Perl Images
- Core Images
- Perl Extensions
- Installing static extensions
- Installing dynamic extensions
File specifications
- Syntax
- Filename Case
- Symbolic Links
- Wildcard expansion
- Pipes
PERL5LIB and PERLLIB
The Perl Forked Debugger
PERL_VMS_EXCEPTION_DEBUG
Command line
- I/O redirection and backgrounding
- Command line switches
-i,-S,-u
Perl functions
- File tests, backticks,
binmode FILEHANDLE,crypt PLAINTEXT, USER, die, dump,exec LIST, fork, getpwent, getpwnam, getpwuid, gmtime, kill,qx//,select (system call),stat EXPR,system LIST, time, times,unlink LIST,utime LIST,waitpid PID,FLAGS
Perl variables
%ENV,CRTL_ENV,CLISYM_[LOCAL], Any other string,$!,$^E,$?,$|
Standard modules with VMS-specific differences
- SDBM_File
Revision date
AUTHOR
perlvos โ Perl for Stratus OpenVOS ๐
niche OS representation, we love to see it
SYNOPSIS
BUILDING PERL FOR OPENVOS
INSTALLING PERL IN OPENVOS
USING PERL IN OPENVOS
- Restrictions of Perl on OpenVOS
TEST STATUS
SUPPORT STATUS
AUTHOR
LAST UPDATE
perlwin32 โ Perl under Windows ๐ช
the Windows girlies get a whole novel and honestly they deserve it
SYNOPSIS
DESCRIPTION
- <https://osdn.net/projects/mingw/>, <https://mingw-w64.org>
- Setting Up Perl on Windows
- Make, Command Shell, Microsoft Visual C++, Microsoft Visual C++ 2015-2022 Community Edition, Microsoft C++ Build Tools, GCC, Intel C++ Compiler
- Building
- Testing Perl on Windows
- Installation of Perl on Windows
- Usage Hints for Perl on Windows
- Environment Variables, File Globbing, Using perl from the command line, Building Extensions, Command-line Wildcard Expansion, Notes on 64-bit Windows
- Running Perl Scripts
- Miscellaneous Things
BUGS AND CAVEATS
ACKNOWLEDGEMENTS
AUTHORS
- Gary Ng <71564.1743@CompuServe.COM>, Gurusamy Sarathy <gsar@activestate.com>, Nick Ing-Simmons <nick@ing-simmons.net>, Jan Dubois <jand@activestate.com>, Steve Hay <steve.m.hay@googlemail.com>
SEE ALSO
HISTORY
perlboot โ Links to information on object-oriented programming in Perl ๐ฆ
the classic intro-to-OOP pointer, we stan a legend
DESCRIPTION
perlbotโ Links to information on object-oriented programming in Perl ๐ซถDESCRIPTION
perlrepositoryโ Links to current information on the Perl source repository โจDESCRIPTION
perltodoโ Link to the Perl to-do list ๐DESCRIPTION
perltoocโ Links to information on object-oriented programming in Perl ๐DESCRIPTION
perltootโ Links to information on object-oriented programming in Perl ๐DESCRIPTION
๐ฆ PRAGMA DOCUMENTATION ๐ฆ
okay bestie, this next chunk is the pragma era โ all those little use-able modules that tweak how Perl itself behaves. icons only, no filler ๐
attributesโ get/set subroutine or variable attributesSYNOPSISDESCRIPTION- 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
- What
EXPORTS- Default exports
- Available exports
- Export tags defined
EXAMPLESMORE EXAMPLESSEE ALSO
autodieโ Replace functions with ones that succeed or die with lexical scope ๐SYNOPSISDESCRIPTIONEXCEPTIONSCATEGORIESFUNCTION SPECIFIC NOTESprintflocksystem/exec
GOTCHASDIAGNOSTICS:void cannot be used with lexical scope,No user hints defined for %s
- Tips and Tricks
- Importing autodie into another namespace than
caller
- Importing autodie into another namespace than
BUGS- autodie and string eval
REPORTING BUGS
FEEDBACKAUTHORLICENSESEE ALSOACKNOWLEDGEMENTS
autodie::Scope::Guardโ Wrapper class for calling subs at end of scope ๐SYNOPSISDESCRIPTION- Methods
AUTHORLICENSE
autodie::Scope::GuardStackโ Hook stack for managing scopes via%^H๐ธSYNOPSISDESCRIPTION- Methods
AUTHORLICENSE
autodie::Utilโ Internal Utility subroutines for autodie and Fatal ๐งSYNOPSISDESCRIPTION- Methods
AUTHORLICENSE
autodie::exceptionโ Exceptions from autodying functions.SYNOPSISDESCRIPTION- Common Methods
- Advanced methods
SEE ALSOLICENSEAUTHOR
autodie::exception::systemโ Exceptions from autodyingsystem().SYNOPSISDESCRIPTIONstringifyLICENSEAUTHOR
autodie::hintsโ Provide hints about user subroutines to autodie ๐ซSYNOPSISDESCRIPTION- Introduction
- What are hints?
- Example hints
- Manually setting hints from within your program
- Adding hints to your module
- Insisting on hints
- Diagnostics
Attempts to set_hints_for unidentifiable subroutine,fail hints cannot be provided with either scalar or list hints for %s,%s hint missing for %s
ACKNOWLEDGEMENTSAUTHORLICENSESEE ALSO
autodie::skipโ Skip a package when throwing autodie exceptions ๐SYNPOSISDESCRIPTIONAUTHORLICENSESEE ALSO
autouseโ postpone load of modules until a function is used ๐ฆSYNOPSISDESCRIPTIONWARNINGAUTHORSEE ALSO
baseโ Establish an ISA relationship with base classes at compile time ๐SYNOPSISDESCRIPTIONDIAGNOSTICSBase class package "%s" is empty,Class 'Foo' tried to inherit from itself
HISTORYCAVEATSSEE ALSO
bigfloatโ transparent big floating point number support for Perl ๐ฅSYNOPSISDESCRIPTION- 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()
- Hexadecimal, octal, and binary floating point literals, Operator vs literal overloading, Ranges,
EXAMPLESBUGSSUPPORT- GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
LICENSESEE ALSOAUTHORS
bigintโ transparent big integer support for Perl โญSYNOPSISDESCRIPTIONuse 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()
- Hexadecimal, octal, and binary floating point literals, Operator vs literal overloading, Ranges,
EXAMPLESBUGSSUPPORT- GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
LICENSESEE ALSOAUTHORS
bignumโ transparent big number support for Perl ๐SYNOPSISDESCRIPTION- 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
EXAMPLESBUGSSUPPORT- GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
LICENSESEE ALSOAUTHORS
bigratโ transparent big rational number support for Perl ๐SYNOPSISDESCRIPTION- 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()
- Hexadecimal, octal, and binary floating point literals, Operator vs literal overloading, Ranges,
EXAMPLESBUGSSUPPORT- GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
LICENSESEE ALSOAUTHORS
blibโ Use MakeMaker's uninstalled version of a package ๐SYNOPSISDESCRIPTIONBUGSAUTHOR
builtinโ Perl pragma to import built-in utility functions ๐SYNOPSISDESCRIPTION- Lexical Import
- Version Bundles
- Function Optimisations
FUNCTIONStruefalseis_boolinfnanweakenunweakenis_weakblessedrefaddrreftypecreated_as_stringcreated_as_numberstringifyceilfloorindexedtrimis_taintedexport_lexicallyload_module
SEE ALSO
bytesโ Perl pragma to expose the individual bytes of characters ๐ธNOTICESYNOPSISDESCRIPTIONLIMITATIONSSEE ALSO
charnamesโ access to Unicode character names and named character sequences; also define character names โจSYNOPSISDESCRIPTIONLOOSE MATCHESALIASESCUSTOM ALIASEScharnames::string_vianame(name)charnames::vianame(name)charnames::viacode(code)CUSTOM TRANSLATORSBUGS
constantโ Perl pragma to declare constants ๐SYNOPSISDESCRIPTIONNOTES- List constants
- Defining multiple constants at once
- Magic constants
TECHNICAL NOTESCAVEATSSEE ALSOBUGSAUTHORSCOPYRIGHT & LICENSE
deprecateโ Perl pragma for deprecating the inclusion of a module in core ๐ซถSYNOPSISDESCRIPTION- Important Caveat
EXPORTSEE ALSOAUTHORCOPYRIGHT AND LICENSE
diagnostics,splainโ produce verbose warning diagnostics ๐SYNOPSISDESCRIPTION- The
diagnosticsPragma - The splain Program
- The
EXAMPLESINTERNALSBUGSAUTHOR
encodingโ allows you to write your script in non-ASCII and non-UTF-8 ๐WARNINGSYNOPSISDESCRIPTIONuse encoding ['ENCNAME'] ;,use encoding ENCNAME, Filter=>1;,no encoding;
OPTIONS- Setting
STDINand/orSTDOUTindividually - The
:localesub-pragma
- Setting
CAVEATSSIDE EFFECTSDO NOT MIX MULTIPLE ENCODINGS- Prior to Perl v5.22
- Prior to Encode version 1.87
- Prior to Perl v5.8.1
NON-EUCdoublebyte encodings,tr///, Legend of characters above
EXAMPLE - GreekperlBUGS- 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 alsoCAVEATSin encoding
- Thread safety, Can't be used by more than one module in a single program, Other modules using
HISTORYSEE ALSO
encoding::warningsโ Warn on implicit encoding conversions ๐ญVERSIONNOTICESYNOPSISDESCRIPTION- Overview of the problem
- Detecting the problem
- Solving the problem
- Upgrade both sides to unicode-strings, Downgrade both sides to byte-strings, Specify the encoding for implicit byte-string upgrading, PerlIO layers for STDIN and STDOUT, Literal conversions, Implicit upgrading for byte-strings
CAVEATSSEE ALSOAUTHORSCOPYRIGHT
experimentalโ experimental features, but make it easy โจ (the pragma that hands you all the shiny new stuff)VERSIONSYNOPSISDESCRIPTIONโ and here's the whole lineup of things you can switch on, bestie:args_array_with_signaturesโ lets you use@_inside subs that have signaturesarray_baseโ lets you use$[to change where@arraystarts counting fromautoderefโ lets you callpush,each,keysand the other built-ins right on referencesbitwiseโ lets you use the new stringwise bit operatorsbuiltinโ lets you use the functions in thebuiltin::namespaceconst_attrโ lets you put the:constattribute on subsdeclared_refsโ enables aliasing by assigning to referencesdeferโ enablesdeferblocksextra_paired_delimitersโ unlocks more paired string delimiters than the classic four,< >,( ),{ }and[ ]for_listโ letsforiterate over multiple values at a timeisaโ lets you use theisainfix operatorlexical_topicโ lets you have a lexical$_viamy $_lexical_subsโ lets you use lexical subroutinespostderefโ lets you use postfix dereferencing expressionspostderef_qqโ postfix dereferencing expressions, but inside interpolating stringsre_strictโ turns on strict mode in regular expressionsrefaliasingโ lets you alias via\$x = \$yregex_setsโ lets you use extended bracketed character classes in regexpssignaturesโ lets you use subroutine signatures (for named arguments)smartmatchโ lets you use~~switchโ lets you use~~,given, andwhentryโ lets you usetryandcatchwin32_perlioโ lets you use the:win32IO layerOrdering mattersDisclaimer
SEE ALSOAUTHORCOPYRIGHT AND LICENSE
featureโ the Perl pragma for turning on new features ๐SYNOPSISDESCRIPTIONLexical effect"no feature"
AVAILABLE FEATURESโ the whole roster, no skips:The 'say' featureThe 'state' featureThe 'smartmatch' featureThe 'switch' featureThe 'unicode_strings' featureThe 'unicode_eval' and 'evalbytes' featuresThe 'current_sub' featureThe 'array_base' featureThe 'fc' featureThe 'lexical_subs' featureThe 'postderef' and 'postderef_qq' featuresThe 'signatures' featureThe 'refaliasing' featureThe 'bitwise' featureThe 'declared_refs' featureThe 'isa' featureThe 'indirect' featureThe 'multidimensional' featureThe 'bareword_filehandles' featureThe 'try' featureThe 'defer' featureThe 'extra_paired_delimiters' featureThe 'module_true' featureThe 'class' featureThe 'apostrophe_as_package_separator' featureThe 'keyword_any' featureThe 'keyword_all' feature
FEATURE BUNDLESIMPLICIT LOADINGCHECKING FEATURESfeature_enabled($feature),feature_enabled($feature, $depth),features_enabled(),features_enabled($depth),feature_bundle(),feature_bundle($depth)
fieldsโ compile-time class fields, periodtSYNOPSISDESCRIPTIONnew,phash
SEE ALSO
filetestโ the Perl pragma that controls the filetest permission operators ๐SYNOPSISDESCRIPTIONConsider this carefullyThe "access" sub-pragmaLimitation with regard to "_"
SEE ALSO
ifโusea Perl module only if some condition holds ๐SYNOPSISDESCRIPTION"use if""no if"
BUGSSEE ALSOAUTHORCOPYRIGHT AND LICENCE
integerโ the Perl pragma for doing integer arithmetic instead of floating point ๐งฎSYNOPSISDESCRIPTION
lessโ the perl pragma for requesting less of something (yes, really)SYNOPSISDESCRIPTIONFOR MODULE AUTHORS"BOOLEAN = less->of( FEATURE )""FEATURES = less->of()"
CAVEATSThis probably does nothing,This works only on 5.10+
libโ manipulate@INCat compile time ๐SYNOPSISDESCRIPTIONAdding directories to @INCDeleting directories from @INCRestoring original @INC
CAVEATSNOTESSEE ALSOAUTHORCOPYRIGHT AND LICENSE
localeโ the Perl pragma to use or avoid POSIX locales for built-in operations ๐SYNOPSISDESCRIPTION
mroโ Method Resolution Order, aka who inherits from who and in what order ๐ต๏ธSYNOPSISDESCRIPTIONOVERVIEWThe C3 MROWhat is C3?How does C3 work
Functionsmro::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 ALSOThe original Dylan paper"/citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.19.3910&rep=rep1&type=pdf" in http:
Python 2.3 MROClass::C3Class::C3
AUTHOR
okโ the alternative toTest::More::use_ok๐SYNOPSISDESCRIPTIONCC0 1.0 Universal
openโ the perl pragma for setting default PerlIO layers on input and output ๐ชSYNOPSISDESCRIPTIONIMPLEMENTATION DETAILSSEE ALSO
opsโ the Perl pragma that restricts unsafe operations while compiling ๐งSYNOPSISDESCRIPTIONSEE ALSO
overloadโ the Package for overloading Perl operations, this one is a whole journey ๐SYNOPSISDESCRIPTIONFundamentalsOverloadable Operations"not","neg","++","--",Assignments,Non-mutators with a mutator variant,"int",String, numeric, boolean, and regexp conversions,Iteration,File tests,Matching,Dereferencing,Special
Magic AutogenerationSpecial Keys for "use overload"defined, but FALSE,"undef",TRUE
How Perl Chooses an Operator ImplementationLosing OverloadingInheritance and OverloadingMethod names in the "use overload" directive,Overloading of an operation is inherited by derived classes
Run-time OverloadingPublic Functionsoverload::StrVal(arg),overload::Overloaded(arg),overload::Method(obj,op)
Overloading Constantsinteger,float,binary,q,qr
IMPLEMENTATIONCOOKBOOKTwo-face ScalarsTwo-face ReferencesSymbolic CalculatorReally Symbolic Calculator
AUTHORSEE ALSODIAGNOSTICSOdd number of arguments for overload::constant,'%s' is not an overloadable type,'%s' is not a code reference,overload arg '%s' is invalid
BUGS AND PITFALLS
overloadingโ the perl pragma to control overloading lexically โจSYNOPSISDESCRIPTION"no overloading","no overloading @ops","use overloading","use overloading @ops"
parentโ establishes an ISA relationship with base classes at compile time ๐SYNOPSISDESCRIPTIONHISTORYCAVEATSSEE ALSObase,parent::versioned
AUTHORS AND CONTRIBUTORSMAINTAINERLICENSE
reโ the Perl pragma that alters regular expression behaviour ๐ (so much going on here, obsessed)SYNOPSISDESCRIPTION'taint' mode'eval' mode'strict' mode'/flags' mode'debug' mode'Debug' modeCompile related options,COMPILE,PARSE,OPTIMISE,TRIEC,DUMP,FLAGS,TEST,Execute related options,EXECUTE,MATCH,TRIEE,INTUIT,Extra debugging options,EXTRA,BUFFERS,TRIEM,STATE,STACK,GPOS,OPTIMISEM,DUMP_PRE_OPTIMIZE,WILDCARD,Other useful flags,ALL,All,MORE,More
Exportable Functionsis_regexp($ref),regexp_pattern($ref),regname($name,$all),regnames($all),regnames_count(),regmust($ref),optimization($ref),minlen,minlenret,gofs,noscan,isall,anchor SBOL,anchor MBOL,anchor GPOS,skip,implicit,anchored/floating,anchored utf8/floating utf8,anchored min offset/floating min offset,anchored max offset/floating max offset,anchored end shift/floating end shift,checking,stclass
SEE ALSO
sigtrapโ the Perl pragma for enabling simple signal handling ๐จSYNOPSISDESCRIPTIONOPTIONSSIGNAL HANDLERSstack-trace,die,handler your-handler
SIGNAL LISTSnormal-signals,error-signals,old-interface-signals
OTHERuntrapped,any,signal,number
EXAMPLES
sortโ the perl pragma that controlssort()behaviour ๐SYNOPSISDESCRIPTIONCAVEATS
source::encodingโ Declare Perl source code encoding ๐SYNOPSISDESCRIPTIONSEE ALSO
stableโ experimental features made easy, once we know they're actually stable ๐ฆVERSIONSYNOPSISDESCRIPTIONbitwiseโ stable as of perl 5.22, available via stable 0.031isaโ stable as of perl 5.32, available via stable 0.031lexical_subsโ stable as of perl 5.22, available via stable 0.031postderefโ stable as of perl 5.20, available via stable 0.031const_attrโ stable as of perl 5.22, available via stable 0.032for_listโ stable as of perl 5.36, available via stable 0.032
SEE ALSOAUTHORCOPYRIGHT AND LICENSE
strictโ the Perl pragma that restricts unsafe constructs, aka your bestie keeping you out of trouble ๐SYNOPSISDESCRIPTION"strict refs","strict vars","strict subs"
HISTORY
subsโ the Perl pragma to predeclare subroutine names ๐ท๏ธSYNOPSISDESCRIPTION
threadsโ Perl interpreter-based threads, big main character energy ๐งตVERSIONWARNINGSYNOPSISDESCRIPTION$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 THREADthreads->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 CONTEXTExplicit contextImplicit context$thr->wantarray()threads->wantarray()
THREAD STACK SIZEthreads->get_stack_size();,$size = $thr->get_stack_size();,$old_size = threads->set_stack_size($new_size);,use threads ('stack_size' => VALUE);,$ENV{'PERL5_ITHREADS_STACK_SIZE'},threads->create({'stack_size' => VALUE}, FUNCTION, ARGS),$thr2 = $thr1->create(FUNCTION, ARGS)
โจ THREAD SIGNALLING โจ
Okay bestie, this is the bit about yeeting a signal at a thread. The one and only entry:
$thr->kill('SIG...');
โ ๏ธ WARNINGS โ ๏ธ
The warning messages this thing can hit you with. All of them, no skips, fr fr:
Perl exited with active threads:Thread creation failed: pthread_create returned #Thread # terminated abnormally: ..Using minimum thread stack size of #Thread creation failed: pthread_attr_setstacksize(SIZE) returned 22
๐ญ ERRORS ๐ญ
And the actual errors, iykyk:
This Perl not built to support threadsCannot change stack size of an existing threadCannot signal threads without safe signalsUnrecognized signal name: ..
๐ BUGS AND LIMITATIONS ๐
This is the long one. Every single crumb, because we do not gatekeep:
- Thread-safe modules
- Using non-thread-safe modules
- Memory consumption
- Current working directory
- Locales
- Environment variables
- Catching signals
- Parent-child threads
- Unsafe signals
- Perl has been built with
"PERL_OLD_SIGNALS"(see"perl -V") - The environment variable
"PERL_SIGNALS"is set to"unsafe"(see"PERL_SIGNALS"in perlrun) - The module
Perl::Unsafe::Signalsis used - Identity of objects returned from threads
- Returning blessed objects from threads
ENDblocks in threads- Open directory handles
- Detached threads and global destruction
- Perl Bugs and the CPAN Version of threads
๐ธ REQUIREMENTS ๐ธ
No sub-entries under this one, just the heading itself. Periodt.
๐ซถ SEE ALSO ๐ซถ
๐ AUTHOR ๐
๐ LICENSE ๐
๐ ACKNOWLEDGEMENTS ๐
๐งต threads::shared - Perl extension for sharing data structures between threads
Sharing data structures between threads! Here's the whole map, bestie:
VERSION
SYNOPSIS
DESCRIPTION
EXPORT
FUNCTIONS
share VARIABLEshared_clone REFis_shared VARIABLElock VARIABLEcond_wait VARIABLEcond_wait CONDVAR, LOCKVARcond_timedwait VARIABLE, ABS_TIMEOUTcond_timedwait CONDVAR, ABS_TIMEOUT, LOCKVARcond_signal VARIABLEcond_broadcast VARIABLE
OBJECTS
NOTES
WARNINGS
cond_broadcast() called on unlocked variablecond_signal() called on unlocked variable
BUGS AND LIMITATIONS
SEE ALSO
AUTHOR
LICENSE
๐ utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code
SYNOPSIS
DESCRIPTION
- Utility functions
$num_octets = utf8::upgrade($string)$success = utf8::downgrade($string[, $fail_ok])utf8::encode($string)$success = utf8::decode($string)$unicode = utf8::native_to_unicode($code_point)$native = utf8::unicode_to_native($code_point)$flag = utf8::is_utf8($string)$flag = utf8::valid($string)
BUGS
SEE ALSO
๐ธ vars - Perl pragma to predeclare global variable names
Short and sweet, this one. Just two sections:
SYNOPSIS
DESCRIPTION
๐ version - Perl extension for Version Objects
Version objects, bestie โ the whole breakdown:
SYNOPSIS
DESCRIPTION
TYPES OF VERSION OBJECTS
- Decimal Versions
- Dotted Decimal Versions
DECLARING VERSIONS
- How to convert a module from decimal to dotted-decimal
- How to
declare()a dotted-decimal version
PARSING AND COMPARING VERSIONS
- How to
parse()a version - How to check for a legal version string
is_lax(),is_strict()
- How to compare version objects
OBJECT METHODS
is_alpha()is_qv()normal()numify()to_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
- Equivalence between Decimal and Dotted-Decimal Versions
- Quoting Rules
- What about v-strings?
- Replacement
UNIVERSAL::VERSION
USAGE DETAILS
- Using modules that use
version.pm- Decimal versions always work, Dotted-Decimal version work sometimes
- Object Methods
new(),qv(), Normal Form, Numification, Stringification, Comparison operators, Logical Operators
AUTHOR
SEE ALSO
๐ vmsish - Perl pragma to control VMS-specific language features
SYNOPSIS
DESCRIPTION
vmsish statusvmsish exitvmsish timevmsish 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
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 โจ
๐๏ธ 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_TESTINGPERL_MM_USE_DEFAULTCPAN_OPTSCPANSCRIPT_LOGLEVELGIT_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
archiveargvbackwardsblibcolordirectivesdryexecextensionsfailurescommentsformatterharnessignore_exitincludesjobslibmergemodulesparsepluginsquietreally_quietrecurserulesshow_countshow_helpshow_manshow_versionshufflestatestate_classtaint_failtaint_warntest_argstimerverbosewarnings_failwarnings_warntapversiontrap
PLUGINS
- Sample Plugin
SEE ALSO
๐ App::Prove::State - State storage for the "prove" command.
VERSION
DESCRIPTION
SYNOPSIS
METHODS
- Class Methods
storeextensions(optional)result_class(optional)
result_class
extensions
results
commit
Instance Methods
lastfailedpassedallhottodoslowfastnewoldsave
๐ฆ App::Prove::State::Result - Individual test suite results.
VERSION
DESCRIPTION
SYNOPSIS
METHODS
- Class Methods
state_version
test_class
๐งพ App::Prove::State::Result::Test - Individual test results.
VERSION
DESCRIPTION
SYNOPSIS
METHODS
- Class Methods
Instance Methods
๐๏ธ Archive::Tar - module for manipulations of tar archives
The big one, bestie. Buckle up:
SYNOPSIS
DESCRIPTION
Object Methods
Archive::Tar->new( [$file, $compressed] )
$tar->read ( $filename|$handle, [$compressed, {opt => 'val'}] )
limitfiltermd5extract
$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] )
FILEHARDLINKSYMLINKCHARDEVBLOCKDEVDIRFIFOSOCKET
$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_supportArchive::Tar->can_handle_compressed_files
GLOBAL VARIABLES
$Archive::Tar::FOLLOW_SYMLINK$Archive::Tar::CHOWN$Archive::Tar::CHMOD$Archive::Tar::SAME_PERMISSIONS$Archive::Tar::DO_NOT_USE_PREFIX$Archive::Tar::DEBUG$Archive::Tar::WARN$Archive::Tar::error$Archive::Tar::INSECURE_EXTRACT_MODE$Archive::Tar::EXTRACT_HARDLINK$Archive::Tar::HAS_PERLIO$Archive::Tar::HAS_IO_STRING$Archive::Tar::ZERO_PAD_NUMBERS- Tuning the way RESOLVE_SYMLINK will works
nonespeed(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.Zfiles? - How do I handle Unicode strings?
CAVEATS
TODO
- Check if passed in handles are open for read/write
- Allow archives to be passed in as string
- Facilitate processing an opened filehandle of a compressed archive
SEE ALSO
- The GNU tar specification
- The PAX format specification
- AUTHOR
- ACKNOWLEDGEMENTS
- COPYRIGHT
๐ Archive::Tar::File โ a subclass for in-memory extracted file from Archive::Tar
ngl this one is giving "files but make it an object" and we're obsessed ๐ here's the whole map:
SYNOPSIS
DESCRIPTION
โจ Accessors
bestie these are the little getters that let you pull info straight off a file object:
name,mode,uid,gid,size,mtime,chksum,type,linkname,magic,version,uname,gname,devmajor,devminor,prefix,raw
๐ซถ Methods
the way these constructors SLAP:
Archive::Tar::File->new( file => $path )Archive::Tar::File->new( data => $path, $data, $opt )Archive::Tar::File->new( chunk => $chunk )
and then the doing-things ones:
$bool = $file->extract( [ $alternative_name ] )$path = $file->full_path$bool = $file->validate$bool = $file->has_content$content = $file->get_content$cref = $file->get_content_by_ref$bool = $file->replace_content( $content )$bool = $file->rename( $new_name )$bool = $file->chmod( $mode )$bool = $file->chown( $user [, $group])
๐ธ Convenience methods
the little vibe-check squad, all in a row:
$file->is_file,$file->is_dir,$file->is_hardlink,$file->is_symlink,$file->is_chardev,$file->is_blockdev,$file->is_fifo,$file->is_socket,$file->is_longlink,$file->is_label,$file->is_unknown
๐ง Attribute::Handlers โ Simpler definition of attribute handlers
okay so this one is literally about making attribute handlers easier, and the section list is a whole journey:
VERSION
SYNOPSIS
DESCRIPTION
these are the numbered sub-topics, bestie โ yes they're actually named [0] through [7]:
[0],[1],[2],[3],[4],[5],[6],[7]
and then the vibes:
- Typed lexicals
- Type-specific attribute handlers
- Non-interpretive attribute handlers
- Phase-specific attribute handlers
- Attributes as "tie" interfaces
EXAMPLES
UTILITY FUNCTIONS
one lone function holding it down:
findsym
DIAGNOSTICS
the error messages, quoted exactly because they're iconic in a cursed way ๐:
"Bad attribute type: ATTR(%s)""Attribute handler %s doesn't handle %s attributes""Declaration of %s attribute in package %s may clash with future reserved word""Can't have two ATTR specifiers on one subroutine""Can't autotie a %s""Internal error: %s symbol went missing""Won't be able to apply END handler"
AUTHOR
BUGS
COPYRIGHT AND LICENSE
๐ AutoLoader โ load subroutines only on demand
lazy loading but make it vintage โจ the sections go:
SYNOPSIS
DESCRIPTION
๐ฆ Subroutine Stubs
๐ฆ Using AutoLoader's AUTOLOAD Subroutine
๐ฆ Overriding AutoLoader's AUTOLOAD Subroutine
๐ฆ Package Lexicals
๐ฆ Not Using AutoLoader
๐ฆ AutoLoader vs. SelfLoader
๐ฆ Forcing AutoLoader to Load a Function
CAVEATS
SEE ALSO
AUTHOR
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
this is the big one, bestie. compiler guts. buckle up ๐ซถ
SYNOPSIS
DESCRIPTION
OVERVIEW
Utility Functions
๐ฅ Functions Returning "B::SV", "B::AV", "B::HV", and "B::CV" objects
sv_undef,sv_yes,sv_no,svref_2object(SVREF),amagic_generation,init_av,check_av,unitcheck_av,begin_av,end_av,comppadlist,regex_padav,main_cv
๐ฅ Functions for Examining the Symbol Table
walksymtable(SYMREF, METHOD, RECURSE, PREFIX)
๐ฅ Functions Returning "B::OP" objects or for walking op trees
main_root,main_start,walkoptree(OP, METHOD),walkoptree_debug(DEBUG)
๐ฅ Miscellaneous Utility Functions
ppname(OPNUM),hash(STR),cast_I32(I),minus_c,cstring(STR),perlstring(STR),safename(STR),class(OBJ),threadsv_names
๐ฅ Exported utility variables
@optype,@specialsv_name
OVERVIEW OF CLASSES
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
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
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
SYNOPSIS
DESCRIPTION
EXAMPLE
OPTIONS
โจ Options for Opcode Ordering
-basic,-exec,-tree
โจ Options for Line-Style
-concise,-terse,-linenoise,-debug,-env
โจ Options for tree-specific formatting
-compact,-loose,-vt,-ascii
โจ Options controlling sequence numbering
-basen,-bigendian,-littleendian
โจ Other options
-src,-stash="somepackage",-main,-nomain,-nobanner,-banner,-banneris => subref
โจ Option Stickiness
ABBREVIATIONS
๐ OP class abbreviations
๐ OP flags abbreviations
FORMATTING SPECIFICATIONS
๐ Special Patterns
(x(exec_text;basic_text)x),(*(text)*),(*(text1;text2)*),(?(text1#varText2)?),~
๐ # Variables
#var,#varN,#Var,#addr,#arg,#class,#classsym,#coplabel,#exname,#extarg,#firstaddr,#flags,#flagval,#hints,#hintsval,#hyphseq,#label,#lastaddr,#name,#NAME,#next,#nextaddr,#noise,#private,#privval,#seq,#opt,#sibaddr,#svaddr,#svclass,#svval,#targ,#targarg,#targarglife,#typenum
One-Liner Command tips
these are literal commands, bestie, copy them exactly ๐
perl -MO=Concise,bar foo.pl
perl -MDigest::MD5=md5 -MO=Concise,md5 -e1
perl -MPOSIX -MO=Concise,_POSIX_ARG_MAX -e1
perl -MPOSIX -MO=Concise,a -e 'print _POSIX_SAVED_IDS'
perl -MPOSIX -MO=Concise,a -e 'sub a{_POSIX_SAVED_IDS}'
perl -MB::Concise -e 'B::Concise::compile("-exec","-src", \%B::Concise::)->()'
Using B::Concise outside of the O framework
๐ธ Example: Altering Concise Renderings
๐ธ set_style()
๐ธ set_style_standard($name)
๐ธ add_style ()
๐ธ add_callback ()
๐ธ Running B::Concise::compile()
๐ธ B::Concise::reset_sequence()
๐ธ Errors
AUTHOR
๐ฆ B::Deparse โ Perl compiler backend to produce perl code
SYNOPSIS
DESCRIPTION
OPTIONS
all the flags, listed exactly:
-d,-fFILE,-l,-p,-P,-q,-sLETTERS,C,iNUMBER,T,vSTRING.,-xLEVEL
USING B::Deparse AS A MODULE
๐ Synopsis
๐ Description
๐ new
๐ ambient_pragmas
and the pragma-ish things it takes:
strict,$[,bytes,utf8,integer,re,warnings,hint_bits,warning_bits,%^H
๐ coderef2text
BUGS
AUTHOR
๐ B::Op_private โ OP op_private flag definitions
SYNOPSIS
DESCRIPTION
the four hashes, no notes, no drama:
%bits%defines%labels%ops_using
โญ B::Showlex โ Show lexical variables used in functions or files
SYNOPSIS
DESCRIPTION
EXAMPLES
๐ OPTIONS
SEE ALSO
TODO
AUTHOR
๐ง B::Terse โ Walk Perl syntax tree, printing terse info about ops
SYNOPSIS
DESCRIPTION
AUTHOR
๐
B::Xref โ Generates cross reference reports for Perl programs
SYNOPSIS
DESCRIPTION
these four little symbols, exactly as written:
i,&,s,r
OPTIONS
"-oFILENAME","-r","-d","-D[tO]"
BUGS
AUTHOR
๐ฅ Benchmark โ Benchmark running times of Perl code
SYNOPSIS
DESCRIPTION
โจ Methods
new,debug,iters
โจ Standard Exports
timeit(COUNT, CODE),timethis ( COUNT, CODE, [ TITLE, [ STYLE ]] ),timethese ( COUNT, CODEHASHREF, [ STYLE ] ),timediff ( T1, T2 ),timestr ( TIMEDIFF, [ STYLE, [ FORMAT ] ] )
โจ Optional Exports
clearcache ( COUNT ),clearallcache ( ),cmpthese ( COUNT, CODEHASHREF, [ STYLE ] ),cmpthese ( RESULTSHASHREF, [ STYLE ] ),countit(TIME, CODE),disablecache ( ),enablecache ( ),timesum ( T1, T2 )
โจ :hireswallclock
Benchmark Object
cpu_p,cpu_c,cpu_a,real,iters
NOTES
EXAMPLES
INHERITANCE
CAVEATS
SEE ALSO
AUTHORS
MODIFICATION HISTORY
๐ CORE โ Namespace for Perl's core routines
SYNOPSIS
DESCRIPTION
OVERRIDING CORE FUNCTIONS
AUTHOR
SEE ALSO
๐ธ CPAN โ query, download and build perl modules from CPAN sites
SYNOPSIS
DESCRIPTION
๐ CPAN::shell([$prompt, $command]) Starting Interactive Mode
and inside that, all these sub-topics:
- Searching for authors, bundles, distribution files and modules
"get","make","test","install","clean"modules or distributions"readme","perldoc","look"module or distribution"ls"author"ls"globbing_expression"failed"- Persistence between sessions
- The
"force"and the"fforce"pragma - Lockfile
- Signals
okay so the CPAN.pm tour is STILL GOING and the command list literally has not stopped being iconic ๐ here's the rest of it bestie, no cap:
CPAN::Shellautobundlehostsinstall_testedis_testedmkmyconfigr [Module|/Regexp/]...recentEXPERIMENTAL COMMANDrecompilereport Bundle|Distribution|ModulesmokeEXPERIMENTAL COMMANDupgrade [Module|/Regexp/]...- The four
"CPAN::*"Classes: Author, Bundle, Module, Distribution - Integrating local directories
- Redirection
- Plugin support EXPERIMENTAL
๐ CONFIGURATION ๐
the glow-up section fr fr, here's everything it covers:
- completion support, displaying some help:
o conf help - displaying current values:
o conf [KEY] - changing of scalar values:
o conf KEY VALUE - changing of list values:
o conf KEY SHIFT|UNSHIFT|PUSH|POP|SPLICE|LIST - reverting to saved:
o conf defaults - saving the config:
o conf commit
โจ Config Variables โจ
"o conf <scalar option>""o conf <scalar option> <value>""o conf <list option>""o conf <list option> [shift|pop]""o conf <list option> [unshift|push|splice] <list>"- interactive editing:
o conf init [MATCH|LIST]
๐ CPAN::anycwd($path): Note on config variable getcwd
cwdgetcwdfastcwdgetdcwdbacktickcwd
๐ 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]commandlineeexpect [hash]env [hash]expect [array]
๐ Schema verification with "Kwalify"
๐๏ธ Example Distroprefs Files
๐งโ๐ป PROGRAMMER'S INTERFACE ๐งโ๐ป
expand($type,@things)expandany(@things)- Programming Examples
๐ ๏ธ Methods in the other Classes
okay this list is long but every single one of them is here, i promise ๐ซถ
CPAN::Author::as_glimpse(),CPAN::Author::as_string(),CPAN::Author::email(),CPAN::Author::fullname(),CPAN::Author::name()CPAN::Bundle::as_glimpse(),CPAN::Bundle::as_string(),CPAN::Bundle::clean(),CPAN::Bundle::contains(),CPAN::Bundle::force($method,@args),CPAN::Bundle::get(),CPAN::Bundle::inst_file(),CPAN::Bundle::inst_version(),CPAN::Bundle::uptodate(),CPAN::Bundle::install(),CPAN::Bundle::make(),CPAN::Bundle::readme(),CPAN::Bundle::test()CPAN::Distribution::as_glimpse(),CPAN::Distribution::as_string(),CPAN::Distribution::author,CPAN::Distribution::pretty_id(),CPAN::Distribution::base_id(),CPAN::Distribution::clean(),CPAN::Distribution::containsmods(),CPAN::Distribution::cvs_import(),CPAN::Distribution::dir(),CPAN::Distribution::force($method,@args),CPAN::Distribution::get(),CPAN::Distribution::install(),CPAN::Distribution::isa_perl(),CPAN::Distribution::look(),CPAN::Distribution::make(),CPAN::Distribution::perldoc(),CPAN::Distribution::prefs(),CPAN::Distribution::prereq_pm(),CPAN::Distribution::readme(),CPAN::Distribution::reports(),CPAN::Distribution::read_yaml(),CPAN::Distribution::test(),CPAN::Distribution::uptodate()CPAN::Index::force_reload(),CPAN::Index::reload()CPAN::InfoObj::dump()CPAN::Module::as_glimpse(),CPAN::Module::as_string(),CPAN::Module::clean(),CPAN::Module::cpan_file(),CPAN::Module::cpan_version(),CPAN::Module::cvs_import(),CPAN::Module::description(),CPAN::Module::distribution(),CPAN::Module::dslip_status(),CPAN::Module::force($method,@args),CPAN::Module::get(),CPAN::Module::inst_file(),CPAN::Module::available_file(),CPAN::Module::inst_version(),CPAN::Module::available_version(),CPAN::Module::install(),CPAN::Module::look(),CPAN::Module::make(),CPAN::Module::manpage_headline(),CPAN::Module::perldoc(),CPAN::Module::readme(),CPAN::Module::reports(),CPAN::Module::test(),CPAN::Module::uptodate(),CPAN::Module::userid()
๐๏ธ Cache Manager
๐ Bundles
๐ PREREQUISITES ๐
๐งฐ UTILITIES ๐งฐ
๐ Finding packages and VERSION
๐ Debugging
o debug package..o debug -package..o debug allo debug number
๐พ Floppy, Zip, Offline Mode
๐งช Basic Utilities for Programmers
has_inst($module)use_inst($module)has_usable($module)instance($module)frontend()frontend($new_frontend)
๐ SECURITY ๐
โ๏ธ Cryptographically signed modules
๐ค EXPORT ๐ค
๐ ENVIRONMENT ๐
๐ฆ POPULATE AN INSTALLATION WITH LOTS OF MODULES ๐ฆ
๐งฑ WORKING WITH CPAN.pm BEHIND FIREWALLS ๐งฑ
๐ง Three basic types of firewalls
http 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)
๐ 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::Resultobject,"undef", indicating that no prefs files remain to be found
- a
- RESULTS
- Common
- Errors
- Successes
- PREFS
- LICENSE
๐ฑ CPAN::FirstTime โ Utility for CPAN::Config file Initialization
- SYNOPSIS
- DESCRIPTION
and then the iconic config variable roster, every single one, bestie:
allow_installing_module_downgrades,allow_installing_outdated_dists,auto_commit,build_cache,build_dir,build_dir_reuse,build_requires_install_policy,cache_metadatacheck_sigs,cleanup_after_install,colorize_output,colorize_print,colorize_warn,colorize_debug,commandnumber_in_prompt,connect_to_internet_okftp_passive,ftpstats_period,ftpstats_size,getcwd,halt_on_failure,histfile,histsize,inactivity_timeoutindex_expire,inhibit_startup_message,keep_source_where,load_module_verbosity,makepl_arg,make_arg,make_install_arg,make_install_make_commandmbuildpl_arg,mbuild_arg,mbuild_install_arg,mbuild_install_build_command,pager,prefer_installer,prefs_dir,prerequisites_policypushy_https,randomize_urllist,recommends_policy,scan_cache,shell,show_unparsable_versions,show_upload_date,show_zero_versionssuggests_policy,tar_verbosity,term_is_latin,term_ornaments,test_report,perl5lib_verbosity,prefer_external_tar,trust_test_report_historyurllist_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
name,version,license,perl,gpl,lgpl,artistic,bsd,open_source,unrestricted,restrictive,distribution_type,requires,recommends,build_requires,conflicts,dynamic_config,generated_by
- Related Projects
DOAP
- History
๐ฐ๏ธ CPAN::Meta::History::Meta_1_1 โ Version 1.1 metadata specification for META.yml
- PREFACE
- DESCRIPTION
- Format
- Fields
name,version,license,perl,gpl,lgpl,artistic,bsd,open_source,unrestricted,restrictive,license_uri,distribution_type,private,requires,recommends,build_requires,conflicts,dynamic_config,generated_by- Ingy's suggestions
short_description,description,maturity,author_id,owner_id,categorization,keyword,chapter_id,URL for further information,namespaces
- History
๐ฐ๏ธ CPAN::Meta::History::Meta_1_2 โ Version 1.2 metadata specification for META.yml
- PREFACE
- SYNOPSIS
- DESCRIPTION
- FORMAT
- TERMINOLOGY
- distribution
- module
- VERSION SPECIFICATIONS
- HEADER
- FIELDS
meta-specnameversionabstractauthorlicenseperl,gpl,lgpl,artistic,bsd,open_source,unrestricted,restrictive
distribution_typerequiresrecommendsbuild_requiresconflictsdynamic_configprivateprovidesno_indexkeywordsresourceshomepage,license,bugtracker
generated_by
(still deep in the module from before, bestie โ its SEE ALSO and HISTORY are the last two things it's got, so here they are, no heading repeat, we just slide right in ๐
)
SEE ALSOHISTORYMarch 14, 2003 (Pi day),May 8, 2003,November 13, 2003,November 16, 2003,December 9, 2003,December 15, 2003,July 26, 2005,August 23, 2005
okay and now we're into the metadata-spec history era of this TOC and honestly? it's giving archivists. two whole snapshots of the old META.yml spec, side by side, so you can see exactly what got added when. ๐ซถ
- CPAN::Meta::History::Meta_1_3 โ the version 1.3 metadata spec for
META.ymlPREFACESYNOPSISDESCRIPTIONFORMATTERMINOLOGY- distribution, module
HEADERFIELDSmeta-specnameversionabstractauthorlicense- apache, artistic, bsd, gpl, lgpl, mit, mozilla, open_source, perl, restrictive, unrestricted
distribution_typerequiresrecommendsbuild_requiresconflictsdynamic_configprivateprovidesno_indexkeywordsresources- homepage, license, bugtracker
generated_by
VERSION SPECIFICATIONSSEE ALSOHISTORYMarch 14, 2003 (Pi day),May 8, 2003,November 13, 2003,November 16, 2003,December 9, 2003,December 15, 2003,July 26, 2005,August 23, 2005
- CPAN::Meta::History::Meta_1_4 โ the version 1.4 metadata spec for
META.ymlPREFACESYNOPSISDESCRIPTIONFORMATTERMINOLOGY- distribution, module
HEADERFIELDSmeta-specnameversionabstractauthorlicense- apache, artistic, bsd, gpl, lgpl, mit, mozilla, open_source, perl, restrictive, unrestricted
distribution_typerequiresrecommendsbuild_requiresconfigure_requiresconflictsdynamic_configprivateprovidesno_indexkeywordsresources- homepage, license, bugtracker
generated_by
VERSION SPECIFICATIONSSEE ALSOHISTORYMarch 14, 2003 (Pi day),May 8, 2003,November 13, 2003,November 16, 2003,December 9, 2003,December 15, 2003,July 26, 2005,August 23, 2005,June 12, 2007
notice the glow-up between 1.3 and 1.4?configure_requiresshowed up inFIELDSand a whole extra date โJune 12, 2007โ landed inHISTORY. that's the whole diff, no cap. โจ
and now the CPAN::Meta squad proper. five modules, all about describing a distribution before anyone even builds it. it's the group chat of metadata. ๐
- CPAN::Meta::Merge โ merging CPAN Meta fragments
VERSIONSYNOPSISDESCRIPTIONMETHODSnewmerge(@fragments)
MERGE STRATEGIES- identical, set_addition, uniq_map, improvise
AUTHORSCOPYRIGHT AND LICENSE
- CPAN::Meta::Prereqs โ a set of distribution prerequisites by phase and type
VERSIONDESCRIPTIONMETHODSnewrequirements_forphasestypes_inwith_merged_prereqsmerged_requirementsas_string_hashis_finalizedfinalizeclone
BUGSAUTHORSCOPYRIGHT AND LICENSE
- CPAN::Meta::Requirements โ a set of version requirements for a CPAN dist
VERSIONSYNOPSISDESCRIPTIONMETHODSnewadd_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
AUTHORSCONTRIBUTORSCOPYRIGHT AND LICENSE
- CPAN::Meta::Requirements::Range โ a set of version requirements for a CPAN dist
VERSIONSYNOPSISDESCRIPTIONMETHODSwith_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
AUTHORSCOPYRIGHT AND LICENSE
- CPAN::Meta::Spec โ the specification for CPAN distribution metadata
VERSIONSYNOPSISDESCRIPTIONTERMINOLOGY- distribution, module, package, consumer, producer, must, should, may, etc
DATA TYPES- Boolean
- String
- List
- Map
- License String
- URL
- Version
- Version Range
STRUCTUREREQUIRED FIELDS- version, url, stable, testing, unstable
OPTIONAL FIELDS- file, directory, package, namespace, description, prereqs, file, version, homepage, license, bugtracker, repository
DEPRECATED FIELDS
VERSION NUMBERSVersion Formats- Decimal versions, Dotted-integer versions
Version Ranges
PREREQUISITESPrereq Spec- configure, build, test, runtime, develop, requires, recommends, suggests, conflicts
Merging and Resolving Prerequisites
SERIALIZATIONNOTES FOR IMPLEMENTORS- Extracting Version Numbers from Perl Modules
- Comparing Version Numbers
- Prerequisites for dynamically configured distributions
- Indexing distributions a la PAUSE
SEE ALSOHISTORYAUTHORSCOPYRIGHT AND LICENSE
- CPAN::Meta::Validator โ validate CPAN distribution metadata structures
VERSIONSYNOPSISDESCRIPTIONMETHODSnewis_validerrors- Check Methods
- Validator Methods
BUGSAUTHORSCOPYRIGHT AND LICENSE
- CPAN::Meta::YAML โ read and write a subset of YAML for CPAN Meta files
VERSIONSYNOPSISDESCRIPTIONSUPPORTSEE ALSOAUTHORSCONTRIBUTORCOPYRIGHT AND LICENSE
shoutout toOPTIONAL FIELDSup there listingfiletwice โ yes bestie, it really does, we are not fixing it, we are reporting it. ๐
then there's this next block, and ngl its module header didn't ride along in this chunk, but the section list is fully here so let's just lay it out. it's very "mirror directory, but make it a class". ๐
SYNOPSISDESCRIPTIONnew( 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 );AUTHORLICENSE
back to the CPAN::* utility shelf โ the little helpers nobody thinks about but everybody depends on. ๐ง
- CPAN::Nox โ a wrapper around
CPAN.pmthat doesn't use any XS moduleSYNOPSISDESCRIPTIONLICENSESEE ALSO
- CPAN::Plugin โ the base class for CPAN shell extensions
SYNOPSISDESCRIPTION- Alpha Status
- How Plugins work?
METHODSplugin_requiresdistribution_objectdistributiondistribution_infobuild_diris_xs
AUTHOR
- CPAN::Plugin::Specfile โ a proof of concept implementation of a trivial
CPAN::PluginSYNOPSISDESCRIPTIONOPTIONS
AUTHOR
- CPAN::Queue โ internal queue support for
CPAN.pmLICENSE
- CPAN::Tarzip โ internal handling of tar archives for
CPAN.pmLICENSE
- CPAN::Version โ utility functions to compare CPAN versions
SYNOPSISDESCRIPTIONLICENSE
and NOW, bestie, the moment the whole TOC has been building toward: Carp. ๐ it's the reason your error messages have a whole little story about who called whom. iconic. no notes.
- Carp โ alternative
warnanddiefor modulesSYNOPSISDESCRIPTION- 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
BUGSSEE ALSOCONTRIBUTINGAUTHORCOPYRIGHT AND LICENSE
- Class::Struct โ declare struct-like datatypes as Perl classes
SYNOPSISDESCRIPTION- 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
finally, the Compress::Raw corner โ straight-up low-level bindings, the kind of thing that makes you feel like you're holding the compression library with your bare hands. ๐
- Compress::Raw::Bzip2 โ low-level interface to the bzip2 compression library
SYNOPSISDESCRIPTIONCompression($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);
Miscmy $version = Compress::Raw::Bzip2::bzlibversion();
ConstantsSUPPORTSEE ALSOAUTHORMODIFICATION HISTORYCOPYRIGHT AND LICENSE
- Compress::Raw::Zlib โ low-level interface to the zlib or zlib-ng compression library
SYNOPSISDESCRIPTIONCompress::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 FUNCTIONSMiscmy $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 FILESFAQ- Compatibility with Unix compress/uncompress.
- Accessing .tar.Z files
- Zlib Library Version Support
CONSTANTSSUPPORTSEE ALSOAUTHORMODIFICATION HISTORYCOPYRIGHT AND LICENSE
Compress::Zlib โ Interface to zlib compression library ๐ซถ
bestie, this one is the zlib serve โ a whole compression library interface โ and it comes with a lil family of subsections, so we're listing every single one, no skipping, periodt ๐
- SYNOPSIS
- DESCRIPTION
- Notes for users of Compress::Zlib version 1
- GZIP INTERFACE ๐ธ
$gz = gzopen($filename, $mode)$gz = gzopen($filehandle, $mode)$bytesread = $gz->gzread($buffer [, $size]) ;$bytesread = $gz->gzreadline($line) ;$byteswritten = $gz->gzwrite($buffer) ;$status = $gz->gzflush($flush_type) ;$offset = $gz->gztell() ;$status = $gz->gzseek($offset, $whence) ;$gz->gzclose$gz->gzsetparams($level, $strategy, $level, $strategy, $gz->gzerror, $gzerrno- Examples
Compress::Zlib::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 ๐ฆ
okay so bestie, lowkey important heads-up before anything else, no cap:
๐ this whole file is Generated by configpm. Any changes made here will be lost! โ so do NOT hand-edit it, it'll just get wiped, fr fr ๐ญ
- SYNOPSIS
- DESCRIPTION
myconfig()config_sh()config_re($regex)config_vars(@names)bincompat_options()non_bincompat_options()compile_date()local_patches()header_files()
- EXAMPLE
- WARNING โ ๏ธ
- GLOSSARY ๐
and then the glossary is literally just an alphabetical vibe check of every config variable, grouped by first letter, so let's go letter by letter, the way that the alphabet intended โจ
- P โ
"PERL_API_REVISION","PERL_API_SUBVERSION","PERL_API_VERSION","PERL_CONFIG_SH","PERL_PATCHLEVEL","PERL_REVISION","PERL_SUBVERSION","PERL_VERSION" _โ"_a","_exe","_o"- a โ
"afs","afsroot","alignbytes","aphostname","api_revision","api_subversion","api_version","api_versionstring","ar","archlib","archlibexp","archname","archname64","archobjs","asctime_r_proto","awk" - b โ
"baserev","bash","bin","bin_ELF","binexp","bison","byacc","byteorder" - c โ
"c","castflags","cat","cc","cccdlflags","ccdlflags","ccflags","ccflags_uselargefiles","ccname","ccsymbols","ccversion","cf_by","cf_email","cf_time","charbits","charsize","chgrp","chmod","chown","clocktype","comm","compiler_warning","compress","config_arg0","config_argc","config_args","contains","cp","cpio","cpp","cpp_stuff","cppccsymbols","cppflags","cpplast","cppminus","cpprun","cppstdin","cppsymbols","crypt_r_proto","cryptlib","csh","ctermid_r_proto","ctime_r_proto"
okay bestie we are STILL in the d_ pile and honestly she has stamina ๐
no shade, this list is a whole personality. keep your eyes on the code blocks, the names are the names, I'm not touching a single character:
d_Gconvert
d_PRIEUldbl
d_PRIFUldbl
d_PRIGUldbl
d_PRIXU64
d_PRId64
d_PRIeldbl
d_PRIfldbl
d_PRIgldbl
d_PRIi64
d_PRIo64
d_PRIu64
d_PRIx64
d_SCNfldbl
the PRI girlies and their one SCN bestie ๐ iconic little format-macro family, no notes.
d__fwalk
d_accept4
d_access
d_accessx
d_acosh
d_aintl
d_alarm
d_archlib
d_asctime64
d_asctime_r
d_asinh
d_atanh
d_atolf
d_atoll
and then the attribute section, which is lowkey the most main-character block in here:
d_attribute_always_inline
d_attribute_deprecated
d_attribute_format
d_attribute_malloc
d_attribute_nonnull
d_attribute_noreturn
d_attribute_pure
d_attribute_unused
d_attribute_visibility
d_attribute_warn_unused_result
d_backtrace
d_bsd
d_bsdgetpgrp
d_bsdsetpgrp
d_builtin_add_overflow
d_builtin_choose_expr
d_builtin_expect
d_builtin_mul_overflow
d_builtin_sub_overflow
d_c99_variadic_macros
d_casti32
d_castneg
d_cbrt
d_chown
d_chroot
d_chsize
d_class
d_clearenv
d_closedir
d_cmsghdr_s
d_copysign
d_copysignl
d_cplusplus
d_crypt
d_crypt_r
d_csh
d_ctermid
d_ctermid_r
d_ctime64
d_ctime_r
d_cuserid
the d_builtin_* ones?? math girlies eating, no cap โจ
d_dbminitproto
d_difftime
d_difftime64
d_dir_dd_fd
d_dirfd
d_dirnamlen
d_dladdr
d_dlerror
d_dlopen
d_dlsymun
d_dosuid
d_double_has_inf
d_double_has_nan
d_double_has_negative_zero
d_double_has_subnormals
d_double_style_cray
d_double_style_ibm
d_double_style_ieee
d_double_style_vax
d_drand48_r
d_drand48proto
d_dup2
d_dup3
d_duplocale
d_eaccess
d_endgrent
d_endgrent_r
d_endhent
d_endhostent_r
d_endnent
d_endnetent_r
d_endpent
d_endprotoent_r
d_endpwent
d_endpwent_r
d_endsent
d_endservent_r
d_eofnblk
d_erf
d_erfc
d_eunice
d_exp2
d_expm1
not the d_double_style_* quartet, it's giving four-way vibe check ๐ฆ and the d_end* run is just chef's kiss commitment.
d_faststdio
d_fchdir
d_fchmod
d_fchmodat
d_fchown
d_fcntl
d_fcntl_can_lock
d_fd_macros
d_fd_set
d_fdclose
d_fdim
d_fdopendir
d_fds_bits
d_fegetround
d_ffs
d_ffsl
d_fgetpos
d_finite
d_finitel
d_flexfnam
d_flock
d_flockproto
d_fma
d_fmax
d_fmin
d_fork
d_fp_class
d_fp_classify
d_fp_classl
d_fpathconf
d_fpclass
d_fpclassify
d_fpclassl
d_fpgetround
d_fpos64_t
d_freelocale
d_frexpl
d_fs_data_s
d_fseeko
d_fsetpos
d_fstatfs
d_fstatvfs
d_fsync
d_ftello
d_ftime
d_futimes
the d_f block is SO long, she's the friend who sends 47 texts in a row and honestly? respect ๐
d_gai_strerror
d_gdbm_ndbm_h_uses_prototypes
d_gdbmndbm_h_uses_prototypes
d_getaddrinfo
d_getcwd
d_getenv_preserves_other_thread
d_getespwnam
d_getfsstat
d_getgrent
d_getgrent_r
d_getgrgid_r
d_getgrnam_r
d_getgrps
d_gethbyaddr
d_gethbyname
d_gethent
d_gethname
d_gethostbyaddr_r
d_gethostbyname_r
d_gethostent_r
d_gethostprotos
d_getitimer
d_getlogin
d_getlogin_r
d_getmnt
d_getmntent
d_getnameinfo
d_getnbyaddr
d_getnbyname
d_getnent
d_getnetbyaddr_r
d_getnetbyname_r
d_getnetent_r
d_getnetprotos
d_getpagsz
d_getpbyname
d_getpbynumber
d_getpent
d_getpgid
d_getpgrp
d_getpgrp2
d_getppid
d_getprior
d_getprotobyname_r
d_getprotobynumber_r
d_getprotoent_r
d_getprotoprotos
d_getprpwnam
d_getpwent
d_getpwent_r
d_getpwnam_r
d_getpwuid_r
d_getsbyname
d_getsbyport
d_getsent
d_getservbyname_r
d_getservbyport_r
d_getservent_r
d_getservprotos
d_getspnam
d_getspnam_r
d_gettimeod
d_gmtime64
d_gmtime_r
d_gnulibc
okay the d_get* marathon?? bestie she does NOT stop ๐ญ and I love that for her. note that both d_gdbm_ndbm_h_uses_prototypes AND d_gdbmndbm_h_uses_prototypes are in here โ two of them!! do not merge them, do not "fix" them, they are BOTH valid and BOTH staying ๐ซถ
d_grpasswd
d_has_C_UTF8
d_hasmntopt
d_htonl
d_hypot
d_ilogb
d_ilogbl
d_inc_version_list
d_inetaton
d_inetntop
d_inetpton
d_int64_t
d_ip_mreq
d_ip_mreq_source
d_ipv6_mreq
d_ipv6_mreq_source
d_isascii
d_isblank
d_isfinite
d_isfinitel
d_isinf
d_isinfl
d_isless
d_isnan
d_isnanl
d_isnormal
d_j0
d_j0l
d_killpg
d_lc_monetary_2008
d_lchown
d_ldbl_dig
d_ldexpl
d_lgamma
d_lgamma_r
d_libm_lib_version
d_libname_unique
d_link
d_linkat
d_llrint
d_llrintl
d_llround
d_llroundl
d_localeconv_l
d_localtime64
d_localtime_r
d_localtime_r_needs_tzset
d_locconv
d_lockf
d_log1p
d_log2
d_logb
d_long_double_style_ieee
d_long_double_style_ieee_doubledouble
d_long_double_style_ieee_extended
d_long_double_style_ieee_std
d_long_double_style_vax
d_longdbl
d_longlong
d_lrint
d_lrintl
d_lround
d_lroundl
d_lseekproto
d_lstat
the d_long_double_style_* set is literally a five-part series, and d_long_double_style_ieee_doubledouble is the longest name here and she KNOWS it ๐
d_madvise
d_malloc_good_size
d_malloc_size
d_malloc_usable_size
d_mblen
d_mbrlen
d_mbrtowc
d_mbstowcs
d_mbtowc
d_memmem
d_memrchr
d_mkdir
d_mkdtemp
d_mkfifo
d_mkostemp
d_mkstemp
d_mkstemps
d_mktime
d_mktime64
d_mmap
d_modfl
d_modflproto
d_mprotect
d_msg
d_msg_ctrunc
d_msg_dontroute
d_msg_oob
d_msg_peek
d_msg_proxy
d_msgctl
d_msgget
d_msghdr_s
d_msgrcv
d_msgsnd
d_msync
d_munmap
d_mymalloc
d_nan
d_nanosleep
d_ndbm
d_ndbm_h_uses_prototypes
d_nearbyint
d_newlocale
d_nextafter
d_nexttoward
d_nice
d_nl_langinfo
d_nl_langinfo_l
d_non_int_bitfields
d_nv_preserves_uv
d_nv_zero_is_allbits_zero
d_off64_t
d_old_pthread_create_joinable
d_oldpthreads
d_oldsock
d_open3
d_openat
d_pathconf
d_pause
d_perl_lc_all_category_positions_init
d_perl_lc_all_separator
d_perl_lc_all_uses_name_value_pairs
d_perl_otherlibdirs
d_phostname
d_pipe
d_pipe2
d_poll
d_portable
d_prctl
d_prctl_set_name
d_printf_format_null
the d_mkstemp / d_mkstemps / d_mkostemp trioโฆ sisters, not twins, don't mix them up ๐ and d_msg* really said "we're a whole friend group".
d_procselfexe
d_pseudofork
d_pthread_atfork
d_pthread_attr_setscope
d_pthread_yield
d_ptrdiff_t
d_pwage
d_pwchange
d_pwclass
d_pwcomment
d_pwexpire
d_pwgecos
d_pwpasswd
d_pwquota
d_qgcvt
d_quad
d_querylocale
d_random_r
d_re_comp
d_readdir
d_readdir64_r
d_readdir_r
d_readlink
d_readv
d_recvmsg
d_regcmp
d_regcomp
d_remainder
d_remquo
d_rename
d_renameat
d_rewinddir
d_rint
d_rmdir
d_round
d_sbrkproto
d_scalbn
d_scalbnl
d_sched_yield
d_scm_rights
d_seekdir
d_select
d_sem
d_semctl
d_semctl_semid_ds
d_semctl_semun
d_semget
d_semop
d_sendmsg
d_setegid
d_setenv
d_seteuid
d_setgrent
d_setgrent_r
d_setgrps
d_sethent
d_sethostent_r
d_setitimer
d_setlinebuf
d_setlocale
d_setlocale_accepts_any_locale_name
d_setlocale_r
d_setnent
d_setnetent_r
d_setpent
d_setpgid
d_setpgrp
d_setpgrp2
d_setprior
d_setproctitle
d_setprotoent_r
d_setpwent
d_setpwent_r
d_setregid
d_setresgid
d_setresuid
d_setreuid
d_setrgid
d_setruid
d_setsent
d_setservent_r
d_setsid
the d_pw* block is giving very "old system file fields" energy and I am OBSESSED ๐ธ also d_setlocale_accepts_any_locale_name is a whole sentence in a variable name, she's the overachiever.
d_setvbuf
d_shm
d_shmat
d_shmatprototype
d_shmctl
d_shmdt
d_shmget
d_sigaction
d_siginfo_si_addr
d_siginfo_si_band
d_siginfo_si_errno
d_siginfo_si_fd
d_siginfo_si_pid
d_siginfo_si_status
d_siginfo_si_uid
d_siginfo_si_value
d_signbit
d_sigprocmask
d_sigsetjmp
d_sin6_scope_id
d_sitearch
d_snprintf
d_sockaddr_in6
d_sockaddr_sa_len
d_sockaddr_storage
d_sockatmark
d_sockatmarkproto
d_socket
d_socklen_t
d_sockpair
d_socks5_init
d_sqrtl
d_srand48_r
d_srandom_r
d_sresgproto
d_sresuproto
d_stat
d_statblks
d_statfs_f_flags
d_statfs_s
d_static_inline
d_statvfs
d_stdio_cnt_lval
d_stdio_ptr_lval
d_stdio_ptr_lval_nochange_cnt
d_stdio_ptr_lval_sets_cnt
d_stdio_stream_array
d_stdiobase
d_stdstdio
d_strcoll
d_strerror_l
d_strerror_r
d_strftime
d_strlcat
d_strlcpy
d_strnlen
d_strtod
d_strtod_l
d_strtol
d_strtold
d_strtold_l
d_strtoll
d_strtoq
d_strtoul
d_strtoull
d_strtouq
d_strxfrm
d_strxfrm_l
d_suidsafe
d_symlink
d_syscall
d_syscallproto
d_sysconf
d_sysernlst
d_syserrlst
d_system
the d_siginfo_si_* run is EIGHT of them, eight!! a whole octet ๐ and the d_stdio_ptr_lval* trio is out here with the longest suffixes. not d_stdio_ptr_lval_nochange_cnt and d_stdio_ptr_lval_sets_cnt being opposites, they're enemies to lovers fr ๐
d_tcgetpgrp
d_tcsetpgrp
d_telldir
d_telldirproto
d_tgamma
d_thread_local
d_time
d_timegm
d_times
d_tm_tm_gmtoff
d_tm_tm_zone
d_tmpnam_r
d_towlower
d_towupper
d_trunc
d_truncate
d_truncl
d_ttyname_r
d_tzname
d_u32align
d_ualarm
d_umask
d_uname
d_union_semun
d_unlinkat
d_unordered
d_unsetenv
d_uselocale
d_usleep
d_usleepproto
d_ustat
d_vendorarch
d_vendorbin
d_vendorlib
d_vendorscript
d_vfork
d_void_closedir
d_voidsig
d_voidtty
d_vsnprintf
d_wait4
d_waitpid
d_wcrtomb
d_wcscmp
d_wcstombs
d_wcsxfrm
d_wctomb
d_writev
d_xenix
date
db_hashtype
db_prefixtype
db_version_major
db_version_minor
db_version_patch
default_inc_excludes_dot
direntrytype
dlext
dlsrc
doubleinfbytes
doublekind
doublemantbits
doublenanbytes
doublesize
drand01
drand48_r_proto
dtrace
dtraceobject
dtracexnolibs
dynamic_ext
and THAT, bestie, is the end of the d_ run โ she finally put her phone down. then we pivot into the lowercase letters and they're way shorter, breathe ๐
e
eagain
ebcdic
echo
egrep
emacs
endgrent_r_proto
endhostent_r_proto
endnetent_r_proto
endprotoent_r_proto
endpwent_r_proto
endservent_r_proto
eunicefix
exe_ext
expr
extensions
extern_C
extras
the e girlies came in, said their piece, and left. short king energy ๐
f
fflushNULL
fflushall
find
firstmakefile
flex
fpossize
fpostype
freetype
from
full_ar
full_csh
full_sed
note fflushNULL with the capital NULL right there in the middle โ do NOT lowercase it, do NOT "clean it up", it is exactly that ๐
g
gccansipedantic
gccosandvers
gccversion
getgrent_r_proto
getgrgid_r_proto
getgrnam_r_proto
gethostbyaddr_r_proto
gethostbyname_r_proto
gethostent_r_proto
getlogin_r_proto
getnetbyaddr_r_proto
getnetbyname_r_proto
getnetent_r_proto
getprotobyname_r_proto
getprotobynumber_r_proto
getprotoent_r_proto
getpwent_r_proto
getpwnam_r_proto
getpwuid_r_proto
getservbyname_r_proto
getservbyport_r_proto
getservent_r_proto
getspnam_r_proto
gidformat
gidsign
gidsize
gidtype
glibpth
gmake
gmtime_r_proto
gnulibc_version
grep
groupcat
groupstype
gzip
the whole get*_r_proto squad all in one place โ it's giving a class photo ๐ธ every single one ends in _r_proto, no stragglers, we love consistency.
h
h_fcntl
h_sysfile
hint
hostcat
hostgenerate
hostosname
hostperl
html1dir
html1direxp
html3dir
html3direxp
and that's the h block closing out this chunk โ the html1dir/html1direxp and html3dir/html3direxp pairs are matching sets, absolutely coordinated ๐ฆ
๐ i
okay the i block is unhinged in the best way โ it's giving "every header you have ever met, plus every install path ever" energy:
"i16size","i16type","i32dformat","i32size","i32type","i64size","i64type","i8size","i8type","i_arpainet","i_bfd","i_bsdioctl","i_crypt","i_db","i_dbm","i_dirent","i_dlfcn","i_execinfo","i_fcntl","i_fenv","i_fp","i_fp_class","i_gdbm","i_gdbm_ndbm","i_gdbmndbm","i_grp","i_ieeefp","i_inttypes","i_langinfo","i_libutil","i_locale","i_machcthr","i_malloc","i_mallocmalloc","i_mntent","i_ndbm","i_netdb","i_neterrno","i_netinettcp","i_niin","i_poll","i_prot","i_pthread","i_pwd","i_quadmath","i_rpcsvcdbm","i_sgtty","i_shadow","i_socks","i_stdbool","i_stdint","i_stdlib","i_sunmath","i_sysaccess","i_sysdir","i_sysfile","i_sysfilio","i_sysin","i_sysioctl","i_syslog","i_sysmman","i_sysmode","i_sysmount","i_sysndir","i_sysparam","i_syspoll","i_sysresrc","i_syssecrt","i_sysselct","i_syssockio","i_sysstat","i_sysstatfs","i_sysstatvfs","i_syssyscall","i_systime","i_systimek","i_systimes","i_systypes","i_sysuio","i_sysun","i_sysutsname","i_sysvfs","i_syswait","i_termio","i_termios","i_time","i_unistd","i_ustat","i_utime","i_vfork","i_wchar","i_wctype","i_xlocale""ignore_versioned_solibs","inc_version_list","inc_version_list_init","incpath","incpth","inews","initialinstalllocation","installarchlib","installbin","installhtml1dir","installhtml3dir","installman1dir","installman3dir","installprefix","installprefixexp","installprivlib","installscript","installsitearch","installsitebin","installsitehtml1dir","installsitehtml3dir","installsitelib","installsiteman1dir","installsiteman3dir","installsitescript","installstyle","installusrbinperl","installvendorarch","installvendorbin","installvendorhtml1dir","installvendorhtml3dir","installvendorlib","installvendorman1dir","installvendorman3dir","installvendorscript","intsize","issymlink","ivdformat","ivsize","ivtype"
๐ธ k
short and sweet, two lil besties:
"known_extensions","ksh"
๐ฆ l
the linker-and-library zone, lowkey iconic:
"ld","ld_can_script","lddlflags","ldflags","ldflags_uselargefiles","ldlibpthname","less","lib_ext","libc","libperl","libpth","libs","libsdirs","libsfiles","libsfound","libspath","libswanted","libswanted_uselargefiles","line","lint","lkflags","ln","lns","localtime_r_proto","locincpth","loclibpth","longdblinfbytes","longdblkind","longdblmantbits","longdblnanbytes","longdblsize","longlongsize","longsize","lp","lpr","ls","lseeksize","lseektype"
๐ m
mail, make, man, malloc, mystery (jk there's no mystery, it's all right here):
"mail","mailx","make","make_set_make","mallocobj","mallocsrc","malloctype","man1dir","man1direxp","man1ext","man3dir","man3direxp","man3ext","mips_type","mistrustnm","mkdir","mmaptype","modetype","more","multiarch","mv","myarchname","mydomain","myhostname","myuname"
โญ n
netdb, nm, nv formats โ nerd central and we love her:
"n","need_va_copy","netdb_hlen_type","netdb_host_type","netdb_name_type","netdb_net_type","nm","nm_opt","nm_so_opt","nonxs_ext","nroff","nvEUformat","nvFUformat","nvGUformat","nv_overflows_integers_at","nv_preserves_uv_bits","nveformat","nvfformat","nvgformat","nvmantbits","nvsize","nvtype"
๐ฅ o
options and os stuff, periodt:
"o_nonblock","obj_ext","old_pthread_create_joinable","optimize","orderlib","osname","osvers","otherlibdirs"
๐ p
the p pile, and yes it's long โ perl paths for days:
"package","pager","passcat","patchlevel","path_sep","perl","perl5","perl_lc_all_category_positions_init","perl_lc_all_separator","perl_patchlevel","perl_static_inline","perl_thread_local","perladmin","perllibs","perlpath","pg","phostname","pidtype","plibpth","pmake","pr","prefix","prefixexp","privlib","privlibexp","procselfexe","ptrsize"
๐ง q
two (2) items. tiny. perfect:
"quadkind","quadtype"
๐ r
rand, readdir, rm โ the "just do the thing" section:
"randbits","randfunc","random_r_proto","randseedtype","ranlib","rd_nodata","readdir64_r_proto","readdir_r_proto","revision","rm","rm_try","rmail","run","runnm"
โจ s
okay bestie the s block is massive and it ate, no notes:
"sGMTIME_max","sGMTIME_min","sLOCALTIME_max","sLOCALTIME_min","sPRIEUldbl","sPRIFUldbl","sPRIGUldbl","sPRIXU64","sPRId64","sPRIeldbl","sPRIfldbl","sPRIgldbl","sPRIi64","sPRIo64","sPRIu64","sPRIx64","sSCNfldbl","sched_yield","scriptdir","scriptdirexp","sed","seedfunc","selectminbits","selecttype","sendmail","setgrent_r_proto","sethostent_r_proto","setlocale_r_proto","setnetent_r_proto","setprotoent_r_proto","setpwent_r_proto","setservent_r_proto","sh","shar","sharpbang","shmattype","shortsize","shrpenv","shsharp","sig_count","sig_name","sig_name_init","sig_num","sig_num_init","sig_size","signal_t","sitearch","sitearchexp","sitebin","sitebinexp","sitehtml1dir","sitehtml1direxp","sitehtml3dir","sitehtml3direxp","sitelib","sitelib_stem","sitelibexp","siteman1dir","siteman1direxp","siteman3dir","siteman3direxp","siteprefix","siteprefixexp","sitescript","sitescriptexp","sizesize","sizetype","sleep","smail","so","sockethdr","socketlib","socksizetype","sort","spackage","spitshell","srand48_r_proto","srandom_r_proto","src","ssizetype","st_dev_sign","st_dev_size","st_ino_sign","st_ino_size","startperl","startsh","static_ext","stdchar","stdio_base","stdio_bufsiz","stdio_cnt","stdio_filbuf","stdio_ptr","stdio_stream_array","strerror_r_proto","submit","subversion","sysman","sysroot"
๐ t
tools and types, we stay tooling:
"tail","taint_disabled","taint_support","tar","targetarch","targetdir","targetenv","targethost","targetmkdir","targetport","targetsh","tbl","tee","test","timeincl","timetype","tmpnam_r_proto","to","touch","tr","trnl","troff","ttyname_r_proto"
๐
๐ u
the use* section, aka the "which features did we turn on" vibe check:
"u16size","u16type","u32XUformat","u32oformat","u32size","u32type","u32uformat","u32xformat","u64size","u64type","u8size","u8type","uidformat","uidsign","uidsize","uidtype","uname","uniq","uquadtype","use64bitall","use64bitint","usecbacktrace","usecrosscompile","usedefaultstrict","usedevel","usedl","usedtrace","usefaststdio","useithreads","usekernprocpathname","uselanginfo","uselargefiles","uselongdouble","usemallocwrap","usemorebits","usemultiplicity","usemymalloc","usenm","usensgetexecutablepath","useopcode","useperlio","useposix","usequadmath","usereentrant","userelocatableinc","useshrplib","usesitecustomize","usesocks","usethreads","usevendorprefix","useversionedarchname","usevfork","usrinc","uuname","uvXUformat","uvoformat","uvsize","uvtype","uvuformat","uvxformat"
๐ v
vendor paths + version, the classic:
"vendorarch","vendorarchexp","vendorbin","vendorbinexp","vendorhtml1dir","vendorhtml1direxp","vendorhtml3dir","vendorhtml3direxp","vendorlib","vendorlib_stem","vendorlibexp","vendorman1dir","vendorman1direxp","vendorman3dir","vendorman3direxp","vendorprefix","vendorprefixexp","vendorscript","vendorscriptexp","version","version_patchlevel_string","versiononly","vi"
๐ซถ x
"xlibpth","xlocale_needed"
๐ y
"yacc","yaccflags"
๐ z
and that's the alphabet, we did it bestie:
"zcat","zip"
๐ GIT DATA
๐ NOTE
๐ Config::Extensions - hash lookup of which core extensions were built.
๐ SYNOPSIS
๐ DESCRIPTION
the three flavors you might see in here:
dynamicnonxsstatic
๐ 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
๐ DBM_Filter::null - filter for DBM_Filter
๐ SYNOPSIS
๐ DESCRIPTION
๐ SEE ALSO
๐ AUTHOR
๐ DBM_Filter::utf8 - filter for DBM_Filter
๐ SYNOPSIS
๐ DESCRIPTION
๐ SEE ALSO
๐ AUTHOR
๐ DB_File - Perl5 access to Berkeley DB version 1.x
โจ SYNOPSIS
โจ DESCRIPTION
the three DB flavors, right off the bat:
DB_HASH,DB_BTREE,DB_RECNO
๐ธ Using DB_File with Berkeley DB version 2 or greater
๐ธ Interface to Berkeley DB
๐ธ Opening a Berkeley DB Database File
๐ธ Default Parameters
๐ธ In Memory Databases
โจ DB_HASH
๐ A Simple Example
โจ DB_BTREE
๐ Changing the BTREE sort order
๐ Handling Duplicate Keys
๐ The get_dup() Method
๐ The find_dup() Method
๐ The del_dup() Method
๐ Matching Partial Keys
โจ DB_RECNO
๐ The 'bval' Option
๐ A Simple Example
๐ Extra RECNO Methods
$X->push(list) ;$value = $X->pop ;$X->shift$X->unshift(list) ;$X->length$X->splice(offset, length, elements);
๐ Another Example
- THE API INTERFACE โ the whole method lineup, bestie, right here:
$status = $X->get($key, $value [, $flags]) ;
$status = $X->put($key, $value [, $flags]) ;
$status = $X->del($key [, $flags]) ;
$status = $X->fd ;
$status = $X->seq($key, $value, $flags) ;
$status = $X->sync([$flags]) ;
- DBM FILTERS
- DBM Filter Low-level API โ the four little legends:
filter_store_key,filter_store_value,filter_fetch_key,filter_fetch_value - The Filter ๐ซถ
- An Example -- the NULL termination problem.
- Another Example -- Key is a C int.
- DBM Filter Low-level API โ the four little legends:
- HINTS AND TIPS
- Locking: The Trouble with fd โ yes, the drama
- Safe ways to lock a database
Tie::DB_Lock,Tie::DB_LockFile,DB_File::Lockโ pick your fighter ๐
- Sharing Databases With C Applications
- The untie() Gotcha โ not a vibe, but you gotta know
- COMMON QUESTIONS
- Why is there Perl source in my database?
- How do I store complex data structures with DB_File?
- What does "wide character in subroutine entry" mean?
- What does "Invalid Argument" mean?
- What does "Bareword 'DB_File' not allowed" mean?
- REFERENCES
- HISTORY
- BUGS
- SUPPORT
- AVAILABILITY
- COPYRIGHT
- SEE ALSO
- AUTHOR
Data::Dumper โ stringified perl data structures, suitable for both printing and eval ๐
- SYNOPSIS
- DESCRIPTION
- Methods
PACKAGE->new(ARRAYREF [, ARRAYREF]),$OBJ->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
- EXAMPLES
- BUGS
- NOTE
- AUTHOR
- VERSION
- SEE ALSO
Devel::PPPort โ Perl/Pollution/Portability โจ
- SYNOPSIS
- Start using Devel::PPPort for XS projects
- DESCRIPTION
- Why use ppport.h?
- How to use ppport.h
- Running ppport.h
- FUNCTIONS
- WriteFile
- GetFileContents
- COMPATIBILITY
- Provided Perl compatibility API
- Supported Perl API, sorted by version
okay so this next bit is a whole wall of versions and honestly? iconic. every single one of these is in the list, no skips, we do not gatekeep:
perl 5.35.9, perl 5.35.8, perl 5.35.7, perl 5.35.6, perl 5.35.5, perl 5.35.4, perl 5.35.1, perl 5.33.8, perl 5.33.7, perl 5.33.5, perl 5.33.2, perl 5.32.1, perl 5.31.9, perl 5.31.7, perl 5.31.5, perl 5.31.4, perl 5.31.3, perl 5.29.10, perl 5.29.9, perl 5.27.11, perl 5.27.9, perl 5.27.8, perl 5.27.7, perl 5.27.6, perl 5.27.5, perl 5.27.4, perl 5.27.3, perl 5.27.2, perl 5.27.1, perl 5.25.11, perl 5.25.10, perl 5.25.9, perl 5.25.8, perl 5.25.7, perl 5.25.6, perl 5.25.5, perl 5.25.4, perl 5.25.3, perl 5.25.2, perl 5.25.1, perl 5.24.0, perl 5.23.9, perl 5.23.8, perl 5.23.6, perl 5.23.5, perl 5.23.2, perl 5.23.0, perl 5.21.10, perl 5.21.9, perl 5.21.8, perl 5.21.7, perl 5.21.6, perl 5.21.5, perl 5.21.4, perl 5.21.3, perl 5.21.2, perl 5.21.1, perl 5.19.10, perl 5.19.9, perl 5.19.7, perl 5.19.5, perl 5.19.4, perl 5.19.3, perl 5.19.2, perl 5.19.1, perl 5.18.0, perl 5.17.11, perl 5.17.8, perl 5.17.7, perl 5.17.6, perl 5.17.5, perl 5.17.4, perl 5.17.2, perl 5.17.1, perl 5.16.0, perl 5.15.8, perl 5.15.7, perl 5.15.6, perl 5.15.4, perl 5.15.3, perl 5.15.2, perl 5.15.1, perl 5.13.10, perl 5.13.9, perl 5.13.8, perl 5.13.7, perl 5.13.6, perl 5.13.5, perl 5.13.4, perl 5.13.3, perl 5.13.2, perl 5.13.1, perl 5.13.0, perl 5.11.5, perl 5.11.4, perl 5.11.2, perl 5.11.0, perl 5.10.1, perl 5.10.0, perl 5.9.5, perl 5.9.4, perl 5.9.3, perl 5.9.2, perl 5.9.1, perl 5.9.0, perl 5.8.9, perl 5.8.8, perl 5.8.3, perl 5.8.1, perl 5.8.0, perl 5.7.3, perl 5.7.2, perl 5.7.1, perl 5.7.0, perl 5.6.1, perl 5.6.0, perl 5.005_03, perl 5.005, perl 5.004_05, perl 5.004, perl 5.003_07 (or maybe earlier), and Backported version unknown
- BUGS
- AUTHORS
- COPYRIGHT
- SEE ALSO
Devel::Peek โ A data debugging tool for the XS programmer ๐
- SYNOPSIS
- DESCRIPTION
- Runtime debugging
- Memory footprint debugging
- EXAMPLES
- A simple scalar string
- A simple scalar number
- A simple scalar with an extra reference
- A reference to a simple scalar
- A reference to an array
- A reference to a hash
- Dumping a large array or hash
- A reference to an SV which holds a C pointer
- A reference to a subroutine
- EXPORTS
- BUGS
- AUTHOR
- SEE ALSO
Devel::SelfStubber โ generate stubs for a SelfLoading module ๐ง
- SYNOPSIS
- DESCRIPTION
Digest โ Modules that calculate message digests ๐
- SYNOPSIS
- DESCRIPTION
- binary, hex, base64
- OO INTERFACE
these are the moves, bestie, memorise them:
$ctx = Digest->XXX($arg,...)
$ctx = Digest->new(XXX => $arg,...)
$ctx = Digest::XXX->new($arg,...)
$other_ctx = $ctx->clone
$ctx->reset
$ctx->add( $data )
$ctx->add( $chunk1, $chunk2, ... )
$ctx->addfile( $io_handle )
$ctx->add_bits( $data, $nbits )
$ctx->add_bits( $bitstring )
$ctx->digest
$ctx->hexdigest
$ctx->b64digest
$ctx->base64_padded_digest
- Digest speed
- SEE ALSO
- AUTHOR
Digest::MD5 โ Perl interface to the MD5 Algorithm ๐
- SYNOPSIS
- DESCRIPTION
- FUNCTIONS
md5($data,...),md5_hex($data,...),md5_base64($data,...)
- METHODS
$md5 = Digest::MD5->new,$md5->reset,$md5->clone,$md5->add($data,...),$md5->addfile($io_handle),$md5->add_bits($data, $nbits),$md5->add_bits($bitstring),$md5->digest,$md5->hexdigest,$md5->b64digest,@ctx = $md5->context,$md5->context(@ctx)
- EXAMPLES
- SEE ALSO
- COPYRIGHT
- AUTHORS
Digest::SHA โ Perl extension for SHA-1/224/256/384/512 ๐
- SYNOPSIS
- SYNOPSIS (HMAC-SHA)
- ABSTRACT
- DESCRIPTION
- UNICODE AND SIDE EFFECTS
- NIST STATEMENT ON SHA-1
- PADDING OF BASE64 DIGESTS
- EXPORT
- EXPORTABLE FUNCTIONS
okay this next list is long long but every single one matters, no cutting:
sha1($data, ...),sha224($data, ...),sha256($data, ...),sha384($data, ...),sha512($data, ...),sha512224($data, ...),sha512256($data, ...)sha1_hex($data, ...),sha224_hex($data, ...),sha256_hex($data, ...),sha384_hex($data, ...),sha512_hex($data, ...),sha512224_hex($data, ...),sha512256_hex($data, ...)sha1_base64($data, ...),sha224_base64($data, ...),sha256_base64($data, ...),sha384_base64($data, ...),sha512_base64($data, ...),sha512224_base64($data, ...),sha512256_base64($data, ...)new($alg),reset($alg),hashsize,algorithm,clone,add($data, ...),add_bits($data, $nbits),add_bits($bits),addfile(*FILE),addfile($filename [, $mode]),getstate,putstate($str),dump($filename),load($filename),digest,hexdigest,b64digesthmac_sha1($data, $key),hmac_sha224($data, $key),hmac_sha256($data, $key),hmac_sha384($data, $key),hmac_sha512($data, $key),hmac_sha512224($data, $key),hmac_sha512256($data, $key)hmac_sha1_hex($data, $key),hmac_sha224_hex($data, $key),hmac_sha256_hex($data, $key),hmac_sha384_hex($data, $key),hmac_sha512_hex($data, $key),hmac_sha512224_hex($data, $key),hmac_sha512256_hex($data, $key)hmac_sha1_base64($data, $key),hmac_sha224_base64($data, $key),hmac_sha256_base64($data, $key),hmac_sha384_base64($data, $key),hmac_sha512_base64($data, $key),hmac_sha512224_base64($data, $key),hmac_sha512256_base64($data, $key)- SEE ALSO
- AUTHOR
- ACKNOWLEDGMENTS
- COPYRIGHT AND LICENSE
Digest::base โ Digest base class ๐
- SYNOPSIS
- DESCRIPTION
- SEE ALSO
Digest::file โ Calculate digests of files ๐
- SYNOPSIS
- DESCRIPTION
digest_file( $file, $algorithm, [$arg,...] ),digest_file_hex( $file, $algorithm, [$arg,...] ),digest_file_base64( $file, $algorithm, [$arg,...] )
- SEE ALSO
DirHandle โ (obsolete) supply object methods for directory handles ๐
bestie. it says obsolete right there in the title. just so we're clear. ๐
- SYNOPSIS
- DESCRIPTION
Dumpvalue โ provides screen dump of Perl data. ๐ฅ๏ธ
- SYNOPSIS
- DESCRIPTION
- Creation
"arrayDepth","hashDepth","compactDump","veryCompact","globPrint","dumpDBFiles","dumpPackages","dumpReused","tick","quoteHighBit","printUndef","usageOnly",unctrl,subdump,bareStringify,quoteHighBit,stopDbSignal
- Methods
dumpValue,dumpValues,stringify,dumpvars,set_quote,set_unctrl,compactDump,veryCompact,set,get
- Creation
DynaLoader โ Dynamically load C libraries into Perl code โก
- SYNOPSIS
- DESCRIPTION
@dl_library_path,@dl_resolve_using,@dl_require_symbols,@dl_librefs,@dl_modules,@dl_shared_objects,dl_error(),$dl_debug,$dl_dlext,dl_findfile(),dl_expandspec(),dl_load_file(),dl_unload_file(),dl_load_flags(),dl_find_symbol(),dl_find_symbol_anywhere(),dl_undef_symbols(),dl_install_xsub(),bootstrap()
- AUTHOR
Encode โ character encodings in Perl ๐๐
- SYNOPSIS
- Table of Contents
Encode::Alias- Alias definitions to encodings,Encode::Encoding- Encode Implementation Base Class,Encode::Supported- List of Supported Encodings,Encode::CN- Simplified Chinese Encodings,Encode::JP- Japanese Encodings,Encode::KR- Korean Encodings,Encode::TW- Traditional Chinese Encodings
- Table of Contents
- DESCRIPTION
- TERMINOLOGY
- THE PERL ENCODING API
- Basic methods
- Listing available encodings
- Defining Aliases
- Finding IANA Character Set Registry names
- Encoding via PerlIO
- Handling Malformed Data
- List of CHECK values
- perlqq mode (CHECK = Encode::FB_PERLQQ), HTML charref mode (CHECK = Encode::FB_HTMLCREF), XML charref mode (CHECK = Encode::FB_XMLCREF)
- coderef for CHECK
- 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
- SEE ALSO
- MAINTAINER
- COPYRIGHT
Encode::Alias โ alias definitions to encodings ๐ฆ
- SYNOPSIS
- DESCRIPTION
- As a simple string, As a qr// compiled regular expression, e.g.:, As a code reference, e.g.:
- Alias overloading
- SEE ALSO
Encode::Byte โ Single Byte Encodings ๐ค
- SYNOPSIS
- ABSTRACT
- DESCRIPTION
- SEE ALSO
Encode::CJKConstants -- Internally used by Encode::??::ISO_2022_* ๐ธ
Encode::CN โ China-based Chinese Encodings ๐จ๐ณ
- SYNOPSIS
- DESCRIPTION
- NOTES
- BUGS
- SEE ALSO
Encode::CN::HZ -- internally used by Encode::CN โจ
Encode::Config -- internally used by Encode ๐
Encode::EBCDIC โ EBCDIC Encodings ๐พ
- SYNOPSIS
- ABSTRACT
- DESCRIPTION
- SEE ALSO
Encode::Encoder -- Object Oriented Encoder ๐
- SYNOPSIS
- ABSTRACT
- Description
- Predefined Methods
$e = Encode::Encoder->new([$data, $encoding]),encoder(),$e->data([$data]),$e->encoding([$encoding]),$e->bytes([$encoding])
- Predefined Methods
- Example: base64 transcoder โ a full worked example, lowkey a tutorial, we love to see it โจ
- Operator Overloading โ yes bestie, Encode does the fancy operator thing too ๐
- SEE ALSO โ the cross-refs, the receipts, the "go read these next" energy ๐
Encode::Encoding - Encode Implementation Base Class
- SYNOPSIS โ the lil sneak peek, always first, always demure
- DESCRIPTION โ the whole plot, buckle up
- Methods you should implement โ your homework, no skipping ๐ค
->encode($string [,$check]),->decode($octets [,$check]),->cat_decode($destination, $octets, $offset, $terminator [,$check])
- Other methods defined in Encode::Encodings โ the freebies you inherit, so generous ๐ซถ
->name,->mime_name,->renew,->renewed,->perlio_ok(),->needs_lines()
- Example: Encode::ROT13 โ baby's first encoding, it's giving beginner-friendly ๐
- Methods you should implement โ your homework, no skipping ๐ค
- Why the heck Encode API is different? โ literally the question everyone asks, and yes the section title really is that dramatic ๐ญ
- Compiled Encodings
- SEE ALSO
- Scheme 1, Scheme 2, Other Schemes
Encode::GSM0338 -- ETSI GSM 03.38 Encoding
- SYNOPSIS
- DESCRIPTION
- Septets โ the septet saga continues, iconic in its own niche way ๐ฑ
- BUGS โ transparency section, we respect it ๐
- SEE ALSO
Encode::Guess -- Guesses encoding from data
- SYNOPSIS
- ABSTRACT
- DESCRIPTION
Encode::Guess->set_suspects,Encode::Guess->add_suspects,Encode::decode("Guess" ...),Encode::Guess->guess($data),guess_encoding($data, [, list of suspects])โ the whole suspect lineup, very detective-coded ๐
- CAVEATS โ read this part bestie, fr fr
- TO DO
- SEE ALSO
Encode::JP - Japanese Encodings
- SYNOPSIS
- ABSTRACT
- DESCRIPTION
- Note on ISO-2022-JP(-1)? โ a note, with a question mark, very mysterious, very "iykyk" ๐
- BUGS
- SEE ALSO
Encode::JP::H2Z -- internally used by Encode::JP::2022_JP*
no subsections, just vibes, it's a backstage module ๐
Encode::JP::JIS7 -- internally used by Encode::JP
also strictly behind-the-scenes, the crew nobody claps for but we appreciate them ๐ซถ
Encode::KR - Korean Encodings
- SYNOPSIS
- DESCRIPTION
- BUGS
- SEE ALSO
Encode::KR::2022_KR -- internally used by Encode::KR
again, internal-only, the hidden helper energy โจ
Encode::MIME::Header -- MIME encoding for an unstructured email header
- SYNOPSIS
- ABSTRACT
- DESCRIPTION
- BUGS
- AUTHORS โ plural, it took a village ๐๏ธ
- SEE ALSO
Encode::MIME::Name, Encode::MIME::NAME -- internally used by Encode
- SEE ALSO
Encode::PerlIO -- a detailed document on Encode and PerlIO
- Overview
- How does it work? โ the question we're all asking, and yes there's a whole section for it ๐
- Line Buffering
- How can I tell whether my encoding fully supports PerlIO ? โ a whole subsection with a question mark, so real
- SEE ALSO
Encode::Supported -- Encodings supported by Encode
- DESCRIPTION
- Encoding Names
- Supported Encodings
- Built-in Encodings
- Encode::Unicode -- other Unicode encodings
- Encode::Byte -- Extended ASCII
- ISO-8859 and corresponding vendor mappings, KOI8 - De Facto Standard for the Cyrillic world
- gsm0338 - Hentai Latin 1
- gsm0338 support before 2.19 โ the pre-2.19 lore, for the historians ๐ซก
- CJK: Chinese, Japanese, Korean (Multibyte)
- Encode::CN -- Continental China, Encode::JP -- Japan, Encode::KR -- Korea, Encode::TW -- Taiwan, Encode::HanExtra -- More Chinese via CPAN, Encode::JIS2K -- JIS X 0213 encodings via CPAN โ the whole CJK squad plus the CPAN extras, slay ๐
- Miscellaneous encodings
- Encode::EBCDIC, Encode::Symbol, Encode::MIME::Header, Encode::Guess
- Unsupported encodings โ the "we don't do this here" list, tragic but honest ๐
- Encoding vs. Charset -- terminology โ the terminology talk, essential for the discourse ๐ฌ
- Encoding Classification (by Anton Tagunov and Dan Kogai)
- Microsoft-related naming mess โ a whole subsection dedicated to the naming chaos, and honestly, fair ๐ญ
- KS_C_5601-1987, GB2312, Big5, Shift_JIS
- Microsoft-related naming mess โ a whole subsection dedicated to the naming chaos, and honestly, fair ๐ญ
- Glossary
- character repertoire, coded character set (CCS), character encoding scheme (CES), charset (in MIME context), EUC, ISO-2022, UCS, UCS-2, Unicode, UTF, UTF-16 โ the vocab list, study up bestie ๐
- See Also
- References
- ECMA, ECMA-035 (eq "ISO-2022"), IANA, Assigned Charset Names by IANA, ISO, RFC, UC, Unicode Glossary
- Other Notable Sites
- czyborra.com, CJK.inf, Jungshik Shin's Hangul FAQ, debian.org: "Introduction to i18n"
- Offline sources
- "CJKV Information Processing" by Ken Lunde โ yes, an actual physical book, vintage ๐
Encode::Symbol - Symbol Encodings
- SYNOPSIS
- ABSTRACT
- DESCRIPTION
- SEE ALSO
Encode::TW - Taiwan-based Chinese Encodings
- SYNOPSIS
- DESCRIPTION
- NOTES
- BUGS
- SEE ALSO
Encode::Unicode -- Various Unicode Transformation Formats
- SYNOPSIS
- ABSTRACT
<http://www.unicode.org/glossary/> says:, Quick Referenceโ a whole key off the Unicode glossary plus a Quick Reference, obsessed ๐
- Size, Endianness, and BOM โ the big three, the holy trinity of Unicode drama ๐
- by size
- by endianness
- BOM as integer when fetched in network byte order โ very specific, very niche, very iconic
- Surrogate Pairs
- Error Checking
- SEE ALSO
Encode::Unicode::UTF7 -- UTF-7 encoding
- SYNOPSIS
- ABSTRACT
- In Practice โ theory is cute but let's see it IRL โจ
- SEE ALSO
English - use nice English (or awk) names for ugly punctuation variables
- SYNOPSIS
- DESCRIPTION
- PERFORMANCE
Env - perl module that imports environment variables as scalars or arrays
- SYNOPSIS
- DESCRIPTION
- LIMITATIONS โ the fine print, read it bestie
- AUTHOR
Errno - System errno constants
- SYNOPSIS
- DESCRIPTION
- CAVEATS
- AUTHOR
- COPYRIGHT
Exporter - Implements default import method for modules
- SYNOPSIS
- DESCRIPTION
- How to Export
- Selecting What to Export
- How to Import
- "use YourModule;", "use YourModule ();", "use YourModule qw(...);" โ the three flavors of import, pick your fighter ๐ฅ
- Advanced Features
- Specialised Import Lists
- Exporting Without Using Exporter's import Method
- Exporting Without Inheriting from Exporter
- Module Version Checking
- Managing Unknown Symbols
- Tag Handling Utility Functions
- Generating Combined Tags
- "AUTOLOAD"ed Constants โ yes the quotes around AUTOLOAD are part of it, so โจspookyโจ
- Good Practices
- Declaring @EXPORT_OK and Friends โ "and Friends" is doing so much heavy lifting and I love it ๐
- Playing Safe
- What Not to Export
- SEE ALSO
- LICENSE
Exporter::Heavy - Exporter guts
- SYNOPSIS
- DESCRIPTION
ExtUtils::CBuilder - Compile and link C code for Perl modules
- SYNOPSIS
- DESCRIPTION
- METHODS
new, have_compiler, have_cplusplus, compile, "object_file", "include_dirs", "extra_compiler_flags", "C++", link, lib_file, module_name, extra_linker_flags, link_executable, exe_file, object_file, lib_file, exe_file, prelink, need_prelink, extra_link_args_after_prelinkโ yesobject_file,lib_file, andexe_fileeach show up twice, that's not a typo, that's the list ๐คท
- TO DO
- HISTORY
- SUPPORT
- AUTHOR
- COPYRIGHT
- SEE ALSO
ExtUtils::CBuilder::Platform::Windows - Builder class for Windows platforms
- DESCRIPTION
- AUTHOR
- SEE ALSO
ExtUtils::Command - utilities to replace common UNIX commands in Makefiles etc.
- SYNOPSIS
- DESCRIPTION
- FUNCTIONS
- cat
- eqtime
- rm_rf
- rm_f
- touch
- mv
- cp
- chmod
- mkpath
- test_f
- test_d
- dos2unix
- SEE ALSO
- AUTHOR
ExtUtils::Command::MM - Commands for the MM's to use in Makefiles
- SYNOPSIS
- DESCRIPTION
- test_harness
- pod2man
- warn_if_old_packlist
- perllocal_install
- uninstall
- test_s
- cp_nonempty
ExtUtils::Constant - generate XS code to import C header constants
- SYNOPSIS
- DESCRIPTION
- USAGE
- IV, UV, NV, PV, PVN, SV, YES, NO, UNDEF โ the type roster, memorize it bestie ๐
- FUNCTIONS
- constant_types
- XS_constant PACKAGE, TYPES, XS_SUBNAME, C_SUBNAME
- autoload PACKAGE, VERSION, AUTOLOADER
- WriteMakefileSnippet
- WriteConstants ATTRIBUTE => VALUE [, ...], NAME, DEFAULT_TYPE, BREAKOUT_AT, NAMES, PROXYSUBS, C_FH, C_FILE, XS_FH, XS_FILE, XS_SUBNAME, C_SUBNAME
- AUTHOR
ExtUtils::Constant::Base - base class for ExtUtils::Constant objects
- SYNOPSIS
- DESCRIPTION
- USAGE
- header
- memEQ_clause args_hashref
- dump_names arg_hashref, ITEM..
- assign arg_hashref, VALUE..
- return_clause arg_hashref, ITEM
- switch_clause arg_hashref, NAMELEN, ITEMHASH, ITEM..
- params WHAT
- dogfood arg_hashref, ITEM.. โ yes there's literally a method called
dogfood, eating its own cooking, king behavior ๐ - normalise_items args, default_type, seen_types, seen_items, ITEM..
- C_constant arg_hashref, ITEM.., name, type, value, macro, default, pre, post, def_pre, def_post, utf8, weight
- BUGS
- AUTHOR
ExtUtils::Constant::Utils - helper functions for ExtUtils::Constant
- SYNOPSIS
- DESCRIPTION
- USAGE
- C_stringify NAME
- perl_stringify NAME
- AUTHOR
ExtUtils::Constant::XS - generate C code for XS modules' constants.
- SYNOPSIS
- DESCRIPTION
- BUGS
- AUTHOR
ExtUtils::Embed - Utilities for embedding Perl in C/C++ applications
- SYNOPSIS
- DESCRIPTION
- @EXPORT
- FUNCTIONS
- xsinit(), Examples, ldopts(), Examples, perl_inc(), ccflags(), ccdlflags(), ccopts(), xsi_header(), xsi_protos(@modules), xsi_body(@modules) โ yes
Examplesappears twice in there, once afterxsinit()and once afterldopts(), iconic duplication โจ
- xsinit(), Examples, ldopts(), Examples, perl_inc(), ccflags(), ccdlflags(), ccopts(), xsi_header(), xsi_protos(@modules), xsi_body(@modules) โ yes
- EXAMPLES
- SEE ALSO
- AUTHOR
ExtUtils::Install - install files from here to there
- SYNOPSIS
- VERSION
- DESCRIPTION
_chmod($$;$)_warnonce(@)_choke(@)
_move_file_at_boot( $file, $target, $moan )โ yes those spaces around$moanare in the original, we preserve everything here ๐_unlink_or_rename( $file, $tryhard, $installing )- Functions
_get_install_skip
_have_write_access_can_write_dir($dir)_mkpath($dir,$show,$mode,$verbose,$dry_run)_copy($from,$to,$verbose,$dry_run)_chdir($from)- install
_do_cleanupinstall_rooted_file( $file )install_rooted_dir( $dir )forceunlink( $file, $tryhard )directory_not_empty( $dir )- install_default
- uninstall
inc_uninstall($filepath,$libdir,$verbose,$dry_run,$ignore,$results)run_filter($cmd,$src,$dest)- pm_to_blib
_autosplit_invokant- ENVIRONMENT
- PERL_INSTALL_ROOT, EU_INSTALL_IGNORE_SKIP, EU_INSTALL_SITE_SKIPFILE, EU_INSTALL_ALWAYS_COPY โ the env var squad, the secret knobs ๐ง
- AUTHOR
- LICENSE
ExtUtils::Installed - Inventory management of installed modules
- SYNOPSIS
- DESCRIPTION
- USAGE
- METHODS
new(),modules(),files(),directories(),directory_tree(),validate(),packlist(),version()
- EXAMPLE
- AUTHOR
ExtUtils::Liblist - determine libraries to use and how to use them
- SYNOPSIS
- DESCRIPTION
- For static extensions, For dynamic extensions at build/link time, For dynamic extensions at load time โ three whole scenarios, pick your timeline โณ
- EXTRALIBS
- LDLOADLIBS and LD_RUN_PATH
- BSLOADLIBS
- PORTABILITY
- VMS implementation
- Win32 implementation
- SEE ALSO
ExtUtils::MM - OS adjusted ExtUtils::MakeMaker subclass
- SYNOPSIS
- DESCRIPTION
ExtUtils::MM::Utils - ExtUtils::MM methods without dependency on ExtUtils::MakeMaker
- SYNOPSIS
- DESCRIPTION
- METHODS
- maybe_command
- BUGS
- SEE ALSO
ExtUtils::MM_AIX - AIX specific subclass of ExtUtils::MM_Unix
- SYNOPSIS
- DESCRIPTION
- Overridden methods
- AUTHOR
- SEE ALSO
ExtUtils::MM_Any - Platform-agnostic MM methods
- SYNOPSIS
- DESCRIPTION
- METHODS
- Cross-platform helper methods
- Targets
- Init methods
- Tools
- File::Spec wrappers
- Misc
- AUTHOR
ExtUtils::MM_BeOS - methods to override UN*X behaviour in ExtUtils::MakeMaker
- SYNOPSIS
- DESCRIPTION
- os_flavor
- init_linker
ExtUtils::MM_Cygwin - methods to override UN*X behaviour in ExtUtils::MakeMaker
- SYNOPSIS
- DESCRIPTION
- os_flavor
- cflags
- replace_manpage_separator
- init_linker
maybe_commanddynamic_libinstall
๐ ExtUtils::MM_DOS - DOS specific subclass of ExtUtils::MM_Unix
SYNOPSIS
DESCRIPTION
Overridden methods
os_flavor
replace_manpage_separator
xs_static_lib_is_xs
AUTHOR
SEE ALSO
๐ฆ ExtUtils::MM_Darwin - special behaviors for OS X
SYNOPSIS
DESCRIPTION
Overridden Methods
๐ ExtUtils::MM_MacOS - once produced Makefiles for MacOS Classic
SYNOPSIS
DESCRIPTION
๐ธ ExtUtils::MM_NW5 - methods to override UN*X behaviour in ExtUtils::MakeMaker
SYNOPSIS
DESCRIPTION
os_flavor
init_platform, platform_constants
static_lib_pure_cmd
xs_static_lib_is_xs
dynamic_lib
โจ ExtUtils::MM_OS2 - methods to override UN*X behaviour in ExtUtils::MakeMaker
SYNOPSIS
DESCRIPTION
METHODS
init_dist
init_linker
os_flavor
xs_static_lib_is_xs
๐ ExtUtils::MM_OS390 - OS390 specific subclass of ExtUtils::MM_Unix
SYNOPSIS
DESCRIPTION
Overriden methods
xs_make_dynamic_lib
AUTHOR
SEE ALSO
๐ฆ ExtUtils::MM_QNX - QNX specific subclass of ExtUtils::MM_Unix
SYNOPSIS
DESCRIPTION
Overridden methods
AUTHOR
SEE ALSO
๐ ExtUtils::MM_UWIN - U/WIN specific subclass of ExtUtils::MM_Unix
SYNOPSIS
DESCRIPTION
Overridden methods
os_flavor
replace_manpage_separator
AUTHOR
SEE ALSO
๐ ExtUtils::MM_Unix - methods used by ExtUtils::MakeMaker
SYNOPSIS
DESCRIPTION
METHODS
Methods
os_flavorc_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
SYNOPSIS
DESCRIPTION
Methods always loaded
wraplist
Methods
guess_name (override)
find_perl (override)
_fixin_replace_shebang (override)
maybe_command (override)
pasthru (override)
pm_to_blib (override)
perl_script (override)
replace_manpage_separator
init_DEST
init_DIRFILESEP
init_main (override)
init_tools (override)
init_platform (override)
platform_constants
init_VERSION (override)
constants (override)
special_targets
cflags (override)
const_cccmd (override)
tools_other (override)
init_dist (override)
c_o (override)
xs_c (override)
xs_o (override)
_xsbuild_replace_macro (override)
_xsbuild_value (override)
dlsyms (override)
xs_obj_opt
dynamic_lib (override)
xs_make_static_lib (override)
static_lib_pure_cmd (override)
xs_static_lib_is_xs
extra_clean_files
zipfile_target, tarfile_target, shdist_target
install (override)
perldepend (override)
makeaperl (override)
maketext_filter (override)
prefixify (override)
cd
oneliner
echo
quote_literal
escape_dollarsigns
escape_all_dollarsigns
escape_newlines
max_exec_len
init_linker
catdir (override), catfile (override)
eliminate_macros
fixpath
os_flavor
is_make_type (override)
make_type (override)
AUTHOR
๐ฆ ExtUtils::MM_VOS - VOS specific subclass of ExtUtils::MM_Unix
SYNOPSIS
DESCRIPTION
Overridden methods
AUTHOR
SEE ALSO
๐ฅ ExtUtils::MM_Win32 - methods to override UN*X behaviour in ExtUtils::MakeMaker
SYNOPSIS
DESCRIPTION
Overridden methods
dlsyms
xs_dlsyms_ext
replace_manpage_separator
maybe_command
init_DIRFILESEP
init_tools
init_others
init_platform, platform_constants
specify_shell
constants
dep_constants
special_targets
static_lib_pure_cmd
dynamic_lib
extra_clean_files
init_linker
perl_script
quote_dep
xs_obj_opt
pasthru
arch_check (override)
oneliner
cd
max_exec_len
os_flavor
dbgoutflag
cflags
make_type
๐ ExtUtils::MM_Win95 - method to customize MakeMaker for Win9X
SYNOPSIS
DESCRIPTION
Overridden methods
max_exec_len
os_flavor
AUTHOR
๐ซถ ExtUtils::MY - ExtUtils::MakeMaker subclass for customization
SYNOPSIS
DESCRIPTION
๐ ExtUtils::MakeMaker - Create a module Makefile
SYNOPSIS
DESCRIPTION
How To Write A Makefile.PL
Default Makefile Behaviour
make test
make testdb
make install
INSTALL_BASE
PREFIX and LIB attribute
AFS users
Static Linking of a new Perl Binary
Determination of Perl Library and Installation Locations
Which architecture dependent directory?
Using Attributes and Parameters
ABSTRACTABSTRACT_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_REQUIRESTYPEMAPSUSE_MM_LD_RUN_PATHVENDORPREFIXVERBINSTVERSIONVERSION_FROMVERSION_SYMXSXSBUILDXSMULTIXSOPTXSPROTOARGXS_VERSION
Additional lowercase attributes
cleandependdistdynamic_liblinkextmacropostamblerealcleantesttool_autosplit
Overriding MakeMaker Methods
The End Of Cargo Cult Programming
"MAN3PODS => ' '"
Hintsfile support
Distribution Support
make distcheckmake skipcheckmake distcleanmake verycleanmake manifestmake distdirmake disttestmake tardistmake distmake uutardistmake shdistmake zipdistmake ci
Module Meta-Data (META and MYMETA)
Disabling an extension
Other Handy Functions
promptos_unsupported
Supported versions of Perl
ENVIRONMENT
PERL_MM_OPTPERL_MM_USE_DEFAULTPERL_CORE
SEE ALSO
AUTHORS
LICENSE
๐ ExtUtils::MakeMaker::Config - Wrapper around Config.pm
SYNOPSIS
DESCRIPTION
๐ธ ExtUtils::MakeMaker::FAQ - Frequently Asked Questions About MakeMaker
DESCRIPTION
Module Installation
- How do I install a module into my home directory?
- How do I get MakeMaker and Module::Build to install to the same place?
- How do I keep from installing man pages?
- How do I use a module without installing it?
- How can I organize tests into subdirectories and have them run?
- PREFIX vs INSTALL_BASE from Module::Build::Cookbook
- Generating
*.pmfiles with substitutions eg of$VERSION
Common errors and problems
- "No rule to make target
/usr/lib/perl5/CORE/config.h', needed byMakefile'"
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
bestie, this section is literally just diagrams of how MakeMaker's objects relate to each other ๐
- MakeMaker object hierarchy (simplified)
- MakeMaker object hierarchy (real)
- The MM_* hierarchy
PATCHING
wanna send a fix? here are the official ways to slide into the maintainers' DMs ๐ซถ
- make a pull request on the MakeMaker github repository, raise a issue on the MakeMaker github repository, file an RT ticket, email makemaker@perl.org
AUTHOR
SEE ALSO
ExtUtils::MakeMaker::Locale โ bundled Encode::Locale ๐
SYNOPSIS
DESCRIPTION
decode_argv( ),decode_argv( Encode::FB_CROAK ),env( $uni_key ),env( $uni_key => $uni_value ),reinit( ),reinit( $encoding ),$ENCODING_LOCALE,$ENCODING_LOCALE_FS,$ENCODING_CONSOLE_IN,$ENCODING_CONSOLE_OUT
NOTES
- Windows
- Mac OS X
- POSIX (Linux and other Unixes)
SEE ALSO
AUTHOR
ExtUtils::MakeMaker::Tutorial โ Writing a module with MakeMaker โจ
SYNOPSIS
DESCRIPTION
- The Mantra
- The Layout
Makefile.PL,MANIFEST,lib/,t/,Changes,README,INSTALL,MANIFEST.SKIP,bin/
SEE ALSO
ExtUtils::Manifest โ Utilities to write and check a MANIFEST file ๐ฆ
VERSION
SYNOPSIS
DESCRIPTION
FUNCTIONS
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
DLBASE,DL_FUNCS,DL_VARS,FILE,FUNCLIST,IMPORTS,NAME
AUTHOR
REVISION
ExtUtils::PL2Bat โ Batch file creation to run perl scripts on Windows ๐
VERSION
OVERVIEW
FUNCTIONS
pl2bat(%opts)"in","out","ntargs","otherargs","stripsuffix","usewarnings","update"
ACKNOWLEDGEMENTS
AUTHOR
COPYRIGHT AND LICENSE
mkfh()
__find_relocations
okay so heads up:mkfh()and__find_relocationsshow up after COPYRIGHT AND LICENSE in the original ordering, which is kinda unhinged but we're keeping it exactly as-is, no cap ๐
ExtUtils::Packlist โ manage .packlist files ๐
SYNOPSIS
DESCRIPTION
USAGE
FUNCTIONS
new(),read(),write(),validate(),packlist_file()
EXAMPLE
AUTHOR
ExtUtils::ParseXS โ converts Perl XS code into C code ๐
SYNOPSIS
DESCRIPTION
EXPORT
METHODS
$pxs->new(),$pxs->process_file(), filename, C++, hiertype, except, typemap, prototypes, versioncheck, linenumbers, optimize, inout, argtypes, s, die_on_error,$pxs->report_error_count()
AUTHOR
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 ExtUtils::ParseXS AST ๐
SYNOPSIS
DESCRIPTION
ExtUtils::ParseXS::Utilities โ Subroutines used with ExtUtils::ParseXS ๐ซถ
SYNOPSIS
SUBROUTINES
standard_typemap_locations()- Purpose, Arguments, Return Value
trim_whitespace()- Purpose, Argument, Return Value
C_string()- Purpose, Arguments, Return Value
valid_proto_string()- Purpose, Arguments, Return Value
process_typemaps()- Purpose, Arguments, Return Value
"map_type($self, $type, $varname)"standard_XS_defs()- Purpose, Arguments, Return Value
analyze_preprocessor_statement()- Purpose, Arguments
set_cond()- Purpose, Arguments, Return Value
current_line_number()- Purpose, Arguments, Return Value
- Error handling methods
"$self->Warn(@messages)","$self->blurt(@messages)","$self->death(@messages)","$self->WarnHint(@messages, $hints)"
check_conditional_preprocessor_statements()- Purpose, Arguments, Return Value
escape_file_for_line_directive()- Purpose, Arguments, Return Value
"report_typemap_failure"- Purpose, Arguments, Return Value
ExtUtils::Typemaps โ Read/Write/Modify Perl/XS typemap files ๐ธ
SYNOPSIS
DESCRIPTION
METHODS
- new
- file
- add_typemap
- add_inputmap
- add_outputmap
- add_string
- remove_typemap
- remove_inputmap
- remove_outputmap
- get_typemap
- get_inputmap
- get_outputmap
- write
- as_string
- as_embedded_typemap
- merge
- is_empty
- list_mapped_ctypes
_get_typemap_hash_get_inputmap_hash_get_outputmap_hash_get_prototype_hash- clone
- tidy_type
CAVEATS
SEE ALSO
AUTHOR
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
- new
- code
- xstype
- cleaned_code
SEE ALSO
AUTHOR
COPYRIGHT & LICENSE
ExtUtils::Typemaps::OutputMap โ Entry in the OUTPUT section of a typemap ๐ฆ
SYNOPSIS
DESCRIPTION
METHODS
- new
- code
- xstype
- cleaned_code
- targetable_legacy
- targetable
SEE ALSO
AUTHOR
COPYRIGHT & LICENSE
ExtUtils::Typemaps::Type โ Entry in the TYPEMAP section of a typemap ๐
SYNOPSIS
DESCRIPTION
METHODS
- new
- proto
- xstype
- ctype
- tidy_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, %s is not a Perl subroutine, %s is neither a builtin, nor a Perl subroutine, Cannot make the non-overridable %s fatal, Internal error: %s
BUGS
AUTHOR
LICENSE
SEE ALSO
Fcntl โ various flag constants and helper functions from C's fcntl.h ๐ฅ
SYNOPSIS
DESCRIPTION
EXPORTED SYMBOLS
Default exports and export tags
":DEFAULT",":flock",":mode",":seek",":Fcompat"
Symbols for use with "fcntl"
"F_ALLOCSP","F_ALLOCSP64","F_DUP2FD","F_DUPFD","F_FREESP","F_FREESP64","F_FSYNC","F_FSYNC64","F_GETFD","FD_CLOEXEC","F_GETFL","F_GETLEASE","F_RDLCK","F_WRLCK","F_UNLCK","F_GETLK","F_GETLK64","F_GETOWN","F_GETPIPE_SZ","F_GETSIG","F_NOTIFY","DN_ACCESS","DN_ATTRIB","DN_CREATE","DN_DELETE","DN_MODIFY","DN_MULTISHOT","DN_RENAME","F_SETFD","F_SETFL","F_SETLEASE","F_RDLCK","F_WRLCK","F_UNLCK","F_SETLK","F_SETLK64","F_SETLKW","F_SETLKW64","F_SETOWN","F_SETPIPE_SZ","F_SETSIG","F_SHARE","F_UNSHARE","F_COMPAT","F_EXLCK","F_NODNY","F_POSIX","F_RDACC","F_RDDNY","F_RWACC","F_RWDNY","F_SHLCK","F_WRACC","F_WRDNY"
Symbols for use with "flock"
"LOCK_EX","LOCK_MAND","LOCK_NB","LOCK_READ","LOCK_RW","LOCK_SH","LOCK_UN","LOCK_WRITE"
Symbols for use with "sysopen"
"O_ACCMODE","O_ALIAS","O_ALT_IO","O_APPEND","O_ASYNC","O_BINARY","O_CREAT","O_DEFER","O_DIRECT","O_DIRECTORY","O_DSYNC","O_EVTONLY","O_EXCL","O_EXLOCK","O_IGNORE_CTTY","O_LARGEFILE","O_NDELAY","O_NOATIME","O_NOCTTY","O_NOFOLLOW","O_NOINHERIT","O_NOLINK","O_NONBLOCK","O_NOSIGPIPE","O_NOTRANS","O_RANDOM","O_RAW","O_RDONLY","O_RDWR","O_RSRC","O_RSYNC","O_SEQUENTIAL","O_SHLOCK","O_SYMLINK","O_SYNC","O_TEMPORARY","O_TEXT","O_TMPFILE","O_TRUNC","O_TTY_INIT","O_WRONLY","FAPPEND","FASYNC","FCREAT","FDEFER","FDSYNC","FEXCL","FLARGEFILE","FNDELAY","FNONBLOCK","FRSYNC","FSYNC","FTRUNC"
Symbols for use with "seek" and "sysseek"
"SEEK_CUR","SEEK_END","SEEK_SET"
Symbols for use with "stat" and "chmod"
"S_ENFMT","S_IEXEC","S_IFBLK","S_IFCHR","S_IFDIR","S_IFIFO","S_IFLNK","S_IFMT","_S_IFMT","S_IFREG","S_IFSOCK","S_IFWHT","S_IMODE","S_IREAD","S_IRGRP","S_IROTH","S_IRUSR","S_IRWXG","S_IRWXO","S_IRWXU","S_ISBLK","S_ISCHR","S_ISDIR","S_ISFIFO","S_ISGID","S_ISLNK","S_ISREG","S_ISSOCK","S_ISTXT","S_ISUID","S_ISVTX","S_ISWHT","S_IWGRP","S_IWOTH","S_IWRITE","S_IWUSR","S_IXGRP","S_IXOTH","S_IXUSR"
SEE ALSO
APPENDIX A
File::Basename โ Parse file paths into directory, filename and suffix. ๐ธ
SYNOPSIS
DESCRIPTION
"fileparse"
"basename"
"dirname"
"fileparse_set_fstype"
SEE ALSO
File::Compare โ Compare files or filehandles ๐
SYNOPSIS
DESCRIPTION
RETURN
AUTHOR
File::Copy โ Copy files or filehandles โจ
SYNOPSIS
DESCRIPTION
copy,move,syscopy,rmscopy($from,$to[,$date_flag])
RETURN
NOTES
AUTHOR
File::DosGlob โ DOS like globbing and then some ๐ฆ
SYNOPSIS
DESCRIPTION
EXPORTS (by request only)
BUGS
AUTHOR
HISTORY
SEE ALSO
File::Fetch โ A generic file fetching mechanism ๐
SYNOPSIS
DESCRIPTION
ACCESSORS
$ff->uri,$ff->scheme,$ff->host,$ff->vol,$ff->share,$ff->path,$ff->file,$ff->file_default$ff->output_file
METHODS
$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
$File::Fetch::FROM_EMAIL$File::Fetch::USER_AGENT$File::Fetch::FTP_PASSIVE$File::Fetch::TIMEOUT$File::Fetch::WARN$File::Fetch::DEBUG$File::Fetch::BLACKLIST$File::Fetch::METHOD_FAIL
MAPPING
FREQUENTLY ASKED QUESTIONS
- So how do I use a proxy with File::Fetch?
- I used 'lynx' to fetch a file, but its contents is all wrong!
- Files I'm trying to fetch have reserved characters or non-ASCII characters in them. What do I do?
TODO
- Implement
$PREFER_BIN
BUG REPORTS
AUTHOR
COPYRIGHT
File::Find โ Traverse a directory tree. ๐ณ
SYNOPSIS
DESCRIPTION
- find, finddepth
๐ %options ๐
okay bestie so this is the whole lil menu of option strings this module vibes with:
"wanted", "bydepth", "preprocess", "postprocess", "follow", "follow_fast", "follow_skip", "dangling_symlinks", "no_chdir", "untaint", "untaint_pattern", "untaint_skip"
that's the list, no more no less, don't make up extras ๐
๐ฆ The wanted function ๐ฆ
so when the wanted function fires: $File::Find::dir is the current directory name, $_ is the current filename within that directory, and $File::Find::name is the complete pathname to the file. three variables, three jobs, iconic behavior tbh.
๐ WARNINGS ๐
there's a whole WARNINGS section on this page โ go read it, it's not just decor ๐ซถ
๐ญ BUGS AND CAVEATS ๐ญ
the caveats list hits:
$dont_use_nlink- Symlinks
๐ธ HISTORY ๐ธ
yep, there's a history section. the lore is real.
โจ SEE ALSO โจ
and a SEE ALSO, because everything connects โจ
๐ File::Glob โ Perl extension for BSD glob routine ๐
SYNOPSIS
DESCRIPTION
- META CHARACTERS
- EXPORTS
- POSIX FLAGS
these are the flags, all of them, in order:
"GLOB_ERR", "GLOB_LIMIT", "GLOB_MARK", "GLOB_NOCASE", "GLOB_NOCHECK", "GLOB_NOSORT", "GLOB_BRACE", "GLOB_NOMAGIC", "GLOB_QUOTE", "GLOB_TILDE", "GLOB_CSH", "GLOB_ALPHASORT"
DIAGNOSTICS
"GLOB_NOSPACE", "GLOB_ABEND" โ that's the whole diagnostics roster, no cap.
NOTES
SEE ALSO
AUTHOR
๐ File::GlobMapper โ Extend File Glob to Allow Input and Output Files ๐
SYNOPSIS
DESCRIPTION
- Behind The Scenes
- Limitations
- Input File Glob
the input-side magic chars, exactly these:
~, ~user, ., *, ?, \, [], {}, ()
- Output File Glob
output side is just:
"*", #1
- Returned Data
EXAMPLES
- A Rename script
- A few example globmaps
SEE ALSO
AUTHOR
COPYRIGHT AND LICENSE
๐ฆ File::Path โ Create or remove directory trees ๐ฆ
VERSION
SYNOPSIS
DESCRIPTION
okay so the signatures this thing hands you, all of them, stay hydrated:
make_path( $dir1, $dir2, .... )make_path( $dir1, $dir2, ...., \%opts )mode => $numchmod => $numverbose => $boolerror => \$errowner => $owneruser => $owneruid => $ownergroup => $groupmkpath( $dir )mkpath( $dir, $verbose, $mode )mkpath( [$dir1, $dir2,...], $verbose, $mode )mkpath( $dir1, $dir2,..., \%opt )remove_tree( $dir1, $dir2, .... )remove_tree( $dir1, $dir2, ...., \%opts )verbose => $boolsafe => $boolkeep_root => $boolresult => \$reserror => \$errrmtree( $dir )rmtree( $dir, $verbose, $safe )rmtree( [$dir1, $dir2,...], $verbose, $safe )rmtree( $dir1, $dir2,..., \%opt )
ERROR HANDLING
there's a NOTE: tucked in here. read it, it matters, fr fr.
NOTES
and the notes drop two CVE links, both here in full:
DIAGNOSTICS
the whole diagnostics lineup, every single message, verbatim because they're literal strings and I'm not messing with them:
mkdir [path]: [errmsg] (SEVERE)No root path(s) 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
(the "); in that one is exactly how it appears, I'm not touching it, that's the original's business ๐)
SEE ALSO
BUGS AND LIMITATIONS
- MULTITHREADED APPLICATIONS
- NFS Mount Points
- REPORTING BUGS
ACKNOWLEDGEMENTS
AUTHORS
CONTRIBUTORS
the contributor roll call, everyone's handles exactly as written:
bulkdd@cpan.org- Charlie Gonzalez
itcharlie@cpan.org - Craig A. Berry
craigberry@mac.com - James E Keenan
jkeenan@cpan.org - John Lightsey
john@perlsec.org - Nigel Horne
njh@bandsman.co.uk - Richard Elberger
riche@cpan.org - Ryan Yee
ryee@cpan.org - Skye Shaw
shaw@cpan.org - Tom Lutz
tommylutz@gmail.com - Will Sheppard
willsheppard@github
COPYRIGHT
LICENSE
๐ธ File::Spec โ portably perform operations on file names ๐ธ
SYNOPSIS
DESCRIPTION
METHODS
the method lineup, in order:
canonpath, catdir, catfile, curdir, devnull, rootdir, tmpdir, updir, no_upwards, case_tolerant, file_name_is_absolute, path, join, splitpath, splitdir, catpath(), abs2rel, rel2abs()
SEE ALSO
AUTHOR
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
the whole roster:
canonpathcatdir()catfilecurdirdevnullrootdirtmpdirupdirfile_name_is_absolutepathsplitpathsplitdircatpathabs2relrel2abs
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
every single one:
canonpath()catdir()catfilecurdirdevnullrootdirtmpdirupdirno_upwardscase_tolerantfile_name_is_absolutepathjoinsplitpathsplitdircatpath()abs2relrel2abs()
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
devnulltmpdircase_tolerantfile_name_is_absolutecatfilecanonpathsplitpathsplitdircatpath- 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
the component options, all eight:
"code", "code_no_comments", "executable", "executable_no_comments", "quotelike", "string", "regex", "all"
- Filtering only the code parts of source code
- Using Filter::Simple with an explicit
"import"subroutine - Using Filter::Simple and Exporter together
- How it works
AUTHOR
CONTACT
COPYRIGHT AND LICENSE
๐ Filter::Util::Call โ Perl Source Filter Utility Module ๐
SYNOPSIS
DESCRIPTION
use Filter::Util::Callimport()filter_add()filter()and anonymous sub
inside that one you've got: $_, $status, filter_read and filter_read_exact, filter_del, real_import, unimport()
LIMITATIONS
__DATA__is ignored- Max. codesize limited to 32-bit
EXAMPLES
- Example 1: A simple filter.
- Example 2: Using the context
- Example 3: Using the context within the filter
- Example 4: Using filter_del
Filter::Simple
AUTHOR
DATE
LICENSE
๐ FindBin โ Locate directory of original Perl script ๐
SYNOPSIS
DESCRIPTION
EXPORTABLE VARIABLES
$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
and its three guess-quality levels, literally numbered like this:
1โ exact guess2โ approximate3โ rough guess
ERROR HANDLING
$GDBM_File::gdbm_errnogdbm_check_syserr
DATABASE METHODS
the full method list, don't skip a single one:
closeerrnosyserrnostrerrorclear_errorneeds_recoveryreorganizesynccountflagsdbnamecache_sizeblock_sizesync_modecentfreecoalescemmapmmapsizerecover
and recover takes all of these:
err => sub { ... }backup => \$strmax_failed_keys => $nmax_failed_buckets => $nmax_failures => $nstat => \%hashrecovered_keysrecovered_bucketsfailed_keysfailed_buckets
convertdump
with binary => 1, mode => MODE, overwrite => 1
load
and load takes replace => 1, restore_mode => 0 | 1, restore_owner => 0 | 1, strict_errors => 1
๐ฅ CRASH TOLERANCE ๐ฅ
bestie this is the "what happens when the power goes out" corner of the docs, and honestly? obsessed with the drama of it.
crash_tolerance_statusfailure_atomiclatest_snapshotGDBM_SNAPSHOT_BAD,GDBM_SNAPSHOT_ERR,GDBM_SNAPSHOT_SAME,GDBM_SNAPSHOT_SUSPICIOUS
๐ AVAILABILITY ๐
๐ SECURITY AND PORTABILITY ๐
๐ SEE ALSO ๐
๐ Getopt::Long โ Extended processing of command line options ๐
the actual main character of command line parsing, no notes.
SYNOPSISDESCRIPTIONCommand Line Options, an IntroductionGetting Started with Getopt::LongSimple optionsA little bit less simple optionsMixing command line option with other argumentsOptions with valuesOptions with multiple valuesOptions with hash valuesUser-defined subroutines to handle optionsOptions with multiple namesCase and abbreviationsSummary of Option Specifications!,+,s,i,o,f,: type [ desttype ],: number [ desttype ],: + [ desttype ]
Advanced PossibilitiesObject oriented interfaceCallback objectname,given
Thread SafetyDocumentation and help textsParsing options from an arbitrary arrayParsing options from an arbitrary stringStoring options values in a hashBundlingThe lonesome dashArgument callback
Configuring Getopt::Longdefault,posix_default,auto_abbrev,getopt_compat,gnu_compat,gnu_getopt,require_order,permute,bundling (default: disabled),bundling_override (default: disabled),ignore_case (default: enabled),ignore_case_always (default: disabled),auto_version (default:disabled),auto_help (default:disabled),pass_through (default: disabled),prefix,prefix_pattern,long_prefix_pattern,debug (default: disabled)
Exportable MethodsVersionMessage,"-message","-msg","-exitval","-output",HelpMessage
Return values and ErrorsLegacyDefault destinationsAlternative option startersConfiguration variables
Tips and TechniquesPushing multiple values in a hash option
TroubleshootingGetOptions 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?
AUTHORCOPYRIGHT AND DISCLAIMER
๐ Getopt::Long::Parser โ Getopt::Long object-oriented interface ๐
same energy, but make it a whole entire object. slay.
SYNOPSISDESCRIPTIONCONSTRUCTORconfig
METHODSconfigure
getoptionsfromarraygetoptionsSEE ALSOAUTHORCOPYRIGHT AND DISCLAIMER
๐ฆ Getopt::Std โ Process single-character switches with switch clustering ๐ฆ
one letter. one vibe. clustered together like besties holding hands.
SYNOPSISDESCRIPTION"--help" and "--version"
๐ HTTP::Tiny โ A small, simple, correct HTTP/1.1 client ๐
small, simple, correct โ the three things every HTTP client wishes it was. tiny but it ate, fr fr.
VERSIONSYNOPSISDESCRIPTIONMETHODSnewget|head|put|post|patch|deletepost_formmirrorrequestwww_form_urlencodecan_sslconnected
TLS/SSL SUPPORTPROXY SUPPORTLIMITATIONSSEE ALSOSUPPORTBugs / Feature RequestsSource Code
AUTHORSCONTRIBUTORSCOPYRIGHT AND LICENSE
๐ Hash::Util โ A selection of general-utility hash subroutines ๐
lock it up bestie ๐ the hashes are getting restricted.
SYNOPSISDESCRIPTIONRestricted hasheslock_keys,unlock_keys
lock_keys_pluslock_value,unlock_valuelock_hash,unlock_hashlock_hash_recurse,unlock_hash_recursehashref_locked,hash_lockedhashref_unlocked,hash_unlockedlegal_keys,hidden_keys,all_keys,hash_seed,hash_value,bucket_info,bucket_stats,bucket_arraybucket_stats_formattedhv_store,hash_traversal_mask,bucket_ratio,used_buckets,num_bucketsOperating on references to hasheslock_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
CAVEATSBUGSAUTHORSEE ALSO
๐ง Hash::Util::FieldHash โ Support for Inside-Out Classes ๐ง
inside-out classes?? it's giving reverse card energy and honestly it's iconic.
SYNOPSISFUNCTIONSid,id_2obj,register,idhash,idhashes,fieldhash,fieldhashes
DESCRIPTIONThe Inside-out TechniqueProblems of Inside-outSolutionsMore ProblemsThe Generic ObjectHow to use Field HashesGarbage-Collected Hashes
EXAMPLESinit(),first(),last(),name(),"Name_hash","Name_id","Name_idhash","Name_id_reg","Name_idhash_reg","Name_fieldhash"Example 1Example 2
GUTSThe "PERL_MAGIC_uvar" interface for hashesWeakrefs call uvar magicHow field hashes workInternal function Hash::Util::FieldHash::_fieldhash
AUTHORCOPYRIGHT AND LICENSE
๐ I18N::Collate โ compare 8-bit scalar data according to the current locale ๐
locale-aware comparing, so your sorting isn't doing a cultural faux pas.
SYNOPSISDESCRIPTION
๐ I18N::LangTags โ functions for dealing with RFC3066-style language tags ๐
language tags!! like en-US, like the little flags in your browser settings. we love a standards nerd moment.
SYNOPSISDESCRIPTION- 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 functionimplicate_supers_strictly( ...languages... ) ABOUT LOWERCASINGABOUT UNICODE PLAINTEXT LANGUAGE TAGSSEE ALSOCOPYRIGHTAUTHOR
๐ต๏ธ I18N::LangTags::Detect โ detect the user's language preferences ๐ต๏ธ
sneaky little detective work on what language the user actually wants ๐
SYNOPSISDESCRIPTIONFUNCTIONSENVIRONMENTSEE ALSOCOPYRIGHTAUTHOR
I18N::LangTags::List -- tags and names for human languages ๐
okay bestie, this is the subsection list for the I18N::LangTags::List module, and the headings it's made of go a little something like this ๐
SYNOPSIS โจ
(it's in there, bestie. this is the map, not the territory ๐ )
DESCRIPTION ๐ธ
also in there. we're just doing the headings in this bit ๐ซถ
ABOUT LANGUAGE TAGS ๐ฆ
yep, that's a heading too. stay with me ๐
LIST OF LANGUAGES ๐
okay THIS is the moment, this is the main character section, and it is long. every single tag, every single name, all of it. some of them are wrapped in [square brackets] and I am not touching a single character of those, no cap. here's the whole thing, exactly as it lives in the page:
{ab} : Abkhazian, {ace} : Achinese, {ach} : Acoli, {ada} : Adangme,
{ady} : Adyghe, {aa} : Afar, {afh} : Afrihili, {af} : Afrikaans,
[{afa} : Afro-Asiatic (Other)], {ak} : Akan, {akk} : Akkadian, {sq}
: Albanian, {ale} : Aleut, [{alg} : Algonquian languages], [{tut} :
Altaic (Other)], {am} : Amharic, {i-ami} : Ami, [{apa} : Apache
languages], {ar} : Arabic, {arc} : Aramaic, {arp} : Arapaho, {arn} :
Araucanian, {arw} : Arawak, {hy} : Armenian, {an} : Aragonese,
[{art} : Artificial (Other)], {ast} : Asturian, {as} : Assamese,
[{ath} : Athapascan languages], [{aus} : Australian languages],
[{map} : Austronesian (Other)], {av} : Avaric, {ae} : Avestan, {awa}
: Awadhi, {ay} : Aymara, {az} : Azerbaijani, {ban} : Balinese,
[{bat} : Baltic (Other)], {bal} : Baluchi, {bm} : Bambara, [{bai} :
Bamileke languages], {bad} : Banda, [{bnt} : Bantu (Other)], {bas} :
Basa, {ba} : Bashkir, {eu} : Basque, {btk} : Batak (Indonesia),
{bej} : Beja, {be} : Belarusian, {bem} : Bemba, {bn} : Bengali,
[{ber} : Berber (Other)], {bho} : Bhojpuri, {bh} : Bihari, {bik} :
Bikol, {bin} : Bini, {bi} : Bislama, {bs} : Bosnian, {bra} : Braj,
{br} : Breton, {bug} : Buginese, {bg} : Bulgarian, {i-bnn} : Bunun,
{bua} : Buriat, {my} : Burmese, {cad} : Caddo, {car} : Carib, {ca} :
Catalan, [{cau} : Caucasian (Other)], {ceb} : Cebuano, [{cel} :
Celtic (Other)], [{cai} : Central American Indian (Other)], {chg} :
Chagatai, [{cmc} : Chamic languages], {ch} : Chamorro, {ce} :
Chechen, {chr} : Cherokee, {chy} : Cheyenne, {chb} : Chibcha, {ny} :
Chichewa, {zh} : Chinese, {chn} : Chinook Jargon, {chp} : Chipewyan,
{cho} : Choctaw, {cu} : Church Slavic, {chk} : Chuukese, {cv} :
Chuvash, {cop} : Coptic, {kw} : Cornish, {co} : Corsican, {cr} :
Cree, {mus} : Creek, [{cpe} : English-based Creoles and pidgins
(Other)], [{cpf} : French-based Creoles and pidgins (Other)], [{cpp}
: Portuguese-based Creoles and pidgins (Other)], [{crp} : Creoles
and pidgins (Other)], {hr} : Croatian, [{cus} : Cushitic (Other)],
{cs} : Czech, {dak} : Dakota, {da} : Danish, {dar} : Dargwa, {day} :
Dayak, {i-default} : Default (Fallthru) Language, {del} : Delaware,
{din} : Dinka, {dv} : Divehi, {doi} : Dogri, {dgr} : Dogrib, [{dra}
: Dravidian (Other)], {dua} : Duala, {nl} : Dutch, {dum} : Middle
Dutch (ca.1050-1350), {dyu} : Dyula, {dz} : Dzongkha, {efi} : Efik,
{egy} : Ancient Egyptian, {eka} : Ekajuk, {elx} : Elamite, {en} :
English, {enm} : Old English (1100-1500), {ang} : Old English
(ca.450-1100), {i-enochian} : Enochian (Artificial), {myv} : Erzya,
{eo} : Esperanto, {et} : Estonian, {ee} : Ewe, {ewo} : Ewondo, {fan}
: Fang, {fat} : Fanti, {fo} : Faroese, {fj} : Fijian, {fi} :
Finnish, [{fiu} : Finno-Ugrian (Other)], {fon} : Fon, {fr} : French,
{frm} : Middle French (ca.1400-1600), {fro} : Old French
(842-ca.1400), {fy} : Frisian, {fur} : Friulian, {ff} : Fulah, {gaa}
: Ga, {gd} : Scots Gaelic, {gl} : Gallegan, {lg} : Ganda, {gay} :
Gayo, {gba} : Gbaya, {gez} : Geez, {ka} : Georgian, {de} : German,
{gmh} : Middle High German (ca.1050-1500), {goh} : Old High German
(ca.750-1050), [{gem} : Germanic (Other)], {gil} : Gilbertese, {gon}
: Gondi, {gor} : Gorontalo, {got} : Gothic, {grb} : Grebo, {grc} :
Ancient Greek, {el} : Modern Greek, {gn} : Guarani, {gu} : Gujarati,
{gwi} : Gwich'in, {hai} : Haida, {ht} : Haitian, {ha} : Hausa, {haw}
: Hawaiian, {he} : Hebrew, {hz} : Herero, {hil} : Hiligaynon, {him}
: Himachali, {hi} : Hindi, {ho} : Hiri Motu, {hit} : Hittite, {hmn}
: Hmong, {hu} : Hungarian, {hup} : Hupa, {iba} : Iban, {is} :
Icelandic, {io} : Ido, {ig} : Igbo, {ijo} : Ijo, {ilo} : Iloko,
[{inc} : Indic (Other)], [{ine} : Indo-European (Other)], {id} :
Indonesian, {inh} : Ingush, {ia} : Interlingua (International
Auxiliary Language Association), {ie} : Interlingue, {iu} :
Inuktitut, {ik} : Inupiaq, [{ira} : Iranian (Other)], {ga} : Irish,
{mga} : Middle Irish (900-1200), {sga} : Old Irish (to 900), [{iro}
: Iroquoian languages], {it} : Italian, {ja} : Japanese, {jv} :
Javanese, {jrb} : Judeo-Arabic, {jpr} : Judeo-Persian, {kbd} :
Kabardian, {kab} : Kabyle, {kac} : Kachin, {kl} : Kalaallisut, {xal}
: Kalmyk, {kam} : Kamba, {kn} : Kannada, {kr} : Kanuri, {krc} :
Karachay-Balkar, {kaa} : Kara-Kalpak, {kar} : Karen, {ks} :
Kashmiri, {csb} : Kashubian, {kaw} : Kawi, {kk} : Kazakh, {kha} :
Khasi, {km} : Khmer, [{khi} : Khoisan (Other)], {kho} : Khotanese,
{ki} : Kikuyu, {kmb} : Kimbundu, {rw} : Kinyarwanda, {ky} : Kirghiz,
{i-klingon} : Klingon, {kv} : Komi, {kg} : Kongo, {kok} : Konkani,
{ko} : Korean, {kos} : Kosraean, {kpe} : Kpelle, {kro} : Kru, {kj} :
Kuanyama, {kum} : Kumyk, {ku} : Kurdish, {kru} : Kurukh, {kut} :
Kutenai, {lad} : Ladino, {lah} : Lahnda, {lam} : Lamba, {lo} : Lao,
{la} : Latin, {lv} : Latvian, {lb} : Letzeburgesch, {lez} :
Lezghian, {li} : Limburgish, {ln} : Lingala, {lt} : Lithuanian,
{nds} : Low German, {art-lojban} : Lojban (Artificial), {loz} :
Lozi, {lu} : Luba-Katanga, {lua} : Luba-Lulua, {lui} : Luiseno,
{lun} : Lunda, {luo} : Luo (Kenya and Tanzania), {lus} : Lushai,
{mk} : Macedonian, {mad} : Madurese, {mag} : Magahi, {mai} :
Maithili, {mak} : Makasar, {mg} : Malagasy, {ms} : Malay, {ml} :
Malayalam, {mt} : Maltese, {mnc} : Manchu, {mdr} : Mandar, {man} :
Mandingo, {mni} : Manipuri, [{mno} : Manobo languages], {gv} : Manx,
{mi} : Maori, {mr} : Marathi, {chm} : Mari, {mh} : Marshall, {mwr} :
Marwari, {mas} : Masai, [{myn} : Mayan languages], {men} : Mende,
{mic} : Micmac, {min} : Minangkabau, {i-mingo} : Mingo, [{mis} :
Miscellaneous languages], {moh} : Mohawk, {mdf} : Moksha, {mo} :
Moldavian, [{mkh} : Mon-Khmer (Other)], {lol} : Mongo, {mn} :
Mongolian, {mos} : Mossi, [{mul} : Multiple languages], [{mun} :
Munda languages], {nah} : Nahuatl, {nap} : Neapolitan, {na} : Nauru,
{nv} : Navajo, {nd} : North Ndebele, {nr} : South Ndebele, {ng} :
Ndonga, {ne} : Nepali, {new} : Newari, {nia} : Nias, [{nic} :
Niger-Kordofanian (Other)], [{ssa} : Nilo-Saharan (Other)], {niu} :
Niuean, {nog} : Nogai, {non} : Old Norse, [{nai} : North American
Indian], {no} : Norwegian, {nb} : Norwegian Bokmal, {nn} : Norwegian
Nynorsk, [{nub} : Nubian languages], {nym} : Nyamwezi, {nyn} :
Nyankole, {nyo} : Nyoro, {nzi} : Nzima, {oc} : Occitan (post 1500),
{oj} : Ojibwa, {or} : Oriya, {om} : Oromo, {osa} : Osage, {os} :
Ossetian; Ossetic, [{oto} : Otomian languages], {pal} : Pahlavi,
{i-pwn} : Paiwan, {pau} : Palauan, {pi} : Pali, {pam} : Pampanga,
{pag} : Pangasinan, {pa} : Panjabi, {pap} : Papiamento, [{paa} :
Papuan (Other)], {fa} : Persian, {peo} : Old Persian (ca.600-400
B.C.), [{phi} : Philippine (Other)], {phn} : Phoenician, {pon} :
Pohnpeian, {pl} : Polish, {pt} : Portuguese, [{pra} : Prakrit
languages], {pro} : Old Provencal (to 1500), {ps} : Pushto, {qu} :
Quechua, {rm} : Raeto-Romance, {raj} : Rajasthani, {rap} : Rapanui,
{rar} : Rarotongan, [{qaa - qtz} : Reserved for local use.], [{roa}
: Romance (Other)], {ro} : Romanian, {rom} : Romany, {rn} : Rundi,
{ru} : Russian, [{sal} : Salishan languages], {sam} : Samaritan
Aramaic, {se} : Northern Sami, {sma} : Southern Sami, {smn} : Inari
Sami, {smj} : Lule Sami, {sms} : Skolt Sami, [{smi} : Sami languages
(Other)], {sm} : Samoan, {sad} : Sandawe, {sg} : Sango, {sa} :
Sanskrit, {sat} : Santali, {sc} : Sardinian, {sas} : Sasak, {sco} :
Scots, {sel} : Selkup, [{sem} : Semitic (Other)], {sr} : Serbian,
{srr} : Serer, {shn} : Shan, {sn} : Shona, {sid} : Sidamo, {sgn-...}
: Sign Languages, {bla} : Siksika, {sd} : Sindhi, {si} : Sinhalese,
[{sit} : Sino-Tibetan (Other)], [{sio} : Siouan languages], {den} :
Slave (Athapascan), [{sla} : Slavic (Other)], {sk} : Slovak, {sl} :
Slovenian, {sog} : Sogdian, {so} : Somali, {son} : Songhai, {snk} :
Soninke, {wen} : Sorbian languages, {nso} : Northern Sotho, {st} :
Southern Sotho, [{sai} : South American Indian (Other)], {es} :
Spanish, {suk} : Sukuma, {sux} : Sumerian, {su} : Sundanese, {sus} :
Susu, {sw} : Swahili, {ss} : Swati, {sv} : Swedish, {syr} : Syriac,
{tl} : Tagalog, {ty} : Tahitian, [{tai} : Tai (Other)], {tg} :
Tajik, {tmh} : Tamashek, {ta} : Tamil, {i-tao} : Tao, {tt} : Tatar,
{i-tay} : Tayal, {te} : Telugu, {ter} : Tereno, {tet} : Tetum, {th}
: Thai, {bo} : Tibetan, {tig} : Tigre, {ti} : Tigrinya, {tem} :
Timne, {tiv} : Tiv, {tli} : Tlingit, {tpi} : Tok Pisin, {tkl} :
Tokelau, {tog} : Tonga (Nyasa), {to} : Tonga (Tonga Islands), {tsi}
: Tsimshian, {ts} : Tsonga, {i-tsu} : Tsou, {tn} : Tswana, {tum} :
Tumbuka, [{tup} : Tupi languages], {tr} : Turkish, {ota} : Ottoman
Turkish (1500-1928), {crh} : Crimean Turkish, {tk} : Turkmen, {tvl}
: Tuvalu, {tyv} : Tuvinian, {tw} : Twi, {udm} : Udmurt, {uga} :
Ugaritic, {ug} : Uighur, {uk} : Ukrainian, {umb} : Umbundu, {und} :
Undetermined, {ur} : Urdu, {uz} : Uzbek, {vai} : Vai, {ve} : Venda,
{vi} : Vietnamese, {vo} : Volapuk, {vot} : Votic, [{wak} : Wakashan
languages], {wa} : Walloon, {wal} : Walamo, {war} : Waray, {was} :
Washo, {cy} : Welsh, {wo} : Wolof, {x-...} : Unregistered
(Semi-Private Use), {xh} : Xhosa, {sah} : Yakut, {yao} : Yao, {yap}
: Yapese, {ii} : Sichuan Yi, {yi} : Yiddish, {yo} : Yoruba, [{ypk} :
Yupik languages], {znd} : Zande, [{zap} : Zapotec], {zen} : Zenaga,
{za} : Zhuang, {zu} : Zulu, {zun} : Zuni
likeโฆ that's a lot of languages and I respect every single one of them ๐๐ no skips, no shortcuts.
SEE ALSO ๐
also a heading. it's there, bestie ๐ธ
COPYRIGHT AND DISCLAIMER ๐
yep, that heading exists too ๐
AUTHOR ๐
and that one. we're still going, don't go anywhere โจ
I18N::Langinfo - query locale information
ngl bestie this one is just "hey system, spill the locale tea" โ๐
SYNOPSISDESCRIPTION- the whole lineup:
"-","+",".","_NL_ADDRESS_POSTAL_FMT","_NL_ADDRESS_COUNTRY_NAME","_NL_ADDRESS_COUNTRY_POST","_NL_ADDRESS_COUNTRY_AB2","_NL_ADDRESS_COUNTRY_AB3","_NL_ADDRESS_COUNTRY_CAR","_NL_ADDRESS_COUNTRY_NUM","_NL_ADDRESS_COUNTRY_ISBN","_NL_ADDRESS_LANG_NAME","_NL_ADDRESS_LANG_AB","_NL_ADDRESS_LANG_TERM","_NL_ADDRESS_LANG_LIB","_NL_IDENTIFICATION_TITLE","_NL_IDENTIFICATION_SOURCE","_NL_IDENTIFICATION_ADDRESS","_NL_IDENTIFICATION_CONTACT","_NL_IDENTIFICATION_EMAIL","_NL_IDENTIFICATION_TEL","_NL_IDENTIFICATION_FAX","_NL_IDENTIFICATION_LANGUAGE","_NL_IDENTIFICATION_TERRITORY","_NL_IDENTIFICATION_AUDIENCE","_NL_IDENTIFICATION_APPLICATION","_NL_IDENTIFICATION_ABBREVIATION","_NL_IDENTIFICATION_REVISION","_NL_IDENTIFICATION_DATE","_NL_IDENTIFICATION_CATEGORY","_NL_MEASUREMENT_MEASUREMENT","_NL_NAME_NAME_FMT","_NL_NAME_NAME_GEN","_NL_NAME_NAME_MR","_NL_NAME_NAME_MRS","_NL_NAME_NAME_MISS","_NL_NAME_NAME_MS","_NL_PAPER_HEIGHT","_NL_PAPER_WIDTH","_NL_TELEPHONE_TEL_INT_FMT","_NL_TELEPHONE_TEL_DOM_FMT","_NL_TELEPHONE_INT_SELECT","_NL_TELEPHONE_INT_PREFIX" - For systems without
nl_langinfo"ERA","CODESET","YESEXPR","YESSTR","NOEXPR","NOSTR","ALT_DIGITS","D_FMT","T_FMT","D_T_FMT","CRNCYSTR","ERA_D_FMT","ERA_T_FMT","ERA_D_T_FMT","T_FMT_AMPM", All_NL_fooitems
EXPORT
- the whole lineup:
BUGSSEE ALSOAUTHORCOPYRIGHT AND LICENSE
IO - load various IO modules
the lil convenience wrapper that pulls in a whole bunch of IO modules at once ๐
SYNOPSISDESCRIPTIONDEPRECATED
IO::Compress - read/write compressed data in multiple formats
one stop shop for squishing your data into multiple formats โจ
DESCRIPTIONAUTHORCOPYRIGHT
IO::Compress::Base - Base Class for IO::Compress modules
the mothership ๐ every IO::Compress module inherits the vibe from here
SYNOPSISDESCRIPTIONSUPPORTSEE ALSOAUTHORMODIFICATION HISTORYCOPYRIGHT AND LICENSE
IO::Compress::Bzip2 - Write bzip2 files/buffers
SYNOPSISDESCRIPTIONFunctional Interfacebzip2 $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
NotesOptional Parameters"AutoClose => 0|1","BinModeIn => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle
Oneshot Examples
OO InterfaceConstructor- 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
Methodsprintprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])
Importing:all
EXAMPLESApache::GZip RevisitedWorking with Net::FTP
SUPPORTSEE ALSOAUTHORMODIFICATION HISTORYCOPYRIGHT AND LICENSE
IO::Compress::Deflate - Write RFC 1950 files/buffers
SYNOPSISDESCRIPTIONFunctional Interfacedeflate $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
NotesOptional Parameters"AutoClose => 0|1","BinModeIn => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle
Oneshot Examples
OO InterfaceConstructor- 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
Methodsprintprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])deflateParams
Importing:all,:constants,:flush,:level,:strategy
EXAMPLESApache::GZip RevisitedWorking with Net::FTP
SUPPORTSEE ALSOAUTHORMODIFICATION HISTORYCOPYRIGHT AND LICENSE
IO::Compress::FAQ -- Frequently Asked Questions about IO::Compress
the gossip page of the IO::Compress world, fr fr ๐ฌ
DESCRIPTIONGENERALCompatibility with Unix compress/uncompress.Accessing .tar.Z filesHow do I recompress using a different compression?
ZIPWhat Compression Types do IO::Compress::Zip & IO::Uncompress::Unzip support?Store (method 0),Deflate (method 8),Bzip2 (method 12),Lzma (method 14)
Can I Read/Write Zip files larger the 4 Gig?Can I write more that 64K entries is a Zip files?Zip Resources
GZIPGzip ResourcesDealing with concatenated gzip filesReading bgzip files with IO::Uncompress::Gunzip
ZLIBZlib Resources
Bzip2Bzip2 ResourcesDealing with Concatenated bzip2 filesInteroperating with Pbzip2
HTTP & NETWORKApache::GZip RevisitedCompressed files and Net::FTP
MISCUsing "InputLength" to uncompress data embedded in a larger file/buffer.
SUPPORTSEE ALSOAUTHORMODIFICATION HISTORYCOPYRIGHT AND LICENSE
IO::Compress::Gzip - Write RFC 1952 files/buffers
SYNOPSISDESCRIPTIONFunctional Interfacegzip $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
NotesOptional Parameters"AutoClose => 0|1","BinModeIn => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle
Oneshot Examples
OO InterfaceConstructor- 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
Methodsprintprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])deflateParams
Importing:all,:constants,:flush,:level,:strategy
EXAMPLESApache::GZip RevisitedWorking with Net::FTP
SUPPORTSEE ALSOAUTHORMODIFICATION HISTORYCOPYRIGHT AND LICENSE
IO::Compress::RawDeflate - Write RFC 1951 files/buffers
SYNOPSISDESCRIPTIONFunctional Interfacerawdeflate $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
NotesOptional Parameters"AutoClose => 0|1","BinModeIn => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle
Oneshot Examples
OO InterfaceConstructor- 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
Methodsprintprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])deflateParams
Importing:all,:constants,:flush,:level,:strategy
EXAMPLESApache::GZip RevisitedWorking with Net::FTP
SUPPORTSEE ALSOAUTHORMODIFICATION HISTORYCOPYRIGHT AND LICENSE
IO::Compress::Zip - Write zip files/buffers
the zip one, and it has SO many options, buckle up bestie ๐ข
SYNOPSISDESCRIPTIONStore (0),Deflate (8),Bzip2 (12),Lzma (14),Zstandard (93),Xz (95)
Functional Interfacezip $input_filename_or_reference => $output_filename_or_reference [, OPTS]- A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, the full filename contained in
$input_filename_or_reference, the file protection attributes, the UID/GID for the file, the file timestamps, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
- A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, the full filename contained in
NotesOptional Parameters"AutoClose => 0|1","BinModeIn => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle
Oneshot Examples
OO InterfaceConstructor- 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
โจ Methods โจ
Bestie, here's the whole method roster โ no skips, no gatekeeping ๐
printprintfsyswritewriteflushtelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenewStream([OPTS])deflateParams
๐ Importing ๐
What you can pull in with your use line, fr fr:
:all:constants:flush:level:strategy:zip_method
๐ธ EXAMPLES ๐ธ
Apache::GZip RevisitedWorking with Net::FTP
๐ SUPPORT ๐
โจ SEE ALSO โจ
๐ AUTHOR ๐
๐ MODIFICATION HISTORY ๐
๐ COPYRIGHT AND LICENSE ๐
๐ IO::Dir ๐ โ hooks you up with object methods for directory handles
Like, it's literally giving directory-handle-as-an-object, and we're obsessed ๐ซถ
SYNOPSIS
DESCRIPTION
new ( [ DIRNAME ] ),open ( DIRNAME ),read (),seek ( POS ),tell (),rewind (),close (),tie %hash, 'IO::Dir', DIRNAME [, OPTIONS ]
SEE ALSO
AUTHOR
COPYRIGHT
๐ IO::File ๐ โ object methods for filehandles, coming right up
Filehandles but make them objects, periodt โจ
SYNOPSIS
DESCRIPTION
CONSTRUCTOR
new ( FILENAME [,MODE [,PERMS]] ),new_tmpfile
METHODS
open( FILENAME [,MODE [,PERMS]] ),open( FILENAME, IOLAYERS )
NOTE
SEE ALSO
HISTORY
โจ IO::Handle โจ โ gives you object methods for I/O handles
The iconic one, ngl ๐
SYNOPSIS
DESCRIPTION
CONSTRUCTOR
new (),new_from_fd ( FD, MODE )
METHODS
$io->fdopen ( FD, MODE ),$io->opened,$io->getline,$io->getlines,$io->ungetc ( ORD ),$io->write ( BUF, LEN [, OFFSET ] ),$io->error,$io->clearerr,$io->sync,$io->flush,$io->printflush ( ARGS ),$io->blocking ( [ BOOL ] ),binmode( [LAYER] ),$io->untaint
NOTE
SEE ALSO
BUGS
HISTORY
๐ IO::Pipe ๐ โ object methods for pipes, slay
Pipes but, like, with vibes ๐
SYNOPSIS
DESCRIPTION
CONSTRUCTOR
new ( [READER, WRITER] )
METHODS
reader ([ARGS]),writer ([ARGS]),handles ()
SEE ALSO
AUTHOR
COPYRIGHT
๐
IO::Poll ๐
โ an object interface to the system poll call
Yes bestie, poll but fancy ๐ฆ
SYNOPSIS
DESCRIPTION
METHODS
mask ( IO [, EVENT_MASK ] ),poll ( [ TIMEOUT ] ),events ( IO ),remove ( IO ),handles( [ EVENT_MASK ] )
SEE ALSO
AUTHOR
COPYRIGHT
๐ฆ IO::Seekable ๐ฆ โ seek-based methods for I/O objects, periodt
The way it just gives you the seeking ๐
SYNOPSIS
DESCRIPTION
$io->getpos,$io->setpos,$io->seek ( POS, WHENCE ),WHENCE=0 (SEEK_SET),WHENCE=1 (SEEK_CUR),WHENCE=2 (SEEK_END),$io->sysseek( POS, WHENCE ),$io->tell
SEE ALSO
HISTORY
๐ IO::Select ๐ โ an OO interface to the "select" system call
Main character energy, lowkey ๐ฅ
SYNOPSIS
DESCRIPTION
CONSTRUCTOR
new ( [ HANDLES ] )
METHODS
add ( HANDLES ),remove ( HANDLES ),exists ( HANDLE ),handles,can_read ( [ TIMEOUT ] ),can_write ( [ TIMEOUT ] ),has_exception ( [ TIMEOUT ] ),count (),bits(),select ( READ, WRITE, EXCEPTION [, TIMEOUT ] )
EXAMPLE
AUTHOR
COPYRIGHT
๐ฅ IO::Socket ๐ฅ โ object interface for socket communications
Sockets, but as objects, and it ate ๐
SYNOPSIS
DESCRIPTION
CONSTRUCTOR ARGUMENTS
- Blocking
- Domain
- Listen
- Timeout
- Type
CONSTRUCTORS
new
METHODS
acceptatmarkautoflushbindconnectedgetsockoptlistenpeernameprotocolrecvsendsetsockoptshutdownsockdomainsocketsocketpairsocknamesockoptsocktypetimeout
EXAMPLES
LIMITATIONS
SEE ALSO
AUTHOR
COPYRIGHT
๐ IO::Socket::INET ๐ โ object interface for AF_INET domain sockets
IPv4-coded, no cap ๐ธ
SYNOPSIS
DESCRIPTION
CONSTRUCTOR
new ( [ARGS] )
METHODS
sockaddr (),sockport (),sockhost (),peeraddr (),peerport (),peerhost ()
SEE ALSO
AUTHOR
COPYRIGHT
๐ IO::Socket::IP, "IO::Socket::IP" ๐ โ a family-neutral IP socket that supports both IPv4 and IPv6
It's giving "why pick one when you can have both" ๐
SYNOPSIS
DESCRIPTION
REPLACING "IO::Socket" DEFAULT BEHAVIOUR
CONSTRUCTORS
new
PeerHost => STRINGPeerService => STRINGPeerAddr => STRINGPeerPort => STRINGPeerAddrInfo => ARRAYLocalHost => STRINGLocalService => STRINGLocalAddr => STRINGLocalPort => STRINGLocalAddrInfo => ARRAYFamily => INTType => INTProto => STRINGorINTGetAddrInfoFlags => INTListen => INTReuseAddr => BOOLReusePort => BOOLBroadcast => BOOLSockopts => ARRAYV6Only => BOOLMultiHomedBlocking => BOOLTimeout => NUM
new (one arg)
METHODS
sockhost_service
sockhost
sockport
sockhostname
sockservice
sockaddr
peerhost_service
peerhost
peerport
peerhostname
peerservice
peeraddr
as_inet
NON-BLOCKING
"PeerHost" AND "LocalHost" PARSING
split_addr
join_addr
"IO::Socket::INET" INCOMPATIBILITIES
TODO
AUTHOR
๐ง IO::Socket::UNIX ๐ง โ object interface for AF_UNIX domain sockets
Unix domain sockets, and yes it's iconic ๐
SYNOPSIS
DESCRIPTION
CONSTRUCTOR
new ( [ARGS] )
METHODS
hostpath(),peerpath()
SEE ALSO
AUTHOR
COPYRIGHT
๐ IO::Uncompress::AnyInflate ๐ โ uncompresses zlib-based (zip, gzip) files/buffers
The "I don't wanna pick a format" girlie ๐ซถ
SYNOPSIS
DESCRIPTION
Functional Interface
anyinflate $input_filename_or_reference => $output_filename_or_reference [, OPTS]
- A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
Notes
Optional Parameters
"AutoClose => 0|1","BinModeOut => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle,"MultiStream => 0|1","TrailingData => $scalar"
OneShot Examples
OO Interface
Constructor
- A filename, A filehandle, A scalar reference
Constructor Options
"AutoClose => 0|1","MultiStream => 0|1","Prime => $string","Transparent => 0|1","BlockSize => $num",InputLength => $size,"Append => 0|1","Strict => 0|1","RawInflate => 0|1","ParseExtra => 0|1"If the gzip FEXTRA header field is present and this option is set, it will force the module to check that it conforms to the sub-field structure as defined in RFC 1952
Methods
readreadgetlinegetcungetcinflateSyncgetHeaderInfotelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
Importing
:all
EXAMPLES
Working with Net::FTP
SUPPORT
SEE ALSO
AUTHOR
MODIFICATION HISTORY
COPYRIGHT AND LICENSE
๐ IO::Uncompress::AnyUncompress ๐ โ uncompresses gzip, zip, bzip2, zstd, xz, lzma, lzip, lzf or lzop files/buffers
She does NOT discriminate, she unzips them all ๐
SYNOPSIS
DESCRIPTION
- RFC 1950, RFC 1951 (optionally), gzip (RFC 1952), zip, zstd (Zstandard), bzip2, lzop, lzf, lzma, lzip, xz
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 ๐ โ the base class for IO::Uncompress modules
The momager of the whole uncompress family, she runs the operation ๐
SYNOPSIS
DESCRIPTION
SUPPORT
SEE ALSO
AUTHOR
MODIFICATION HISTORY
COPYRIGHT AND LICENSE
๐ฆ IO::Uncompress::Bunzip2 ๐ฆ โ reads bzip2 files/buffers
bzip2 only, and she's thriving ๐ธ
SYNOPSIS
DESCRIPTION
Functional Interface
bunzip2 $input_filename_or_reference => $output_filename_or_reference [, OPTS]
- A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
Notes
Optional Parameters
"AutoClose => 0|1","BinModeOut => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle,"MultiStream => 0|1","TrailingData => $scalar"
OneShot Examples
OO Interface
Constructor
- A filename, A filehandle, A scalar reference
Constructor Options
"AutoClose => 0|1","MultiStream => 0|1","Prime => $string","Transparent => 0|1","BlockSize => $num",InputLength => $size,"Append => 0|1","Strict => 0|1","Small => 0|1"
Methods
readreadgetlinegetcungetcgetHeaderInfotelleofseekbinmodeopenedautoflushinput_line_numberfilenoclosenextStreamtrailingData
Importing
:all
EXAMPLES
Working with Net::FTP
SUPPORT
SEE ALSO
AUTHOR
MODIFICATION HISTORY
COPYRIGHT AND LICENSE
๐ธ IO::Uncompress::Gunzip ๐ธ โ reads RFC 1952 files/buffers
gzip girlie, so iconic โจ
SYNOPSIS
DESCRIPTION
Functional Interface
gunzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]
- A filename, A filehandle, A scalar reference, An array reference, An Input FileGlob string, A filename, A filehandle, A scalar reference, An Array Reference, An Output FileGlob
Notes
Optional Parameters
"AutoClose => 0|1","BinModeOut => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle,"MultiStream => 0|1","TrailingData => $scalar"
OneShot Examples
OO Interface
Constructor
- A filename, A filehandle, A scalar reference
...still going, bestie, we're deep in the TOC now, hold my hand ๐
Constructor Options
"AutoClose => 0|1","MultiStream => 0|1","Prime => $string","Transparent => 0|1","BlockSize => $num",InputLength => $size,"Append => 0|1","Strict => 0|1","ParseExtra => 0|1"
ok so about that ParseExtra one specifically: if the gzip FEXTRA header field is actually there and you've got this option turned on, it makes the module double-check that the thing matches the sub-field structure laid out in RFC 1952. no vibes-based parsing here, it's doing the reading ๐
Methods
readread(yes bestie, it's listed twice, that's just how the page rolls ๐)getlinegetcungetcinflateSyncgetHeaderInfoName,Comment
telleofseekbinmodeopenedautoflushinput_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]- A filename
- A filehandle
- A scalar reference
- An array reference
- An Input FileGlob string
- A filename
- A filehandle
- A scalar reference
- An Array Reference
- An Output FileGlob
Notes
Optional Parameters
"AutoClose => 0|1","BinModeOut => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle,"MultiStream => 0|1","TrailingData => $scalar"
OneShot Examples
OO Interface
Constructor
- A filename
- A filehandle
- A scalar reference
Constructor Options
"AutoClose => 0|1","MultiStream => 0|1","Prime => $string","Transparent => 0|1","BlockSize => $num",InputLength => $size,"Append => 0|1","Strict => 0|1"
Methods
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]- A filename
- A filehandle
- A scalar reference
- An array reference
- An Input FileGlob string
- A filename
- A filehandle
- A scalar reference
- An Array Reference
- An Output FileGlob
Notes
Optional Parameters
"AutoClose => 0|1","BinModeOut => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle,"MultiStream => 0|1","TrailingData => $scalar"
OneShot Examples
OO Interface
Constructor
- A filename
- A filehandle
- A scalar reference
Constructor Options
"AutoClose => 0|1","MultiStream => 0|1","Prime => $string","Transparent => 0|1","BlockSize => $num",InputLength => $size,"Append => 0|1","Strict => 0|1"
Methods
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
Store (0),Deflate (8),Bzip2 (12),Lzma (14),Xz (95),Zstandard (93)
look at all these compression methods living their best lives, it's giving โจvarietyโจ
Functional Interface
unzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]- A filename
- A filehandle
- A scalar reference
- An array reference
- An Input FileGlob string
- A filename
- A filehandle
- A scalar reference
- An Array Reference
- An Output FileGlob
Notes
Optional Parameters
"AutoClose => 0|1","BinModeOut => 0|1","Append => 0|1", A Buffer, A Filename, A Filehandle,"MultiStream => 0|1","TrailingData => $scalar"
OneShot Examples
OO Interface
Constructor
- A filename
- A filehandle
- A scalar reference
Constructor Options
"Name => "membername"","Efs => 0| 1","AutoClose => 0|1","MultiStream => 0|1","Prime => $string","Transparent => 0|1","BlockSize => $num","InputLength => $size","Append => 0|1","Strict => 0|1"
Methods
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
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] );command,verbose,buffer,timeout,success,error message,full_buffer,out_buffer,error_buffer
$hashref = run_forked( COMMAND, { child_stdin => SCALAR, timeout => DIGIT, stdout_handler => CODEREF, stderr_handler => CODEREF} );"timeout","child_stdin","stdout_handler","stderr_handler","wait_loop_callback","discard_output","terminate_on_parent_sudden_death","exit_code","timeout","stdout","stderr","merged","err_msg"
$q = QUOTE
HOW IT WORKS
Global Variables
$IPC::Cmd::VERBOSE$IPC::Cmd::USE_IPC_RUN$IPC::Cmd::USE_IPC_OPEN3$IPC::Cmd::WARN$IPC::Cmd::INSTANCES$IPC::Cmd::ALLOW_NULL_ARGS
Caveats
- Whitespace and IPC::Open3 / system()
- Whitespace and IPC::Run
- IO Redirect
- Interleaving STDOUT/STDERR
See Also
ACKNOWLEDGEMENTS
BUG REPORTS
AUTHOR
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::Open2IPC::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- 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 โจ
the little extras that only JSON::PP gets to have, no cap:
allow_singlequoteallow_barekeyallow_bignumlooseescape_slashindent_lengthsort_by
๐ฅ INCREMENTAL PARSING ๐ฅ
incr_parseincr_textincr_skipincr_reset
๐ MAPPING ๐
๐ JSON -> PERL
object,array,string,number,true,false,null, shell-style comments ("# text"), tagged values ("(tag)value")
๐ PERL -> JSON
hash references,array references,other references,JSON::PP::true,JSON::PP::false,JSON::PP::null, blessed objects, simple scalars
๐ OBJECT SERIALISATION
the order it checks stuff, bestie, step by step:
"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 โ yes she's just a placeholder and honestly? iconic.
- SYNOPSIS
- DESCRIPTION
- AUTHOR
- LICENSE
๐ธ List::Util ๐ธ
A selection of general-utility list subroutines โ the little toolbox you keep reaching for, fr fr.
- SYNOPSIS
- DESCRIPTION
- LIST-REDUCTION FUNCTIONS
reduce,reductions,any,all,none,notall,first,max,maxstr,min,minstr,product,sum,sum0
- KEY/VALUE PAIR LIST FUNCTIONS
pairs,unpairs,pairkeys,pairvalues,pairgrep,pairfirst,pairmap
- OTHER FUNCTIONS
shufflesample,uniq,uniqint,uniqnum,uniqstrhead,tail,zip,mesh
- LIST-REDUCTION FUNCTIONS
- CONFIGURATION VARIABLES
$RAND
- KNOWN BUGS
- RT #95409
uniqnum()on oversized bignums
- SUGGESTED ADDITIONS
- SEE ALSO
- COPYRIGHT
๐ง List::Util::XS ๐ง
Indicate if List::Util was compiled with a C compiler โ she's literally just here to tell you yes or no, and that's valid ๐
- SYNOPSIS
- DESCRIPTION
- SEE ALSO
- COPYRIGHT
๐ Locale::Maketext ๐
framework for localization โ the translation glow-up era of Perl, we love to see it.
- SYNOPSIS
- DESCRIPTION
- QUICK OVERVIEW
- METHODS
- Construction Methods
- The
"maketext"Method$lh->fail_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 โ a whole lil cookbook, we're eating good.
- INTRODUCTION
- ONESIDED LEXICONS
- DECIMAL PLACES IN NUMBER FORMATTING
๐ซง Locale::Maketext::Guts ๐ซง
Deprecated module to load Locale::Maketext utf8 code โ deprecated, bestie, meaning: old news, don't build new stuff on it.
- SYNOPSIS
- DESCRIPTION
๐ซง Locale::Maketext::GutsLoader ๐ซง
Deprecated module to load Locale::Maketext utf8 code โ same vibe as the one above, also deprecated.
- SYNOPSIS
- DESCRIPTION
โจ Locale::Maketext::Simple โจ
Simple interface to Locale::Maketext::Lexicon
- VERSION
- SYNOPSIS
- DESCRIPTION
- OPTIONS
- Class
- Path
- Style
- Export
- Subclass
- Decode
- Encoding
- ACKNOWLEDGMENTS
- SEE ALSO
- AUTHORS
- COPYRIGHT
- The
"MIT"License
- The
๐ Locale::Maketext::TPJ13 ๐
-- article about software localization โ it's literally a whole article, a read, a moment.
- SYNOPSIS
- DESCRIPTION
- Localization and Perl: gettext breaks, Maketext fixes
- A Localization Horror Story: It Could Happen To You
- The Linguistic View
- Breaking gettext
- Replacing gettext
- Buzzwords: Abstraction and Encapsulation
- Buzzword: Isomorphism
- Buzzword: Inheritance
- Buzzword: Concision
- The Devil in the Details
- The Proof in the Pudding: Localizing Web Sites
- References
๐ฌ MIME::Base64 ๐ฌ
Encoding and decoding of base64 strings
- SYNOPSIS
- DESCRIPTION
encode_base64( $bytes ),encode_base64( $bytes, $eol );,decode_base64( $str ),encode_base64url( $bytes ),decode_base64url( $str ),encoded_base64_length( $bytes ),encoded_base64_length( $bytes, $eol ),decoded_base64_length( $str )
- EXAMPLES
- COPYRIGHT
- SEE ALSO
๐ MIME::QuotedPrint ๐
Encoding and decoding of quoted-printable strings
- SYNOPSIS
- DESCRIPTION
encode_qp( $str),encode_qp( $str, $eol),encode_qp( $str, $eol, $binmode ),decode_qp( $str )
- COPYRIGHT
- SEE ALSO
๐ข Math::BigFloat ๐ข
arbitrary size floating point math package โ big numbers, big feelings.
- SYNOPSIS
- DESCRIPTION
- Input
- Output
- METHODS
- Configuration methods
accuracy(),precision()
- Constructor methods
from_dec(),from_hex(),from_oct(),from_bin(),from_bytes(),from_ieee754(),from_base(),bpi(),as_int(),as_rat(),as_float()
- Arithmetic methods
bdiv(),bmod(),bfdiv(),binv(),bmuladd(),bexp(),bnok(),bperm(),bsin(),bcos(),batan(),batan2(),bgcd()
- String conversion methods
bstr(),bsstr(),bnstr(),bestr(),bdstr(),to_bytes(),to_ieee754()
- Configuration methods
- 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()
- Modifying and =,
- BUGS
- SUPPORT
- GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
- LICENSE
- SEE ALSO
- AUTHORS
๐ข Math::BigInt ๐ข
arbitrary size integer math package โ the big one, buckle up.
- SYNOPSIS
- DESCRIPTION
- Input
- Output
- METHODS
- Configuration methods
accuracy(),precision(),round_mode(),div_scale(),trap_inf(),trap_nan(),upgrade(),downgrade(),modify(),config()
- Constructor methods
new(),from_dec(),from_hex(),from_oct(),from_bin(),from_bytes(),from_ieee754(),from_base(),from_base_num(),bzero(),bone(),binf(),bnan(),bpi(),copy(),as_int(),as_rat(),as_float()
- Boolean methods
is_zero(),is_one(),is_finite(),is_inf(),is_nan(),is_positive(),is_pos(),is_negative(),is_neg(),is_non_positive(),is_non_negative(),is_odd(),is_even(),is_int()
- Comparison methods
bcmp(),bacmp(),beq(),bne(),blt(),ble(),bgt(),bge()
- Arithmetic methods
bneg(),babs(),bsgn(),bnorm(),binc(),bdec(),badd(),bsub(),bmul(),bdiv(),bmod(),bfdiv(),bfmod(),btdiv(),btmod(),binv(),bsqrt(),bpow(),broot(),bmuladd(),bmodpow(),bmodinv(),blog(),bexp(),bilog2(),bilog10(),bclog2(),bclog10(),bnok(),bperm(),bhyperop(),hyperop(),buparrow(),uparrow(),backermann(),ackermann(),bsin(),bcos(),batan(),batan2(),bfac(),bdfac(),btfac(),bmfac(),bfib(),blucas(),blsft(),brsft()
- Bitwise methods
bblsft(),bbrsft(),band(),bior(),bxor(),bnot()
- Rounding methods
round(),bround(),bfround(),bfloor(),bceil(),bint()
- Other mathematical methods
bgcd(),blcm()
- Object property methods
sign(),digit(),bdigitsum(),digitsum(),length(),mantissa(),exponent(),parts(),sparts(),nparts(),eparts(),dparts(),fparts(),numerator(),denominator()
- String conversion methods
bstr(),bsstr(),bnstr(),bestr(),bdstr(),bfstr(),to_hex(),to_oct(),to_bin(),to_bytes(),to_ieee754(),to_base(),to_base_num(),as_hex(),as_oct(),as_bin(),as_bytes()
- Other conversion methods
numify()
- Utility methods
dec_str_to_dec_flt_str(),hex_str_to_dec_flt_str(),oct_str_to_dec_flt_str(),bin_str_to_dec_flt_str(),dec_str_to_dec_str(),hex_str_to_dec_str(),oct_str_to_dec_str(),bin_str_to_dec_str()
- Configuration methods
- 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
- Comparing numbers as strings,
- BUGS
- SUPPORT
- GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
- LICENSE
- SEE ALSO
- AUTHORS
๐งฎ Math::BigInt::Calc ๐งฎ
pure Perl module to support Math::BigInt โ no XS, just vibes and pure Perl.
- SYNOPSIS
- DESCRIPTION
- OPTIONS
base_len,use_int
- METHODS
_base_len()
- SEE ALSO
โก Math::BigInt::FastCalc โก
Math::BigInt::Calc with some XS for more speed โ same as Calc but with a speed buff, slay.
- SYNOPSIS
- DESCRIPTION
- STORAGE
- METHODS
- BUGS
- SUPPORT
- GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
- LICENSE
- AUTHORS
- SEE ALSO
๐ธ Math::BigInt::Lib โ the virtual parent class for Math::BigInt libraries ๐ซถ
It's giving "blueprint energy" โ this one's the template all the other BigInt backends copy from.
SYNOPSIS
DESCRIPTION
General Notes โจ
Here's the whole squad of methods every subclass has to bring to the party, no cap:
CLASS->api_version(),CLASS->_new(STR),CLASS->_zero(),CLASS->_one(),CLASS->_two(),CLASS->_ten(),CLASS->_from_bin(STR),CLASS->_from_oct(STR),CLASS->_from_hex(STR),CLASS->_from_bytes(STR),CLASS->_from_base(STR, BASE, COLLSEQ),CLASS->_from_base_num(ARRAY, BASE),CLASS->_add(OBJ1, OBJ2),CLASS->_mul(OBJ1, OBJ2),CLASS->_div(OBJ1, OBJ2),CLASS->_sub(OBJ1, OBJ2, FLAG),CLASS->_sub(OBJ1, OBJ2),CLASS->_sadd(OBJ1, SIGN1, OBJ2, SIGN2),CLASS->_ssub(OBJ1, SIGN1, OBJ2, SIGN2),CLASS->_dec(OBJ),CLASS->_inc(OBJ),CLASS->_mod(OBJ1, OBJ2),CLASS->_sqrt(OBJ),CLASS->_root(OBJ, N),CLASS->_fac(OBJ),CLASS->_dfac(OBJ),CLASS->_pow(OBJ1, OBJ2),CLASS->_modinv(OBJ1, OBJ2),CLASS->_modpow(OBJ1, OBJ2, OBJ3),CLASS->_rsft(OBJ, N, B),CLASS->_lsft(OBJ, N, B),CLASS->_log_int(OBJ, B),CLASS->_ilog2(OBJ),CLASS->_ilog10(OBJ),CLASS->_clog2(OBJ),CLASS->_clog10(OBJ),CLASS->_gcd(OBJ1, OBJ2),CLASS->_lcm(OBJ1, OBJ2),CLASS->_fib(OBJ),CLASS->_lucas(OBJ),CLASS->_and(OBJ1, OBJ2),CLASS->_or(OBJ1, OBJ2),CLASS->_xor(OBJ1, OBJ2),CLASS->_sand(OBJ1, OBJ2, SIGN1, SIGN2),CLASS->_sor(OBJ1, OBJ2, SIGN1, SIGN2),CLASS->_sxor(OBJ1, OBJ2, SIGN1, SIGN2),CLASS->_is_zero(OBJ),CLASS->_is_one(OBJ),CLASS->_is_two(OBJ),CLASS->_is_ten(OBJ),CLASS->_is_even(OBJ),CLASS->_is_odd(OBJ),CLASS->_acmp(OBJ1, OBJ2),CLASS->_scmp(OBJ1, SIGN1, OBJ2, SIGN2),CLASS->_str(OBJ),CLASS->_to_bin(OBJ),CLASS->_to_oct(OBJ),CLASS->_to_hex(OBJ),CLASS->_to_bytes(OBJ),CLASS->_to_base(OBJ, BASE, COLLSEQ),CLASS->_to_base_num(OBJ, BASE),CLASS->_as_bin(OBJ),CLASS->_as_oct(OBJ),CLASS->_as_hex(OBJ),CLASS->_as_bytes(OBJ),CLASS->_num(OBJ),CLASS->_copy(OBJ),CLASS->_len(OBJ),CLASS->_zeros(OBJ),CLASS->_digit(OBJ, N),CLASS->_digitsum(OBJ),CLASS->_check(OBJ),CLASS->_set(OBJ)
API version 2 ๐
The glow-up era โ three extra methods join the roster:
CLASS->_1ex(N),CLASS->_nok(OBJ1, OBJ2),CLASS->_alen(OBJ)
WRAP YOUR OWN ๐
BUGS
SUPPORT
- GitHub Source Repository, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
LICENSE
AUTHOR
SEE ALSO
๐ฆ Math::BigRat โ arbitrary size rational number math package
Fractions that never lose precision, bestie. Iconic.
SYNOPSIS
DESCRIPTION
Math Library
METHODS
The full roster, zero skips:
new(),from_dec(),from_hex(),from_oct(),from_bin(),from_bytes(),from_ieee754(),from_base(),bzero(),bone(),binf(),bnan(),bpi(),copy(),as_int(),as_rat(),as_float(),bround()/round()/bfround(),is_zero(),is_one(),is_finite(),is_positive(),is_pos(),is_negative(),is_neg(),is_odd(),is_even(),is_int()
Comparison methods
bcmp(),bacmp(),beq(),bne(),blt(),ble(),bgt(),bge(),blsft()/brsft(),bneg(),bnorm(),binc(),bdec(),badd(),bsub(),bmul(),bdiv(),bmod(),binv(),bsqrt(),bpow(),broot(),bmodpow(),bmodinv(),blog(),bexp(),bnok(),bperm(),bfac(),band(),bior(),bxor(),bnot(),bfloor(),bceil(),bint(),bgcd(),digit(),length(),parts(),dparts(),fparts(),numerator(),denominator()
String conversion methods
bstr(),bnstr(),bestr(),bdstr(),to_bytes(),to_ieee754(),as_hex(),as_oct(),as_bin(),numify(),config()
NUMERIC LITERALS
Hexadecimal, octal, and binary floating point literals
BUGS
SUPPORT
- GitHub, RT: CPAN's request tracker, MetaCPAN, CPAN Testers Matrix
LICENSE
SEE ALSO
AUTHORS
๐ Math::Complex โ complex numbers and associated mathematical functions
Imaginary besties, we ride at dawn. โจ
SYNOPSIS
DESCRIPTION
OPERATIONS
CREATION
DISPLAYING
CHANGED IN PERL 5.6
USAGE
CONSTANTS
PI
Inf
ERRORS DUE TO DIVISION BY ZERO OR LOGARITHM OF ZERO
ERRORS DUE TO INDIGESTIBLE ARGUMENTS
BUGS
SEE ALSO
AUTHORS
LICENSE
๐ง Math::Trig โ trigonometric functions
Every angle, every distance, every vibe. ๐
SYNOPSIS
DESCRIPTION
TRIGONOMETRIC FUNCTIONS
tan
ERRORS DUE TO DIVISION BY ZERO
SIMPLE (REAL) ARGUMENTS, COMPLEX RESULTS
PLANE ANGLE CONVERSIONS
deg2rad,grad2rad,rad2deg,grad2deg,deg2grad,rad2grad,rad2rad,deg2deg,grad2grad
RADIAL COORDINATE CONVERSIONS
COORDINATE SYSTEMS
3-D ANGLE CONVERSIONS
cartesian_to_cylindrical,cartesian_to_spherical,cylindrical_to_cartesian,cylindrical_to_spherical,spherical_to_cartesian,spherical_to_cylindrical
GREAT CIRCLE DISTANCES AND DIRECTIONS
great_circle_distance
great_circle_direction
great_circle_bearing
great_circle_destination
great_circle_midpoint
great_circle_waypoint
EXAMPLES
CAVEAT FOR GREAT CIRCLE FORMULAS
Real-valued asin and acos
asin_real,acos_real
BUGS
SEE ALSO
AUTHORS
LICENSE
๐ Memoize โ Make functions faster by trading space for time
Cache it and forget it, the algorithm is caching, periodt. ๐ฅ
SYNOPSIS
DESCRIPTION
EXAMPLE
DETAILS
OPTIONS
INSTALL
NORMALIZER
"SCALAR_CACHE", "LIST_CACHE"
"MEMORY", "HASH", "TIE", "FAULT", "MERGE"
OTHER FACILITIES
"unmemoize"
"flush_cache"
CAVEATS
PERSISTENT CACHE SUPPORT
EXPIRATION SUPPORT
BUGS
SEE ALSO
THANK YOU
AUTHOR
COPYRIGHT AND LICENSE
๐ Memoize::AnyDBM_File โ glue to provide EXISTS for AnyDBM_File for Storable use
DESCRIPTION
๐ธ Memoize::Expire โ Plug-in module for automatic expiration of memoized values
Your cache but make it โจtemporaryโจ.
SYNOPSIS
DESCRIPTION
INTERFACE
TIEHASH,EXISTS,STORE
ALTERNATIVES
CAVEATS
AUTHOR
SEE ALSO
๐ Memoize::NDBM_File โ glue to provide EXISTS for NDBM_File for Storable use
DESCRIPTION
๐ Memoize::SDBM_File โ DEPRECATED compatibility shim
Heads up bestie: this one's deprecated. It's literally just a shim hanging around for old code.
DESCRIPTION
๐ Memoize::Storable โ store Memoized data in Storable database
DESCRIPTION
๐ Module::CoreList โ what modules shipped with versions of perl
The receipts for literally every module that ever came bundled. iykyk. ๐ซถ
SYNOPSIS
DESCRIPTION
FUNCTIONS API
first_release( MODULE ),first_release_by_date( MODULE ),"find_modules( REGEX, [ LIST OF PERLS ] )",find_version( PERL_VERSION ),"is_core( MODULE, [ MODULE_VERSION, [ PERL_VERSION ] ] )","is_deprecated( MODULE, PERL_VERSION )",deprecated_in( MODULE ),removed_from( MODULE ),removed_from_by_date( MODULE ),"changes_between( PERL_VERSION, PERL_VERSION )"
DATA STRUCTURES
%Module::CoreList::version,%Module::CoreList::delta,%Module::CoreList::released,%Module::CoreList::families,%Module::CoreList::deprecated,%Module::CoreList::upstream,%Module::CoreList::bug_tracker
CAVEATS
HISTORY
AUTHOR
LICENSE
SEE ALSO
โญ Module::CoreList::Utils โ what utilities shipped with versions of perl
Same energy as above but for the command-line tools. ๐
SYNOPSIS
DESCRIPTION
FUNCTIONS API
"utilities",first_release( UTILITY ),first_release_by_date( UTILITY ),removed_from( UTILITY ),removed_from_by_date( UTILITY )
DATA STRUCTURES
%Module::CoreList::Utils::utilities
AUTHOR
LICENSE
SEE ALSO
๐ฆ Module::Load โ runtime require of both modules and files
SYNOPSIS
DESCRIPTION
Difference between "load" and "autoload"
FUNCTIONS
load,autoload,load_remote,autoload_remote
Rules
IMPORTS THE FUNCTIONS
"load","autoload","load_remote","autoload_remote",'all','','none',undef
Caveats
SEE ALSO
ACKNOWLEDGEMENTS
BUG REPORTS
AUTHOR
COPYRIGHT
๐
Module::Load::Conditional โ Looking up module information / loading at runtime
SYNOPSIS
DESCRIPTION
Methods
$href = check_install( module => NAME [, version => VERSION, verbose => BOOL ] );
module,version,verbose,file,dir,version,uptodate
$bool = can_load( modules => { NAME => VERSION [,NAME => VERSION] }, [verbose => BOOL, nocache => BOOL, autoload => BOOL] )
modules,verbose,nocache,autoload
@list = requires( MODULE );
Global Variables
$Module::Load::Conditional::VERBOSE$Module::Load::Conditional::FIND_VERSION$Module::Load::Conditional::CHECK_INC_HASH$Module::Load::Conditional::FORCE_SAFE_INC$Module::Load::Conditional::CACHE$Module::Load::Conditional::ERROR$Module::Load::Conditional::DEPRECATED
See Also
BUG REPORTS
AUTHOR
COPYRIGHT
๐ Module::Loaded โ mark modules as loaded or unloaded
SYNOPSIS
DESCRIPTION
FUNCTIONS
$bool = mark_as_loaded( PACKAGE );$bool = mark_as_unloaded( PACKAGE );$loc = is_loaded( PACKAGE );
BUG REPORTS
AUTHOR
COPYRIGHT
๐ง Module::Metadata โ Gather package and POD information from perl module files
VERSION
SYNOPSIS
DESCRIPTION
CLASS METHODS
"new_from_file($filename, collect_pod => 1, decode_pod => 1)""new_from_handle($handle, $filename, collect_pod => 1, decode_pod => 1)""new_from_module($module, collect_pod => 1, inc => \@dirs, decode_pod => 1)""find_module_by_name($module, \@dirs)""find_module_dir_by_name($module, \@dirs)"provides( %options )version(required),dir,files,prefix
"package_versions_from_directory($dir, \@files?)""log_info (internal)"
OBJECT METHODS
name()version($package)filename()packages_inside()pod_inside()contains_pod()pod($section)is_indexable($package)oris_indexable()
SUPPORT
AUTHOR
CONTRIBUTORS
COPYRIGHT & LICENSE
๐ NDBM_File โ Tied access to ndbm files
SYNOPSIS
DESCRIPTION
"O_RDONLY","O_WRONLY","O_RDWR"
DIAGNOSTICS
"ndbm store returned -1, errno 22, key "..." at ..."
SECURITY AND PORTABILITY
BUGS AND WARNINGS
๐ฅ NEXT โ Provide a pseudo-class NEXT (et al) that allows method redispatch
SYNOPSIS
DESCRIPTION
Enforcing redispatch
Avoiding repetitions
Invoking all versions of a method with a single call
Using "EVERY" methods
SEE ALSO
AUTHOR
BUGS AND IRRITATIONS
COPYRIGHT
๐ Net::Cmd โ Network Command class (as used by FTP, SMTP etc)
SYNOPSIS
DESCRIPTION
Public Methods
debug($level),message(),code(),ok(),status(),datasend($data),dataend()
Protected Methods
"debug_print($dir, $text)","debug_text($dir, $text)","command($cmd[, $args, ... ])",unsupported(),response(),parse_response($text),getline(),ungetline($text),rawdatasend($data),read_until_dot(),tied_fh()
(still deep inside Net::Cmd's TOC โ carrying on, no worries ๐ซถ)
- Pseudo Responses
- Initial value, Connection closed, Timeout
- EXPORTS
- Default Exports, Optional Exports, Export Tags
- KNOWN BUGS
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::Config - Local configuration data for libnet ๐
okay so this is libnet's lil settings drawer, and it's giving very much "menu of options" energy โจ
- SYNOPSIS
- DESCRIPTION
- Class Methods
requires_firewall($host)
- NetConfig Values
nntp_hosts,snpp_hosts,pop3_hosts,smtp_hosts,ph_hosts,daytime_hosts,time_hosts,inet_domain,ftp_firewall,ftp_firewall_type,0,1,2,3,4,5,6,7,ftp_ext_passive,ftp_int_passive,local_netmask,test_hosts,test_exists
- Class Methods
- EXPORTS
- Default Exports, Optional Exports, Export Tags
- KNOWN BUGS
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::Domain - Attempt to evaluate the current host's internet name and domain ๐ธ
bestie this one is literally just "who am I, name-wise" for your machine ๐
- SYNOPSIS
- DESCRIPTION
- Functions
hostfqdn(),domainname(),hostname(),hostdomain()
- Functions
- EXPORTS
- Default Exports, Optional Exports, Export Tags
- KNOWN BUGS
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::FTP - FTP Client class ๐ฆ
the FTP era never died, it just went indie. look at this method list, it's a whole syllabus ๐ญ
- SYNOPSIS
- DESCRIPTION
- Overview
- Class Methods
new([$host][, %options])
- Object Methods
login([$login[, $password[, $account]]]),starttls(),stoptls(),prot($level),host(),account($acct),authorize([$auth[, $resp]]),site($args),ascii(),binary(),type([$type]),rename($oldname, $newname),delete($filename),cwd([$dir]),cdup(),passive([$passive]),pwd(),restart($where),rmdir($dir[, $recurse]),mkdir($dir[, $recurse]),alloc($size[, $record_size]),ls([$dir]),dir([$dir]),get($remote_file[, $local_file[, $where]]),put($local_file[, $remote_file]),put_unique($local_file[, $remote_file]),append($local_file[, $remote_file]),unique_name(),mdtm($file),size($file),supported($cmd),hash([$filehandle_glob_ref[, $bytes_per_hash_mark]]),feature($name),nlst([$dir]),list([$dir]),retr($file),stor($file),stou($file),appe($file),port([$port]),eprt([$port]),pasv(),epsv(),pasv_xfer($src_file, $dest_server[, $dest_file ]),pasv_xfer_unique($src_file, $dest_server[, $dest_file ]),pasv_wait($non_pasv_server),abort(),quit()
- Methods for the Adventurous
quot($cmd[, $args]),can_inet6(),can_ssl()
- The dataconn Class
- Unimplemented
SMNT,HELP,MODE,SYST,STAT,STRU,REIN
- EXPORTS
- KNOWN BUGS
- Reporting Bugs
- SEE ALSO
- ACKNOWLEDGEMENTS
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::NNTP - NNTP Client class ๐ฐ
usenet girlies rise up ๐ซก this TOC entry is LONG and we're not skipping a single crumb
- SYNOPSIS
- DESCRIPTION
- Class Methods
new([$host][, %options])
- Object Methods
host(),starttls(),article([{$msgid|$msgnum}[, $fh]]),body([{$msgid|$msgnum}[, [$fh]]),head([{$msgid|$msgnum}[, [$fh]]),articlefh([{$msgid|$msgnum}]),bodyfh([{$msgid|$msgnum}]),headfh([{$msgid|$msgnum}]),nntpstat([{$msgid|$msgnum}]),group([$group]),help(),ihave($msgid[, $message]),last(),date(),postok(),authinfo($user, $pass),authinfo_simple($user, $pass),list(),newgroups($since[, $distributions]),newnews($since[, $groups[, $distributions]]),next(),post([$message]),postfh(),slave(),quit(),can_inet6(),can_ssl()
- Extension Methods
newsgroups([$pattern]),distributions(),distribution_patterns(),subscriptions(),overview_fmt(),active_times(),active([$pattern]),xgtitle($pattern),xhdr($header, $message_spec),xover($message_spec),xpath($message_id),xpat($header, $pattern, $message_spec),xrover($message_spec),listgroup([$group]),reader()
- Unsupported
- Definitions
$message_spec,$pattern, Examples,[^]-],*bdc,[0-9a-zA-Z],a??d
- Class Methods
- EXPORTS
- KNOWN BUGS
- SEE ALSO
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::Netrc - OO interface to users netrc file ๐
your .netrc but make it an object, slay ๐
- SYNOPSIS
- DESCRIPTION
- The .netrc File
- machine name, default, login name, password string, account string, macdef name
- Class Methods
lookup($machine[, $login])
- Object Methods
login(),password(),account(),lpa()
- The .netrc File
- EXPORTS
- KNOWN BUGS
- SEE ALSO
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::POP3 - Post Office Protocol 3 Client class (RFC1939) ๐
inbox energy, but make it a class โ๏ธ
- SYNOPSIS
- DESCRIPTION
- Class Methods
new([$host][, %options])
- Object Methods
host(),auth($username, $password),user($user),pass($pass),login([$user[, $pass]]),starttls(%sslargs),apop([$user[, $pass]]),banner(),capa(),capabilities(),top($msgnum[, $numlines]),list([$msgnum]),get($msgnum[, $fh]),getfh($msgnum),last(),popstat(),ping($user),uidl([$msgnum]),delete($msgnum),reset(),quit(),can_inet6(),can_ssl()
- Notes
- Class Methods
- EXPORTS
- KNOWN BUGS
- SEE ALSO
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::Ping - check a remote host for reachability ๐
is it alive?? this is the module that answers that. buckle up, the function list is a whole journey ๐ซ
- SYNOPSIS
- DESCRIPTION
- Functions
Net::Ping->new([proto, timeout, bytes, device, tos, ttl, family, host, port, bind, gateway, retrans, pingstring, source_verify econnrefused dontfrag IPV6_USE_MIN_MTU IPV6_RECVPATHMTU]),$p->ping($host [, $timeout [, $family]]);,$p->source_verify( { 0 | 1 } );,$p->service_check( { 0 | 1 } );,$p->tcp_service_check( { 0 | 1 } );,$p->hires( { 0 | 1 } );,$p->time,$p->socket_blocking_mode( $fh, $mode );,$p->IPV6_USE_MIN_MTU,$p->IPV6_RECVPATHMTU,$p->IPV6_HOPLIMIT,$p->IPV6_REACHCONF NYI,$p->bind($local_addr);,$p->message_type([$ping_type]);,$p->open($host);,$p->ack( [ $host ] );,$p->nack( $failed_ack_host );,$p->ack_unfork($host),$p->ping_icmp([$host, $timeout, $family]),$p->ping_icmpv6([$host, $timeout, $family]),$p->ping_stream([$host, $timeout, $family]),$p->ping_syn([$host, $ip, $start_time, $stop_time]),$p->ping_syn_fork([$host, $timeout, $family]),$p->ping_tcp([$host, $timeout, $family]),$p->ping_udp([$host, $timeout, $family]),$p->ping_external([$host, $timeout, $family]),$p->tcp_connect([$ip, $timeout]),$p->tcp_echo([$ip, $timeout, $pingstring]),$p->close();,$p->port_number([$port_number]),$p->mselect,$p->ntop,$p->checksum($msg),$p->icmp_result,pingecho($host [, $timeout]);,wakeonlan($mac, [$host, [$port]])
- Functions
- NOTES
- INSTALL
- BUGS
- AUTHORS
- COPYRIGHT
Net::SMTP - Simple Mail Transfer Protocol Client โ๏ธ
sending mail the classy way, no cap ๐
- SYNOPSIS
- DESCRIPTION
- Class Methods
new([$host][, %options])
- Object Methods
banner(),domain(),hello($domain),host(),etrn($domain),starttls(%sslargs),auth($username, $password),auth($sasl),mail($address[, %options]),send($address),send_or_mail($address),send_and_mail($address),reset(),recipient($address[, $address[, ...]][, %options]),to($address[, $address[, ...]]),cc($address[, $address[, ...]]),bcc($address[, $address[, ...]]),data([$data]),bdat($data),bdatlast($data),expand($address),verify($address),help([$subject]),quit(),can_inet6(),can_ssl()
- Addresses
- Class Methods
- EXAMPLES
- EXPORTS
- KNOWN BUGS
- SEE ALSO
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::Time - time and daytime network client interface โฐ
asking a server "bestie what time is it" but officially ๐ฐ๏ธ
- SYNOPSIS
- DESCRIPTION
- Functions
inet_time([$host[, $protocol[, $timeout]]]),inet_daytime([$host[, $protocol[, $timeout]]])
- Functions
- EXPORTS
- Default Exports, Optional Exports, Export Tags
- KNOWN BUGS
- AUTHOR
- COPYRIGHT
- LICENCE
- VERSION
- DATE
- HISTORY
Net::hostent - by-name interface to Perl's built-in gethost*() functions ๐
by-name glow-up for the built-in host lookups, iconic โจ
- SYNOPSIS
- DESCRIPTION
- EXAMPLES
- NOTE
- AUTHOR
Net::libnetFAQ, libnetFAQ - libnet Frequently Asked Questions โ
the FAQ!! this is the "just read the FAQ bestie" FAQ ๐ญ every single question is listed below, we're not skimming
- DESCRIPTION
- Where to get this document
- How to contribute to this document
- Author and Copyright Information
- Disclaimer
- Obtaining and installing libnet
- What is libnet ?
- Which version of perl do I need ?
- What other modules do I need ?
- What machines support libnet ?
- Where can I get the latest libnet release
- Using Net::FTP
- How do I download files from an FTP server ?
- How do I transfer files in binary mode ?
- How can I get the size of a file on a remote FTP server ?
- How can I get the modification time of a file on a remote FTP server ?
- How can I change the permissions of a file on a remote server ?
- Can I do a reget operation like the ftp command ?
- How do I get a directory listing from an FTP server ?
- Changing directory to
""does not fail ? - I am behind a SOCKS firewall, but the Firewall option does not work ?
- I am behind an FTP proxy firewall, but cannot access machines outside ?
- My ftp proxy firewall does not listen on port 21
- Is it possible to change the file permissions of a file on an FTP server ?
- I have seen scripts call a method message, but cannot find it documented ?
- Why does Net::FTP not implement mput and mget methods
- Using Net::SMTP
- Why can't the part of an Email address after the @ be used as the hostname ?
- Why does Net::SMTP not do DNS MX lookups ?
- The verify method always returns true ?
- Debugging scripts
- How can I debug my scripts that use Net::* modules ?
- AUTHOR AND COPYRIGHT
Net::netent - by-name interface to Perl's built-in getnet*() functions ๐ธ๏ธ
network-by-name but make it tidy ๐ซถ
- SYNOPSIS
- DESCRIPTION
- EXAMPLES
- NOTE
- AUTHOR
Net::protoent - by-name interface to Perl's built-in getproto*() functions ๐ก
protocol names, served with a little bow ๐
- SYNOPSIS
- DESCRIPTION
- NOTE
- AUTHOR
Net::servent - by-name interface to Perl's built-in getserv*() functions ๐
service names by name, yes bestie it's that simple ๐
- SYNOPSIS
- DESCRIPTION
- EXAMPLES
- NOTE
- AUTHOR
O - Generic interface to Perl Compiler backends ๐ง
just the letter O, single-letter module name, main character energy fr fr ๐
- SYNOPSIS
- DESCRIPTION
- CONVENTIONS
- IMPLEMENTATION
- BUGS
- AUTHOR
ODBM_File โ tied access to odbm files ๐พ
Okay bestie, this is the module that lets you tie a Perl hash to an old-school odbm file so your data lives on disk instead of just vibing in RAM. Here's the whole table of contents for it:
- SYNOPSIS โจ
- DESCRIPTION ๐
"O_RDONLY","O_WRONLY","O_RDWR"
- DIAGNOSTICS ๐ฉบ
"odbm store returned -1, errno 22, key "..." at ..."
- SECURITY AND PORTABILITY ๐
- BUGS AND WARNINGS โ ๏ธ
Opcode โ disable named opcodes when compiling perl code ๐ซ
The module that lets you lock down which Perl opcodes are even allowed to exist at compile time. It's giving security girlie. Its TOC is:
- SYNOPSIS โจ
- DESCRIPTION ๐
- NOTE ๐
- WARNING ๐จ
- Operator Names and Operator Lists ๐งพ
- an operator name (opname), an operator tag name (optag), a negated opname or optag, an operator set (opset)
- Opcode Functions โ๏ธ
opcodes,opset (OP, ...),opset_to_ops (OPSET),opset_to_hex (OPSET),full_opset,empty_opset,invert_opset (OPSET),verify_opset (OPSET, ...),define_optag (OPTAG, OPSET),opmask_add (OPSET),opmask,opdesc (OP, ...),opdump (PAT)
- Manipulating Opsets ๐๏ธ
- TO DO (maybe) ๐
- Predefined Opcode Tags ๐ท๏ธ
:base_core,:base_mem,:base_loop,:base_io,:base_orig,:base_math,:base_thread,:default,:filesys_read,:sys_db,:browse,:filesys_open,:filesys_write,:subprocess,:ownprocess,:others,:load,:still_to_be_decided,:dangerous
- SEE ALSO ๐
- AUTHORS โ๏ธ
POSIX โ Perl interface to IEEE Std 1003.1 ๐
The absolute icon. It's the Perl side of the POSIX standard, and its TOC is chef's kiss long. Periodt.
- SYNOPSIS โจ
- DESCRIPTION ๐
- CAVEATS โ ๏ธ
- FUNCTIONS ๐ ๏ธ
"_exit", "abort", "abs", "access", "acos", "acosh", "alarm", "asctime",
"asin", "asinh", "assert", "atan", "atanh", "atan2", "atexit", "atof",
"atoi", "atol", "bsearch", "calloc", "cbrt", "ceil", "chdir", "chmod",
"chown", "clearerr", "clock", "close", "closedir", "cos", "cosh",
"copysign", "creat", "ctermid", "ctime", "cuserid" [POSIX.1-1988],
"difftime", "div", "dup", "dup2", "erf", "erfc", "errno", "execl",
"execle", "execlp", "execv", "execve", "execvp", "exit", "exp", "expm1",
"fabs", "fcntl", "fdopen", "feof", "ferror", "fflush", "fgetc", "fgetpos",
"fgets", "fileno", "floor", "fdim", "fegetround", "fesetround", "fma",
"fmax", "fmin", "fmod", "fopen", "fork", "fpathconf", "fpclassify",
"fprintf", "fputc", "fputs", "fread", "free", "freopen", "frexp", "fscanf",
"fseek", "fsetpos", "fstat", "fsync", "ftell", "fwrite", "getc", "getchar",
"getcwd", "getegid", "getenv", "geteuid", "getgid", "getgrgid", "getgrnam",
"getgroups", "getlogin", "getpayload", "getpgrp", "getpid", "getppid",
"getpwnam", "getpwuid", "gets", "getuid", "gmtime", "hypot", "ilogb",
"Inf", "isalnum", "isalpha", "isatty", "iscntrl", "isdigit", "isfinite",
"isgraph", "isgreater", "isinf", "islower", "isnan", "isnormal", "isprint",
"ispunct", "issignaling", "isspace", "isupper", "isxdigit", "j0", "j1",
"jn", "y0", "y1", "yn", "kill", "labs", "lchown", "ldexp", "ldiv",
"lgamma", "log1p", "log2", "logb", "link", "localeconv", "localtime",
"log", "log10", "longjmp", "lseek", "lrint", "lround", "malloc", "mblen",
"mbtowc", "memchr", "memcmp", "memcpy", "memmove", "memset", "mkdir",
"mkfifo", "mktime", "modf", "NaN", "nan", "nearbyint", "nextafter",
"nexttoward", "nice", "offsetof", "open", "opendir", "pathconf", "pause",
"perror", "pipe", "pow", "printf", "putc", "putchar", "puts", "qsort",
"raise", "rand", "read", "readdir", "realloc", "remainder", "remove",
"remquo", "rename", "rewind", "rewinddir", "rint", "rmdir", "round",
"scalbn", "scanf", "setgid", "setjmp", "setlocale", "setpayload",
"setpayloadsig", "setpgid", "setsid", "setuid", "sigaction", "siglongjmp",
"signbit", "sigpending", "sigprocmask", "sigsetjmp", "sigsuspend", "sin",
"sinh", "sleep", "sprintf", "sqrt", "srand", "sscanf", "stat", "strcat",
"strchr", "strcmp", "strcoll", "strcpy", "strcspn", "strerror", "strftime",
"strlen", "strncat", "strncmp", "strncpy", "strpbrk", "strrchr", "strspn",
"strstr", "strtod", "strtok", "strtol", "strtold", "strtoul", "strxfrm",
"sysconf", "system", "tan", "tanh", "tcdrain", "tcflow", "tcflush",
"tcgetpgrp", "tcsendbreak", "tcsetpgrp", "tgamma", "time", "times",
"tmpfile", "tmpnam", "tolower", "toupper", "trunc", "ttyname", "tzname",
"tzset", "umask", "uname", "ungetc", "unlink", "utime", "vfprintf",
"vprintf", "vsprintf", "wait", "waitpid", "wctomb", "write"
- CLASSES ๐๏ธ
"POSIX::SigAction""new","handler","mask","flags","safe"
"POSIX::SigRt"%SIGRT,"SIGRTMIN","SIGRTMAX"
"POSIX::SigSet""new","addset","delset","emptyset","fillset","ismember"
"POSIX::Termios""new","getattr","getcc","getcflag","getiflag","getispeed","getlflag","getoflag","getospeed","setattr","setcc","setcflag","setiflag","setispeed","setlflag","setoflag","setospeed", Baud rate values, Terminal interface values,"c_cc"field values,"c_cflag"field values,"c_iflag"field values,"c_lflag"field values,"c_oflag"field values
- PATHNAME CONSTANTS ๐
- Constants
- POSIX CONSTANTS ๐
- Constants
- RESOURCE CONSTANTS ๐งฎ
- Constants
- SYSTEM CONFIGURATION ๐ฅ๏ธ
- Constants
- ERRNO ๐จ
- Constants
- FCNTL ๐ง
- Constants
- FLOAT ๐
- Constants
- FLOATING-POINT ENVIRONMENT ๐
- Constants
- LIMITS ๐
- Constants
- LOCALE ๐
- Constants
- MATH โ
- Constants
- SIGNAL ๐ก
- Constants
- STAT ๐
- Constants, Macros
- STDLIB ๐
- Constants
- STDIO ๐ป
- Constants
- TIME โฐ
- Constants
- UNISTD ๐ง
- Constants
- WAIT โ
- Constants,
"WNOHANG","WUNTRACED", Macros,"WIFEXITED","WEXITSTATUS","WIFSIGNALED","WTERMSIG","WIFSTOPPED","WSTOPSIG"
- Constants,
- WINSOCK ๐ช
- Constants
Params::Check โ a generic input parsing/checking mechanism ๐
Your fave little helper for validating args, no cap. TOC:
- SYNOPSIS โจ
- DESCRIPTION ๐
- Template ๐
default,required,strict_type,defined,no_override,store,allow
- Functions ๐ ๏ธ
check( \%tmpl, \%args, [$verbose] );- Template, Arguments, Verbose
allow( $test_me, \@criteria );- string, regexp, subroutine, array ref
last_error()
- Global Variables ๐
$Params::Check::VERBOSE$Params::Check::STRICT_TYPE$Params::Check::ALLOW_UNKNOWN$Params::Check::STRIP_LEADING_DASHES$Params::Check::NO_DUPLICATES$Params::Check::PRESERVE_CASE$Params::Check::ONLY_ALLOW_DEFINED$Params::Check::SANITY_CHECK_TEMPLATE$Params::Check::WARNINGS_FATAL$Params::Check::CALLER_DEPTH
- Acknowledgements ๐ซถ
- BUG REPORTS ๐
- AUTHOR โ๏ธ
- COPYRIGHT ยฉ๏ธ
Parse::CPAN::Meta โ parse META.yml and META.json CPAN metadata files ๐ฆ
Reads all the CPAN metadata files so you don't have to. Here's everything it's got:
- VERSION ๐ท๏ธ
- SYNOPSIS โจ
- DESCRIPTION ๐
- METHODS ๐ ๏ธ
load_fileload_yaml_stringload_json_stringload_stringyaml_backendjson_backendjson_decoder
- FUNCTIONS โ๏ธ
LoadLoadFile
- ENVIRONMENT ๐
CPAN_META_JSON_DECODERCPAN_META_JSON_BACKENDPERL_JSON_BACKENDPERL_YAML_BACKEND
- AUTHORS โ๏ธ
- COPYRIGHT AND LICENSE ยฉ๏ธ
Perl::OSType โ map Perl operating system names to generic types ๐บ๏ธ
It's giving translator for OS names. TOC:
- VERSION ๐ท๏ธ
- SYNOPSIS โจ
- DESCRIPTION ๐
- USAGE ๐ฏ
os_type()is_os_type()
- SEE ALSO ๐
- SUPPORT ๐
- Bugs / Feature Requests
- Source Code
- AUTHOR โ๏ธ
- CONTRIBUTORS ๐ซถ
- COPYRIGHT AND LICENSE ยฉ๏ธ
PerlIO โ on demand loader for PerlIO layers and root of PerlIO::* name space ๐
The whole vibe of PerlIO lives here. Its TOC:
- SYNOPSIS โจ
- DESCRIPTION ๐
- Layers ๐ง
:unix,:stdio,:perlio,:crlf,:utf8,:bytes,:raw,:pop
- Custom Layers ๐จ
:encoding,:mmap,:via,:scalar
- Alternatives to raw ๐งผ
- Defaults and how to override them ๐
- Querying the layers of filehandles ๐
- Layers ๐ง
- AUTHOR โ๏ธ
- SEE ALSO ๐
PerlIO::encoding โ encoding layer ๐ค
- SYNOPSIS โจ
- DESCRIPTION ๐
- SEE ALSO ๐
PerlIO::mmap โ memory mapped IO ๐ง
- SYNOPSIS โจ
- DESCRIPTION ๐
- IMPLEMENTATION NOTE ๐
PerlIO::scalar โ in-memory IO, scalar IO ๐ญ
- SYNOPSIS โจ
- DESCRIPTION ๐
- IMPLEMENTATION NOTE ๐
PerlIO::via โ helper class for PerlIO layers implemented in perl ๐
The blueprint for writing your own PerlIO layers in pure Perl. Its TOC:
- SYNOPSIS โจ
- DESCRIPTION ๐
- EXPECTED METHODS ๐ ๏ธ
$class->PUSHED([$mode,[$fh]]),$obj->POPPED([$fh]),$obj->UTF8($belowFlag,[$fh]),$obj->OPEN($path,$mode,[$fh]),$obj->BINMODE([$fh]),$obj->FDOPEN($fd,[$fh]),$obj->SYSOPEN($path,$imode,$perm,[$fh]),$obj->FILENO($fh),$obj->READ($buffer,$len,$fh),$obj->WRITE($buffer,$fh),$obj->FILL($fh),$obj->CLOSE($fh),$obj->SEEK($posn,$whence,$fh),$obj->TELL($fh),$obj->UNREAD($buffer,$fh),$obj->FLUSH($fh),$obj->SETLINEBUF($fh),$obj->CLEARERR($fh),$obj->ERROR($fh),$obj->EOF($fh)
- EXAMPLES ๐ก
- Example - a Hexadecimal Handle
PerlIO::via::QuotedPrint โ PerlIO layer for quoted-printable strings ๐ง
- SYNOPSIS โจ
- DESCRIPTION ๐
- EXPORTS ๐ค
- KNOWN BUGS ๐
- FEEDBACK ๐ฌ
- SEE ALSO ๐
- ACKNOWLEDGEMENTS ๐ซถ
- AVAILABILITY ๐ฆ
- INSTALLATION ๐ง
- AUTHOR โ๏ธ
- COPYRIGHT ยฉ๏ธ
- LICENCE ๐
- VERSION ๐ท๏ธ
- DATE ๐
- HISTORY ๐
Pod::Checker โ check pod documents for syntax errors ๐
The pod quality-control bestie. Here's the whole TOC:
- SYNOPSIS โจ
- OPTIONS/ARGUMENTS ๐๏ธ
podchecker()-warnings => val,-quiet => val
- DESCRIPTION ๐
- DIAGNOSTICS ๐ฉบ
- Errors ๐จ
- empty
=headn =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
=overN =overshould be: '=over' or '=over positive_number'=beginTARGET without matching=endTARGET=beginwithout a target?=endTARGET without matching=begin- '=end' without a target?
- '=end TARGET' is invalid
=endCONTENT doesn't match=beginTARGET=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=backARGUMENT=poddirectives shouldn't be over one line long! Ignoring all N lines of content=cutfound outside a pod block- Invalid
=encodingsyntax: CONTENT
- empty
- Errors ๐จ
โจ Warnings โจ
the lil red flags ๐ฉ Pod::Checker will absolutely clock you for โ every single one, no cap:
- nested commands
CMD<...CMD<...>...> - multiple occurrences (N) of link target name
- line containing nothing but whitespace in paragraph
=itemhas no contents- You can't have
=items(as at line N) unless the first thing after the=overis an=item - Expected
'=item EXPECTED VALUE' - Expected
'=item *' - Possible
=itemtype mismatch:'x'found leading a supposed definition=item - You have
'=item x'instead of the expected'=item N' - Unknown
Econtent inE<CONTENT> - empty
=over/=backblock - empty section in previous paragraph
- Verbatim paragraph in NAME section
=headnwithout preceding higher level- A non-empty
Z<>
๐ Hyperlinks ๐
- ignoring leading/trailing whitespace in link
- alternative text/node
'%s'contains non-escaped|or/
๐ RETURN VALUE ๐
it's giving "go read the real page, bestie" โ this section has its own whole moment in the full docs ๐
๐ EXAMPLES ๐
yep, examples live here. iconic behaviour fr.
๐ SCRIPTS ๐
this one's got its own section too. lowkey important.
๐ INTERFACE ๐
the whole method squad ๐ซถ โ every last one of them:
end_B, end_C, end_Document, end_F, end_I, end_L, end_Para, end_S, end_X, end_fcode, end_for, end_head, end_head1, end_head2, end_head3, end_head4, end_item, end_item_bullet, end_item_number, end_item_text, handle_pod_and_cut, handle_text, handle_whiteline, hyperlink, scream, start_B, start_C, start_Data, start_F, start_I, start_L, start_Para, start_S, start_Verbatim, start_X, start_fcode, start_for, start_head, start_head1, start_head2, start_head3, start_head4, start_item_bullet, start_item_number, start_item_text, start_over, start_over_block, start_over_bullet, start_over_empty, start_over_number, start_over_text, whine
and then the actual documented methods, each with its own lil heading in the real page โจ:
Pod::Checker->new( %options )$checker->poderror( @args ),$checker->poderror( {%opts}, @args )$checker->num_errors()$checker->num_warnings()$checker->name()$checker->node()$checker->idx()$checker->hyperlinks()line()type()page()node()
๐ AUTHOR ๐
(their section, their name, go look ๐ )
๐ธ Pod::Escapes โ for resolving Pod E<...> sequences ๐ธ
SYNOPSIS
DESCRIPTION
๐ GOODIES ๐
the lil treats you get handed:
e2char($e_content)e2charnum($e_content)$Name2character{name}$Name2character_number{name}$Latin1Code_to_fallback{integer}$Latin1Char_to_fallback{character}$Code2USASCII{integer}
CAVEATS
SEE ALSO
REPOSITORY
COPYRIGHT AND DISCLAIMERS
AUTHOR
๐ฆ Pod::Html โ module to convert pod files to HTML ๐ฆ
SYNOPSIS
DESCRIPTION
๐ FUNCTIONS ๐
pod2html
all the knobs and switches you can turn ๐ง:
backlinkcachedircssflushheaderhelphtmldirhtmlrootindexinfileoutfilepoderrorspodpathpodrootquietrecursetitleverbose
Formerly Exported Auxiliary Functions
the OGs that used to be out here doing the most:
htmlify()(by default)anchorify()(upon request)relativize_url()(upon request)
ENVIRONMENT
AUTHOR
SEE ALSO
COPYRIGHT
๐ง Pod::Html::Util โ helper functions for Pod-Html ๐ง
SUBROUTINES
the whole helper squad, serving looks โจ:
process_command_line()usage()unixify()relativize_url()html_escape()htmlify()anchorify()trim_leading_whitespace()
๐ Pod::Man โ Convert POD data to formatted *roff input ๐
SYNOPSIS
DESCRIPTION
๐ CLASS METHODS ๐
new(ARGS) and the full roster of constructor-ish options โ every single one:
centerdateencodingerrorsfixedfixedboldfixeditalicfixedbolditalicguessworkfunctionsmanrefquotingvariableslanguagelquoterquotenamenourlsquotesreleasesectionstderrutf8
๐ INSTANCE METHODS ๐
output_fh(FH)output_string(REF)parse_file(PATH)parse_from_file(INPUT, OUTPUT)parse_from_filehandle(FH, OUTPUT)parse_lines(LINES[, ...[, undef]])parse_string_document(INPUT)
๐ ENCODING ๐
History
Testing results
[1][2][3]
๐ฉบ DIAGNOSTICS ๐ฉบ
the messages it will hit you with:
roff font should be 1 or 2 chars, not "%s"Invalid errors setting "%s"Invalid quote specification "%s"POD document had syntax errors
๐ฑ ENVIRONMENT ๐ฑ
PERL_COREPOD_MAN_DATESOURCE_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
the whole decision tree, bestie, spelled out:
- 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 to1) - Otherwise we try calling
$object->handle_unknown_option('n')(and we increment the error count by the return value of it) - If there's no
handle_unknown_option, then we just warn, and then increment the error counter
SEE ALSO
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 ๐ฅ
$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_seenSomeClass->filter( $filename );SomeClass->filter( *INPUT_FH );SomeClass->filter( \$document_content );
โจ SECONDARY METHODS โจ
$parser->parse_characters( SOMEVALUE )$parser->no_whining( SOMEVALUE )$parser->no_errata_section( SOMEVALUE )$parser->complain_stderr( SOMEVALUE )$parser->source_filename$parser->doc_has_started$parser->source_dead$parser->strip_verbatim_indent( SOMEVALUE )$parser->expand_verbatim_tabs( n )
๐ TERTIARY METHODS ๐
$parser->abandon_output_fh()$parser->abandon_output_string()$parser->accept_code( @codes )$parser->accept_codes( @codes )$parser->accept_directive_as_data( @directives )$parser->accept_directive_as_processed( @directives )$parser->accept_directive_as_verbatim( @directives )$parser->accept_target( @targets )$parser->accept_target_as_text( @targets )$parser->accept_targets( @targets )$parser->accept_targets_as_text( @targets )$parser->any_errata_seen()$parser->errata_seen()$parser->detected_encoding()$parser->encoding()$parser->parse_from_file( $source, $to )$parser->scream( @error_messages )$parser->unaccept_code( @codes )$parser->unaccept_codes( @codes )$parser->unaccept_directive( @directives )$parser->unaccept_directives( @directives )$parser->unaccept_target( @targets )$parser->unaccept_targets( @targets )$parser->version_report()$parser->whine( @error_messages )
ENCODING
SEE ALSO
SUPPORT
COPYRIGHT AND DISCLAIMERS
AUTHOR
the whole author squad, shoutout ๐ซถ:
- Allison Randal
allison@perl.org - Hans Dieter Pearcey
hdp@cpan.org - David E. Wheeler
dwheeler@cpan.org - Karl Williamson
khw@cpan.org - Gabor Szabo
szabgab@gmail.com - Shawn H Corey
SHCOREY at cpan.org
๐ฉบ Pod::Simple::Checker -- check the Pod syntax of a document ๐ฉบ
SYNOPSIS
DESCRIPTION
SEE ALSO
SUPPORT
COPYRIGHT AND DISCLAIMERS
AUTHOR
- Allison Randal
allison@perl.org - Hans Dieter Pearcey
hdp@cpan.org - David E. Wheeler
dwheeler@cpan.org
๐ Pod::Simple::Debug -- put Pod::Simple into trace/debug mode ๐
SYNOPSIS
DESCRIPTION
CAVEATS
GUTS
SEE ALSO
SUPPORT
COPYRIGHT AND DISCLAIMERS
AUTHOR
- Allison Randal
allison@perl.org - Hans Dieter Pearcey
hdp@cpan.org - David E. Wheeler
dwheeler@cpan.org
๐ค Pod::Simple::DumpAsText -- dump Pod-parsing events as text ๐ค
SYNOPSIS
DESCRIPTION
SEE ALSO
SUPPORT
COPYRIGHT AND DISCLAIMERS
AUTHOR
- Allison Randal
allison@perl.org - Hans Dieter Pearcey
hdp@cpan.org - David E. Wheeler
dwheeler@cpan.org
๐๏ธ Pod::Simple::DumpAsXML -- turn Pod into XML ๐๏ธ
SYNOPSIS
DESCRIPTION
SEE ALSO
SUPPORT
COPYRIGHT AND DISCLAIMERS
AUTHOR
- Allison Randal
allison@perl.org - Hans Dieter Pearcey
hdp@cpan.org - David E. Wheeler
dwheeler@cpan.org
๐ Pod::Simple::HTML โ convert Pod to HTML ๐
SYNOPSIS
DESCRIPTION
๐ป CALLING FROM THE COMMAND LINE ๐ป
๐ป CALLING FROM PERL ๐ป
Minimal code
More detailed example
๐ ๏ธ METHODS ๐ ๏ธ
html_csshtml_javascripttitle_prefixtitle_postfixhtml_header_before_titletop_anchorhtml_h_levelindexhtml_header_after_titlehtml_footer
SUBCLASSING
SEE ALSO
SUPPORT
COPYRIGHT AND DISCLAIMERS
ACKNOWLEDGEMENTS
AUTHOR
- Allison Randal
allison@perl.org - Hans Dieter Pearcey
hdp@cpan.org - David E. Wheeler
dwheeler@cpan.org
Pod::Simple::HTMLBatch - convert several Pod files to several HTML files
okay bestie, this one is the batch converter that turns several Pod files into several HTML files. It's giving factory energy. ๐ญโจ
SYNOPSIS
DESCRIPTION
FROM THE COMMAND LINE
MAIN METHODS
Here are the main methods, no cap:
$batchconv = Pod::Simple::HTMLBatch->new;$batchconv->batch_convert( indirs, outdir );$batchconv->batch_convert( undef , ...);$batchconv->batch_convert( q{@INC}, ...);$batchconv->batch_convert( \@dirs , ...);$batchconv->batch_convert( "somedir" , ...);$batchconv->batch_convert( 'somedir:someother:also' , ...);$batchconv->batch_convert( ... , undef );$batchconv->batch_convert( ... , 'somedir' );
ACCESSOR METHODS
Accessor methods, slay:
$batchconv->verbose( nonnegative_integer );$batchconv->index( true-or-false );$batchconv->contents_file( filename );$batchconv->contents_page_start( HTML_string );$batchconv->contents_page_end( HTML_string );$batchconv->add_css( $url );$batchconv->add_javascript( $url );$batchconv->css_flurry( true-or-false );$batchconv->javascript_flurry( true-or-false );$batchconv->no_contents_links( true-or-false );$batchconv->html_render_class( classname );$batchconv->search_class( classname );
NOTES ON CUSTOMIZATION
SEE ALSO
SUPPORT
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
JustPod is exactly what it says on the tin: just the Pod, the whole Pod, and nothing but the Pod. iconic ๐
SYNOPSIS
DESCRIPTION
SEE ALSO
SUPPORT
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
This one represents the "section" attributes of L codes. iykyk ๐
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
Turn those Pod::Simple events into method calls. methody energy. ๐
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
A pull-parser interface to parsing Pod. pull up ๐งฒ
SYNOPSIS
DESCRIPTION
METHODS
Methods go hard:
my $token = $parser->get_token$parser->unget_token( $token )$parser->unget_token( $token1, $token2, ... )$parser->set_source( $filename )$parser->set_source( $filehandle_object )$parser->set_source( \$document_source )$parser->set_source( \@document_lines )$parser->parse_file(...)$parser->parse_string_document(...)$parser->filter(...)$parser->parse_from_file(...)my $title_string = $parser->get_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
End-tokens from Pod::Simple::PullParser. The finale. ๐ฌ
SYNOPSIS
DESCRIPTION
$token->tagname$token->tagname(somestring)$token->tag(...)$token->is_tag(somestring) or $token->is_tagname(somestring)
SEE ALSO
SUPPORT
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
Start-tokens from Pod::Simple::PullParser. The opening act. ๐
SYNOPSIS
DESCRIPTION
$token->tagname$token->tagname(somestring)$token->tag(...)$token->is_tag(somestring) or $token->is_tagname(somestring)$token->attr(attrname)$token->attr(attrname, newvalue)$token->attr_hash
SEE ALSO
SEE ALSO
SUPPORT
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
Text-tokens from Pod::Simple::PullParser. The words, bestie. ๐
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
Tokens from Pod::Simple::PullParser. Token vibes. ๐๏ธ
SYNOPSIS
DESCRIPTION
$token->type$token->is_start$token->is_text$token->is_end$token->dump
SEE ALSO
SUPPORT
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
Format Pod as RTF. Rich Text Format, but make it Pod. fancy โจ
SYNOPSIS
DESCRIPTION
FORMAT CONTROL ATTRIBUTES
$parser->head1_halfpoint_size( halfpoint_integer );$parser->head2_halfpoint_size( halfpoint_integer );$parser->head3_halfpoint_size( halfpoint_integer );$parser->head4_halfpoint_size( halfpoint_integer );$parser->codeblock_halfpoint_size( halfpoint_integer );$parser->header_halfpoint_size( halfpoint_integer );$parser->normal_halfpoint_size( halfpoint_integer );$parser->no_proofing_exemptions( true_or_false );$parser->doc_lang( microsoft_decimal_language_code )
SEE ALSO
SUPPORT
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
Find POD documents in directory trees. Detective mode. ๐
SYNOPSIS
DESCRIPTION
CONSTRUCTOR
ACCESSORS
$search->inc( true-or-false );$search->verbose( nonnegative-number );$search->limit_glob( some-glob-string );$search->callback( \&some_routine );$search->laborious( true-or-false );$search->recurse( true-or-false );$search->shadows( true-or-false );$search->is_case_insensitive( true-or-false );$search->limit_re( some-regxp );$search->dir_prefix( some-string-value );$search->progress( some-progress-object );$name2path = $self->name2path;$path2name = $self->path2name;
MAIN SEARCH METHODS
"$search->survey( @directories )""name2path""path2name"
"$search->simplify_name( $str )""$search->find( $pod )""$search->find( $pod, @search_dirs )""$self->contains_pod( $file )"
SUPPORT
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
Parse Pod into a simple parse tree. Tree time. ๐ณ
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
Write a formatter as a Pod::Simple subclass. Main character energy. ๐
SYNOPSIS
DESCRIPTION
Pod::SimplePod::Simple::MethodyPod::Simple::PullParserPod::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_nameof Document - events with an
element_nameof Para - events with an
element_nameof B, C, F, or I - events with an
element_nameof S - events with an
element_nameof X - events with an
element_nameof L - events with an
element_nameof E or Z - events with an
element_nameof Verbatim - events with an
element_nameof head1 .. head4 - events with an
element_nameof encoding - events with an
element_nameof over-bullet - events with an
element_nameof over-number - events with an
element_nameof over-text - events with an
element_nameof over-block - events with an
element_nameof over-empty - events with an
element_nameof item-bullet - events with an
element_nameof item-number - events with an
element_nameof item-text - events with an
element_nameof for - events with an
element_nameof Data
More Pod::Simple Methods
"$parser->accept_targets( SOMEVALUE )""$parser->accept_targets_as_text( SOMEVALUE )""$parser->accept_codes( Codename, Codename... )""$parser->accept_directive_as_data( directive_name )""$parser->accept_directive_as_verbatim( directive_name )""$parser->accept_directive_as_processed( directive_name )""$parser->nbsp_for_S( BOOLEAN );""$parser->version_report()""$parser->pod_para_count()""$parser->line_count()""$parser->nix_X_codes( SOMEVALUE )""$parser->keep_encoding_directive( SOMEVALUE )""$parser->merge_text( SOMEVALUE )""$parser->code_handler( CODE_REF )""$parser->cut_handler( CODE_REF )""$parser->pod_handler( CODE_REF )""$parser->whiteline_handler( CODE_REF )""$parser->whine( linenumber, complaint string )""$parser->scream( linenumber, complaint string )""$parser->source_dead(1)""$parser->hide_line_numbers( SOMEVALUE )""$parser->no_whining( SOMEVALUE )""$parser->no_errata_section( SOMEVALUE )""$parser->complain_stderr( SOMEVALUE )""$parser->bare_output( SOMEVALUE )""$parser->preserve_whitespace( SOMEVALUE )""$parser->parse_empty_lists( SOMEVALUE )"
SEE ALSO
SUPPORT
COPYRIGHT AND DISCLAIMERS
AUTHOR
Allison Randal "allison@perl.org", Hans Dieter Pearcey "hdp@cpan.org", David E. Wheeler "dwheeler@cpan.org".
Pod::Simple::Text -- format Pod as plaintext
Format Pod as plaintext. No frills, just text. clean ๐งผ
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
Get the text content of Pod. Just the words, ma'am. ๐
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
Format Pod as validating XHTML. Validating, bestie. โ
SYNOPSIS
DESCRIPTION
Minimal code
โจ METHODS โจ
okay bestie, here's the full method lineup for this one โ every single one, we're not skipping a thing:
perldoc_url_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 subclassing toolkit, if you're feeling adventurous:
handle_texthandle_codeaccept_targets_as_html
โจ resolve_pod_page_link โจ
โจ resolve_man_page_link โจ
โจ idify โจ
โจ batch_mode_page_object_init โจ
โจ SEE ALSO โจ
โจ SUPPORT โจ
โจ COPYRIGHT AND DISCLAIMERS โจ
โจ ACKNOWLEDGEMENTS โจ
โจ AUTHOR โจ
- Allison Randal
"allison@perl.org", Hans Dieter Pearcey"hdp@cpan.org", David E. Wheeler"dwheeler@cpan.org"
๐ฆ Pod::Simple::XMLOutStream -- turn Pod into XML
it literally turns Pod into XML, that's the whole vibe, iconic.
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ SEE ALSO โจ
โจ ABOUT EXTENDING POD โจ
โจ SEE ALSO โจ
โจ SUPPORT โจ
โจ COPYRIGHT AND DISCLAIMERS โจ
โจ AUTHOR โจ
- Allison Randal
"allison@perl.org", Hans Dieter Pearcey"hdp@cpan.org", David E. Wheeler"dwheeler@cpan.org"
๐ Pod::Text - Convert POD data to formatted text
POD in, formatted text out, periodt.
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
๐ Encoding ๐
โจ CLASS METHODS โจ
new(ARGS)altcodeencodingerrorsguessworkquotingindentloosemarginnourlsquotessentencestderrutf8width
โจ INSTANCE METHODS โจ
output_fh(FH)output_string(REF)parse_file(PATH)parse_from_file(INPUT, OUTPUT)parse_from_filehandle(FH, OUTPUT)parse_lines(LINES[, ...[, undef]])parse_string_document(INPUT)
โจ FUNCTIONS โจ
pod2text([[-a,] [-NNN,]] INPUT[, OUTPUT])
โจ DIAGNOSTICS โจ
Bizarre space in itemItem called without tagCan't open %s for reading: %sInvalid errors setting "%s"Invalid quote specification "%s"POD document had syntax errors
โจ COMPATIBILITY โจ
โจ CAVEATS โจ
โจ AUTHOR โจ
โจ COPYRIGHT AND LICENSE โจ
โจ SEE ALSO โจ
๐ Pod::Text::Color - Convert POD data to formatted color ASCII text
color ASCII text, so aesthetic, so demure.
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ COMPATIBILITY โจ
โจ CAVEATS โจ
โจ AUTHOR โจ
โจ COPYRIGHT AND LICENSE โจ
โจ SEE ALSO โจ
๐ธ Pod::Text::Overstrike - Convert POD data to formatted overstrike text
overstrike text โ giving typewriter-chic, no notes.
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ BUGS โจ
โจ COMPATIBILITY โจ
โจ CAVEATS โจ
โจ AUTHOR โจ
โจ COPYRIGHT AND LICENSE โจ
โจ SEE ALSO โจ
๐ฆ Pod::Text::Termcap - Convert POD data to ASCII text with format escapes
format escapes in your ASCII text, fancy fr fr.
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ COMPATIBILITY โจ
โจ CAVEATS โจ
โจ AUTHOR โจ
โจ COPYRIGHT AND LICENSE โจ
โจ SEE ALSO โจ
๐ Pod::Usage - extracts POD documentation and shows usage information
โจ SYNOPSIS โจ
โจ ARGUMENTS โจ
every argument, bestie, all of them:
"-message"string"-msg"string"-exitval"value"-verbose"value"-sections"spec"-output"handle"-input"handle"-pathlist"string"-noperldoc""-perlcmd""-perldoc"path-to-perldoc"-perldocopt"string
๐ Formatting base class ๐
๐ Pass-through options ๐
โจ DESCRIPTION โจ
๐ Scripts ๐
โจ EXAMPLES โจ
๐ Recommended Use ๐
โจ CAVEATS โจ
โจ SUPPORT โจ
โจ AUTHOR โจ
โจ LICENSE โจ
โจ ACKNOWLEDGMENTS โจ
โจ SEE ALSO โจ
๐บ SDBM_File - Tied access to sdbm files
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
๐ Tie ๐
โจ EXPORTS โจ
โจ DIAGNOSTICS โจ
"sdbm store returned -1, errno 22, key "..." at ..."
โจ SECURITY WARNING โจ
โจ BUGS AND WARNINGS โจ
๐ฅ Safe - Compile and execute code in restricted compartments
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
- a new namespace
- an operator mask
โจ WARNING โจ
โจ METHODS โจ
permit (OP, ...)permit_only (OP, ...)deny (OP, ...)deny_only (OP, ...)trap (OP, ...),untrap (OP, ...)share (NAME, ...)share_from (PACKAGE, ARRAYREF)varglob (VARNAME)reval (STRING, STRICT)rdo (FILENAME)root (NAMESPACE)mask (MASK)wrap_code_ref (CODEREF)wrap_code_refs_within (...)
โจ RISKS โจ
the risky bits, be careful bestie:
- Memory
- CPU
- Snooping
- Signals
- State Changes
โจ AUTHOR โจ
๐ Scalar::List::Utils - A distribution of general-utility subroutines
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ MODULES โจ
List::UtilScalar::UtilSub::Util
๐ Scalar::Util - A selection of general-utility scalar subroutines
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
๐ Core Perl "builtin" Functions ๐
โจ FUNCTIONS FOR REFERENCES โจ
blessedrefaddrreftypeweakenunweakenisweak
โจ OTHER FUNCTIONS โจ
dualvarisdualisvstringlooks_like_numberopenhandlereadonlyset_prototypetainted
โจ DIAGNOSTICS โจ
Vstrings are not implemented in this version of perl
โจ KNOWN BUGS โจ
โจ SEE ALSO โจ
โจ COPYRIGHT โจ
๐ Search::Dict - look - search for key in dictionary file
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
๐ SelectSaver - save and restore selected file handle
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
๐ฆ SelfLoader - load functions only on demand
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
๐ The __DATA__ token ๐
๐ SelfLoader autoloading ๐
๐ Autoloading and package lexicals ๐
๐ SelfLoader and AutoLoader ๐
๐ __DATA__, __END__, and the FOOBAR::DATA filehandle ๐
๐ Classes and inherited methods ๐
โจ Multiple packages and fully qualified subroutine names โจ
โจ AUTHOR โจ
โจ COPYRIGHT AND LICENSE โจ
- a)
- b)
๐ Socket, "Socket" - networking constants and support functions
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ CONSTANTS โจ
โจ PF_INET, PF_INET6, PF_UNIX, ... โจ
โจ AF_INET, AF_INET6, AF_UNIX, ... โจ
โจ SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, ... โจ
โจ SOCK_NONBLOCK. SOCK_CLOEXEC โจ
โจ SOL_SOCKET โจ
โจ SO_ACCEPTCONN, SO_BROADCAST, SO_ERROR, ... โจ
โจ IP_OPTIONS, IP_TOS, IP_TTL, ... โจ
โจ IP_PMTUDISC_WANT, IP_PMTUDISC_DONT, ... โจ
โจ IPTOS_LOWDELAY, IPTOS_THROUGHPUT, IPTOS_RELIABILITY, ... โจ
โจ MSG_BCAST, MSG_OOB, MSG_TRUNC, ... โจ
โจ SHUT_RD, SHUT_RDWR, SHUT_WR โจ
โจ INADDR_ANY, INADDR_BROADCAST, INADDR_LOOPBACK, INADDR_NONE โจ
โจ IPPROTO_IP, IPPROTO_IPV6, IPPROTO_TCP, ... โจ
โจ TCP_CORK, TCP_KEEPALIVE, TCP_NODELAY, ... โจ
โจ IN6ADDR_ANY, IN6ADDR_LOOPBACK โจ
โจ IPV6_ADD_MEMBERSHIP, IPV6_MTU, IPV6_V6ONLY, ... โจ
โจ STRUCTURE MANIPULATORS โจ
sockaddr_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
โจ FUNCTIONS โจ
inet_atoninet_ntoainet_ptoninet_ntopgetaddrinfoflags => INT,family => INT,socktype => INT,protocol => INT,family => INT,socktype => INT,protocol => INT,addr => STRING,canonname => STRING,AI_PASSIVE,AI_CANONNAME,AI_NUMERICHOST
getnameinfoNI_NUMERICHOST,NI_NUMERICSERV,NI_NAMEREQD,NI_DGRAM,NIx_NOHOST,NIx_NOSERV
getaddrinfo() / getnameinfo()ERROR CONSTANTSEAI_AGAIN,EAI_BADFLAGS,EAI_FAMILY,EAI_NODATA,EAI_NONAME,EAI_SERVICE
โจ EXAMPLES โจ
- Lookup for
connect() - Making a human-readable string out of an address
- Resolving hostnames into IP addresses
- Accessing socket options
โจ AUTHOR โจ
๐พ Storable - persistence for Perl data structures
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ MEMORY STORE โจ
โจ ADVISORY LOCKING โจ
โจ SPEED โจ
โจ CANONICAL REPRESENTATION โจ
โจ CODE REFERENCES โจ
โจ FORWARD COMPATIBILITY โจ
- utf8 data
- restricted hashes
- huge objects
- files from future versions of
Storable
โจ ERROR REPORTING โจ
โจ WIZARDS ONLY โจ
๐ Hooks ๐
"STORABLE_freeze"obj, cloning"STORABLE_thaw"obj, cloning, serialized, .."STORABLE_attach"class, cloning, serialized
๐ Predicates ๐
"Storable::last_op_in_netorder""Storable::is_storing""Storable::is_retrieving"
๐ Recursion ๐
๐ Deep Cloning ๐
โจ Storable magic โจ
$info = Storable::file_magic( $filename )"version""version_nv""major""minor""hdrsize""netorder""byteorder""intsize""longsize""ptrsize""nvsize""file"$info = Storable::read_magic( $buffer )$info = Storable::read_magic( $buffer, $must_be_file )
โจ EXAMPLES โจ
โจ SECURITY WARNING โจ
โจ WARNING โจ
โจ REGULAR EXPRESSIONS โจ
โจ BUGS โจ
๐ 64 bit data in perl 5.6.0 and 5.6.1 ๐
โจ CREDITS โจ
โจ AUTHOR โจ
โจ SEE ALSO โจ
๐ง Sub::Util - A selection of utility subroutines for subs and CODE references
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ FUNCTIONS โจ
prototypeset_prototypesubnameset_subname
โจ AUTHOR โจ
โจ Symbol - manipulate Perl symbols and their names
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ BUGS โจ
๐ฅ๏ธ Sys::Hostname - Try every conceivable way to get hostname
every conceivable way, literally every single one, obsessed.
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ AUTHOR โจ
๐ Sys::Syslog - Perl interface to the UNIX syslog(3) calls
โจ VERSION โจ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ EXPORTS โจ
โจ FUNCTIONS โจ
openlog($ident, $logopt, $facility)syslog($priority, $message)syslog($priority, $format, @args)Notesetlogmask($mask_priority)setlogsock()Notecloselog()
โจ THE RULES OF SYS::SYSLOG โจ
โจ EXAMPLES โจ
โจ CONSTANTS โจ
๐ Facilities ๐
๐ Levels ๐
โจ DIAGNOSTICS โจ
"Invalid argument passed to setlogsock""eventlog passed to setlogsock, but no Win32 API available""no connection to syslog available""stream passed to setlogsock, but %s is not writable""stream passed to setlogsock, but could not find any device""tcp passed to setlogsock, but tcp service unavailable""syslog: expecting argument %s""syslog: invalid level/facility: %s""syslog: too many levels given: %s""syslog: too many facilities given: %s""syslog: level must be given""udp passed to setlogsock, but udp service unavailable""unix passed to setlogsock, but path not available"
โจ HISTORY โจ
โจ SEE ALSO โจ
๐ Other modules ๐
๐ Manual Pages ๐
๐ RFCs ๐
๐ Articles ๐
๐ Event Log ๐
โจ AUTHORS & ACKNOWLEDGEMENTS โจ
โจ BUGS โจ
โจ SUPPORT โจ
๐ Perl Documentation ๐
๐ MetaCPAN ๐
๐ Search CPAN ๐
๐ AnnoCPAN: Annotated CPAN documentation ๐
๐ CPAN Ratings ๐
๐ RT: CPAN's request tracker ๐
โจ COPYRIGHT โจ
โจ LICENSE โจ
๐งช TAP::Base - Base class that provides common functionality to TAP::Parser and TAP::Harness
โจ VERSION โจ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ METHODS โจ
๐ Class Methods ๐
๐จ TAP::Formatter::Base - Base class for harness output delegates
โจ VERSION โจ
โจ DESCRIPTION โจ
โจ SYNOPSIS โจ
โจ METHODS โจ
๐ Class Methods ๐
"verbosity""verbose""timer""failures""comments""quiet""really_quiet""silent""errors""directives""stdout""color""jobs""show_count"
๐ TAP::Formatter::Color - Run Perl test scripts with color
โจ VERSION โจ
โจ DESCRIPTION โจ
โจ SYNOPSIS โจ
โจ METHODS โจ
๐ Class Methods ๐
๐ฅ๏ธ TAP::Formatter::Console - Harness output delegate for default console output
โจ VERSION โจ
โจ DESCRIPTION โจ
โจ SYNOPSIS โจ
"open_test"
okay so we're still deep in the module list and we've just hit the TAP:: family โ the Test Anything Protocol squad, and bestie they are ICONIC ๐ every single one of these is a little building block for running and parsing test output, so let's get into it, no cap ๐ซถ
๐ TAP::Formatter::Console::ParallelSession
the harness output delegate for parallel console output โ yes bestie, it formats your parallel test output for the console ๐
- VERSION
- DESCRIPTION
- SYNOPSIS
- METHODS
- Class Methods
๐ธ TAP::Formatter::Console::Session
the harness output delegate for default console output ๐ซถ
- VERSION
- DESCRIPTION
clear_for_closeclose_testheaderresult
๐ฆ TAP::Formatter::File
the harness output delegate for file output โจ
- VERSION
- DESCRIPTION
- SYNOPSIS
open_test
๐ TAP::Formatter::File::Session
the harness output delegate for file output (yes, the sibling of the one above, they're a matching set ๐ )
- VERSION
- DESCRIPTION
- METHODS
result
close_test
๐ TAP::Formatter::Session
the abstract base class for harness output delegates ๐
- VERSION
- METHODS
- Class Methods
formatter,parser,name,show_count
- Class Methods
๐ฅ TAP::Harness
run test scripts with statistics โ this is the one, bestie, the whole point of the whole operation ๐
- VERSION
- DESCRIPTION
- SYNOPSIS
- METHODS
- Class Methods
verbosity,timer,failures,comments,show_count,normalize,lib,switches,test_args,color,exec,merge,sources,aggregator_class,version,formatter_class,multiplexer_class,parser_class,scheduler_class,formatter,errors,directives,ignore_exit,jobs,rules,rulesfiles,stdout,trap
- Class Methods
- Instance Methods
the source name of a test to run, a reference to a [ source name, display name ] array โ yes that's literally the whole sentence, we keep it ๐ซก
- CONFIGURING
- Plugins
Module::BuildExtUtils::MakeMakerprove
- WRITING PLUGINS
- Customize how TAP gets into the parser, Customize how TAP results are output from the parser
- SUBCLASSING
- Methods
newin TAP::Harness,runtestsin TAP::Harness,summaryin TAP::Harness
- Methods
- REPLACING
- SEE ALSO
๐ TAP::Harness::Beyond, Test::Harness::Beyond
Beyond make test โ going way past plain old make test, and honestly? obsessed ๐ง
- Beyond make test
- Saved State
- Parallel Testing
- Non-Perl Tests
- Mixing it up
- Rolling My Own
- Deeper Customisation
- Callbacks
- Parsing TAP
- Getting Support
๐ TAP::Harness::Env
parsing harness-related environmental variables where appropriate ๐ฑ it does exactly what it says on the tin, no more no less
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
create( \%args )
- ENVIRONMENTAL VARIABLES
HARNESS_PERL_SWITCHES,HARNESS_VERBOSE,HARNESS_SUBCLASS,HARNESS_OPTIONS,j<n>,c,a<file.tgz>,fPackage-With-Dashes,HARNESS_TIMER,HARNESS_COLOR,HARNESS_IGNORE_EXIT
โจ TAP::Object
the base class that provides common functionality to all TAP::* modules ๐
the mom friend of the family
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
๐ TAP::Parser
parse TAP output โ the parser itself, the moment, the icon ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
source,tap,exec,sources,callback,switches,test_args,spool,merge,grammar_class,result_factory_class,iterator_factory_class
- Class Methods
- Instance Methods
- INDIVIDUAL RESULTS
- Result types
- Version, Plan, Pragma, Test, Comment, Bailout, Unknown
- Common type methods
planmethodspragmamethodscommentmethodsbailoutmethodsunknownmethodstestmethods
- Result types
- 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
- Differences
- SUBCLASSING
- Parser Components
- option 1, option 2
- Parser Components
- ACKNOWLEDGMENTS
- Michael Schwern, Andy Lester, chromatic, GEOFFR, Shlomi Fish, Torsten Schoenfeld, Jerry Gay, Aristotle, Adam Kennedy, Yves Orton, Adrian Howard, Sean & Lil, Andreas J. Koenig, Florian Ragwitz, Corion, Mark Stosberg, Matt Kraai, David Wheeler, Alex Vandiver, Cosimo Streppone, Ville Skyttรค
- AUTHORS
- BUGS
- COPYRIGHT & LICENSE
๐ TAP::Parser::Aggregator
aggregate TAP::Parser results ๐๏ธ it gathers everything up like a little raccoon of test data
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- Summary methods
- failed, parse_errors, passed, planned, skipped, todo, todo_passed, wait, exit
- Failed tests, Parse errors, Bad exit or wait status
- See Also
๐ง TAP::Parser::Grammar
a grammar for the Test Anything Protocol. ๐ the rules of the TAP language, fr fr
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- TAP GRAMMAR
- SUBCLASSING
- SEE ALSO
๐ TAP::Parser::Iterator
the base class for TAP source iterators ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- SUBCLASSING
- Example
- SEE ALSO
๐ TAP::Parser::Iterator::Array
the iterator for array-based TAP sources ๐ฆ
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- ATTRIBUTION
- SEE ALSO
๐ TAP::Parser::Iterator::Process
the iterator for process-based TAP sources โ๏ธ
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- ATTRIBUTION
- SEE ALSO
๐ฆ TAP::Parser::Iterator::Stream
the iterator for filehandle-based TAP sources ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- ATTRIBUTION
- SEE ALSO
โจ TAP::Parser::IteratorFactory
figures out which SourceHandler objects to use for a given Source ๐ต๏ธ it's the matchmaker, it's giving yenta energy
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- SUBCLASSING
- Example
- AUTHORS
- ATTRIBUTION
- SEE ALSO
๐ฅ TAP::Parser::Multiplexer
multiplex multiple TAP::Parsers ๐ก many parsers, one stream, we love to see it
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- See Also
๐ TAP::Parser::Result
the base class for TAP::Parser output objects ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Boolean methods
is_plan,is_pragma,is_test,is_comment,is_bailout,is_version,is_unknown,is_yaml
- SUBCLASSING
- Example
- SEE ALSO
๐ TAP::Parser::Result::Bailout
the bailout result token. ๐จ when a test just screams and runs away
- VERSION
- DESCRIPTION
- OVERRIDDEN METHODS
as_string
- Instance Methods
๐ธ TAP::Parser::Result::Comment
the comment result token. ๐ฌ the little # side-notes of TAP
- VERSION
- DESCRIPTION
- OVERRIDDEN METHODS
as_string
- Instance Methods
๐ฆ TAP::Parser::Result::Plan
the plan result token. ๐บ๏ธ the "here's how many tests we're doing" token
- VERSION
- DESCRIPTION
- OVERRIDDEN METHODS
as_string,raw
- Instance Methods
๐ TAP::Parser::Result::Pragma
the TAP pragma token. ๐ช
- VERSION
- DESCRIPTION
- OVERRIDDEN METHODS
as_string,raw
- Instance Methods
๐ TAP::Parser::Result::Test
the test result token. โ the main character of the token lineup honestly
- VERSION
- DESCRIPTION
- OVERRIDDEN METHODS
- Instance Methods
๐ง TAP::Parser::Result::Unknown
the unknown result token. โ it's giving mystery, it's giving "what is this line"
- VERSION
- DESCRIPTION
- OVERRIDDEN METHODS
as_string,raw
๐ TAP::Parser::Result::Version
the TAP syntax version token. ๐ข
- VERSION
- DESCRIPTION
- OVERRIDDEN METHODS
as_string,raw
- Instance Methods
โจ TAP::Parser::Result::YAML
the YAML result token. ๐
- VERSION
- DESCRIPTION
- OVERRIDDEN METHODS
as_string,raw
- Instance Methods
๐ TAP::Parser::ResultFactory
the factory for creating TAP::Parser output objects ๐ญ
- SYNOPSIS
- VERSION
- DESCRIPTION
- METHODS
- Class Methods
- SUBCLASSING
- Example
- SEE ALSO
๐ TAP::Parser::Scheduler
schedule tests during parallel testing ๐๏ธ it decides who runs when, and bestie it has rules
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Rules data structure
- By default, all tests are eligible to be run in parallel. Specifying any of your own rules removes this one
- "First match wins". The first rule that matches a test will be the one that applies
- Any test which does not match a rule will be run in sequence at the end of the run
- The existence of a rule does not imply selecting a test. You must still specify the tests to run
- Specifying a rule to allow tests to run in parallel does not make the run in parallel. You still need specify the number of parallel "jobs" in your Harness object
- Instance Methods
๐ฆ TAP::Parser::Scheduler::Job
a single testing job. ๐งฉ one test, one job, one vibe
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- Attributes
๐ TAP::Parser::Scheduler::Spinner
a no-op job. ๐ it does nothing and that's literally the job description
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- SEE ALSO
๐ TAP::Parser::Source
a TAP source & meta data about it ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- AUTHORS
- SEE ALSO
๐ง TAP::Parser::SourceHandler
the base class for different TAP source handlers ๐๏ธ
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- SUBCLASSING
- Example
- AUTHORS
- SEE ALSO
๐ TAP::Parser::SourceHandler::Executable
stream output from an executable TAP source ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- SUBCLASSING
- Example
- SEE ALSO
โจ TAP::Parser::SourceHandler::File
stream TAP from a text file. ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- CONFIGURATION
- SUBCLASSING
- SEE ALSO
๐ TAP::Parser::SourceHandler::Handle
stream TAP from an IO::Handle or a GLOB. ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- SUBCLASSING
- SEE ALSO
๐ TAP::Parser::SourceHandler::Perl
stream TAP from a Perl executable ๐ช
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- SUBCLASSING
- Example
- SEE ALSO
๐ฆ TAP::Parser::SourceHandler::RawTAP
stream output from raw TAP in a scalar/array ref. ๐งช
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- SUBCLASSING
- SEE ALSO
๐ TAP::Parser::YAMLish::Reader
read YAMLish data from iterator ๐
- VERSION
- SYNOPSIS
- DESCRIPTION
- METHODS
- Class Methods
- Instance Methods
- AUTHOR
- SEE ALSO
- COPYRIGHT
TAP::Parser::YAMLish::Writer โ Write YAMLish data
okay so this lil guy's whole personality is writing out YAML-ish data. no cap. ๐
VERSIONSYNOPSISDESCRIPTIONMETHODSClass MethodsInstance Methods- a reference to a scalar to append YAML to, the handle of an open file, a reference to an array into which YAML will be pushed, a code reference
AUTHORSEE ALSOCOPYRIGHT
Term::ANSIColor โ Color screen output using ANSI escape sequences
the moment you've been waiting for, bestie โ COLOR for your terminal ๐ โจ it's giving rainbow vibes and we are obsessed.
SYNOPSISDESCRIPTIONSupported ColorsFunction Interfacecolor(ATTR[, ATTR ...]),colored(STRING, ATTR[, ATTR ...]),colored(ATTR-REF, STRING[, STRING...]),uncolor(ESCAPE),colorstrip(STRING[, STRING ...]),colorvalid(ATTR[, ATTR ...]),coloralias(ALIAS[, ATTR ...])
Constant InterfaceThe Color StackSupporting CLICOLOR
DIAGNOSTICSBad color mapping %s,Bad escape sequence %s,Bareword "%s" not allowed while "strict subs" in use,Cannot alias standard color %s,Cannot alias standard color %s in %s,Invalid alias name %s,Invalid alias name %s in %s,Invalid attribute name %s,Invalid attribute name %s in %s,Name "%s" used only once: possible typo,No comma allowed after filehandle,No name for escape sequence %s
ENVIRONMENTANSI_COLORS_ALIASES,ANSI_COLORS_DISABLED,NO_COLOR
COMPATIBILITYRESTRICTIONSNOTESAUTHORSCOPYRIGHT AND LICENSESEE ALSO
Term::Cap โ Perl termcap interface
the termcap plug ๐ฅ
SYNOPSISDESCRIPTIONMETHODS
Tgetent,OSPEED,TERMTpad,$string,$cnt,$FHTputs,$cap,$cnt,$FHTgoto,$cap,$col,$row,$FHTrequireEXAMPLESCOPYRIGHT AND LICENSEAUTHORSEE ALSO
Term::Complete โ Perl word completion module
word completion, the OG autocomplete energy โจ
SYNOPSISDESCRIPTION<tab>,^D,^U,<del>,<bs>
DIAGNOSTICSBUGSAUTHOR
Term::ReadLine โ Perl interface to various "readline" packages. If no real package is found, substitutes stubs instead of basic functions.
so if the real deal isn't around, this one just vibes with stubs instead of the actual functions. iconic fallback behaviour fr fr.
SYNOPSISDESCRIPTIONMinimal set of supported functions"ReadLine","new","readline","addhistory","IN","OUT","MinLine","findConsole",Attribs,"Features"
Additional supported functions"tkRunning","event_loop","ornaments","newTTY"
EXPORTSENVIRONMENT
Term::Table โ Format a header and rows into a table
making pretty lil tables, no more ugly columns ๐
DESCRIPTIONSYNOPSISINTERFACEOPTIONSheader => [ ... ],rows => [ [...], [...], ... ],collapse => $bool,max_width => $num,pad => $num,allow_overflow => $bool,sanitize => $bool,mark_tail => $bool,show_header => $bool,auto_columns => $bool,no_collapse => [ $col_num_a, $col_num_b, ... ],no_collapse => [ $col_name_a, $col_name_b, ... ],no_collapse => { $col_num_a => 1, $col_num_b => 1, ... },no_collapse => { $col_name_a => 1, $col_name_b => 1, ... }
NOTE ON UNICODE/WIDE CHARACTERSSOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Term::Table::Cell โ Representation of a cell in a table.
one single cell, doing its little cell thing ๐
DESCRIPTIONSOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Term::Table::CellStack โ Combine several cells into one (vertical)
stacking cells vertically, main character energy ๐
DESCRIPTIONSOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Term::Table::HashBase โ Build hash based classes.
building hash-based classes, the way that it just works ๐ฆ
SYNOPSISDESCRIPTIONTHIS IS A BUNDLED COPY OF HASHBASEMETHODSPROVIDED BY HASH BASE$it = $class->new(%PAIRS),$it = $class->new(\%PAIRS),$it = $class->new(\@ORDERED_VALUES)
HOOKS$self->init()
ACCESSORSREAD/WRITEfoo(),set_foo(),FOO()
READ ONLYset_foo()
DEPRECATED SETTERset_foo()
NO SETTERNO READERCONSTANT ONLY
SUBCLASSINGGETTING A LIST OF ATTRIBUTES FOR A CLASS@list = Term::Table::HashBase::attr_list($class),@list = $class->Term::Table::HashBase::attr_list()
SOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Term::Table::LineBreak โ Break up lines for use in tables.
breaking up lines so your tables don't look a mess ๐ญ
DESCRIPTIONSYNOPSISSOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Term::Table::Util โ Utilities for Term::Table.
the lil helper toolbox ๐ง
DESCRIPTIONEXPORTSCONSTANTS$bool = USE_GCS,$bool = USE_TERM_READKEY
UTILITIES$width = term_size(),$width = uni_length($string)
SOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test โ provides a simple framework for writing test scripts
the classic, the blueprint, the moment ๐
SYNOPSISDESCRIPTIONQUICK START GUIDEFunctionsplan(...),"tests => number","todo => [1,5,14]","onfail => sub { ... }","onfail => \&some_sub"
_to_valueok(...)"skip(skip_if_true, args...)"TEST TYPESNORMAL TESTS,SKIPPED TESTS,TODO TESTS
ONFAILBUGS and CAVEATSENVIRONMENTNOTESEE ALSOAUTHOR
Test2 โ Framework for writing test tools that all work together.
the glow-up era of Perl testing โจ everything just plays nice together now.
DESCRIPTIONWHAT IS NEW?Easier to test new testing tools,Better diagnostics capabilities,Event driven,More complete API,Support for output other than TAP,Subtest implementation is more sane,Support for threading/forking
GETTING STARTED
Test2 โ This describes the namespace layout for the Test2 ecosystem. Not all the namespaces listed here are part of the Test2 distribution, some are implemented in Test2::Suite.
Test2::Tools::Test2::Plugin::Test2::Bundle::Test2::Require::Test2::Formatter::Test2::Event::Test2::Hub::Test2::IPC::Test2::Util::Test2::API::Test2::SEE ALSOCONTACTING USSOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::API โ Primary interface for writing Test2 based testing tools.
the main API entrance, bestie. this is where the Test2 tools get built ๐
***INTERNALS NOTE***DESCRIPTIONSYNOPSISWRITING A TOOLTESTING YOUR TOOLSOTHER API FUNCTIONS
ENVIRONMENT VARIABLESMAIN API EXPORTScontext(...)$ctx = context(),$ctx = context(%params),level => $int,wrapped => $int,stack => $stack,hub => $hub,on_init => sub { ... },on_release => sub { ... }
release($;$)release $ctx;,release $ctx, ...;
context_do(&;@)no_context(&;$)no_context { ... };,no_context { ... } $hid;
intercept(&)run_subtest(...)$NAME,\&CODE,$BUFFEREDor\%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 EXPORTSSTATUS AND INITIALIZATION STATE$bool = test2_init_done(),$bool = test2_load_done(),test2_set_is_end(),test2_set_is_end($bool),$bool = test2_get_is_end(),$stack = test2_stack(),$bool = test2_is_testing_done(),test2_ipc_disable,$bool = test2_ipc_disabled,test2_ipc_wait_enable(),test2_ipc_wait_disable(),$bool = test2_ipc_wait_enabled(),$bool = test2_no_wait(),test2_no_wait($bool),$fh = test2_stdout(),$fh = test2_stderr(),test2_reset_io()
BEHAVIOR HOOKStest2_add_callback_exit(sub { ... }),test2_add_callback_post_load(sub { ... }),test2_add_callback_testing_done(sub { ... }),test2_add_callback_context_acquire(sub { ... }),test2_add_callback_context_init(sub { ... }),test2_add_callback_context_release(sub { ... }),test2_add_callback_pre_subtest(sub { ... }),@list = test2_list_context_acquire_callbacks(),@list = test2_list_context_init_callbacks(),@list = test2_list_context_release_callbacks(),@list = test2_list_exit_callbacks(),@list = test2_list_post_load_callbacks(),@list = test2_list_pre_subtest_callbacks(),test2_add_uuid_via(sub { ... }),$sub = test2_add_uuid_via(),test2_add_pending_diag($diag),test2_add_pending_diag($diag1, $diag2),@diags = test2_get_pending_diags(),@diags = test2_clear_pending_diags()
IPC AND CONCURRENCY$bool = test2_has_ipc(),$ipc = test2_ipc(),test2_ipc_add_driver($DRIVER),@drivers = test2_ipc_drivers(),$bool = test2_ipc_polling(),test2_ipc_enable_polling(),test2_ipc_disable_polling(),test2_ipc_enable_shm(),test2_ipc_set_pending($uniq_val),$pending = test2_ipc_get_pending(),$timeout = test2_ipc_get_timeout(),test2_ipc_set_timeout($timeout)
MANAGING FORMATTERS$formatter = test2_formatter,test2_formatter_set($class_or_instance),@formatters = test2_formatters(),test2_formatter_add($class_or_instance)
TIME STAMPStest2_enable_trace_stamps(),test2_disable_trace_stamps(),$bool = test2_trace_stamps_enabled()
OTHER EXAMPLESSEE ALSOMAGICSOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::API::Breakage โ What breaks at what version
ngl this one's the "what's gonna break and when" mood board ๐
DESCRIPTIONFUNCTIONS%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()
SOURCEMAINTAINERS- Chad Granum <exodist@cpan.org>
AUTHORS- Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::API::Context โ Object to represent a testing context.
the context object, holding the whole vibe of a test run together ๐ซถ
DESCRIPTIONSYNOPSISCRITICAL DETAILSyou MUST always use the context() sub from Test2::API,You MUST always release the context when done with it,You MUST NOT pass context objects around,You MUST NOT store or cache a context for later,You SHOULD obtain your context as soon as possible in a given tool
METHODS ๐
okay so these are the $ctx methods, and the whole roster is giving main character energy โ no cap, every single one is here:
$ctx->done_testing;$clone = $ctx->snapshot()$ctx->release()$ctx->throw($message)$ctx->alert($message)$stack = $ctx->stack()$hub = $ctx->hub()$dbg = $ctx->trace()$ctx->do_in_context(\&code, @args);$ctx->restore_error_vars()$! = $ctx->errno()$? = $ctx->child_error()$@ = $ctx->eval_error()
EVENT PRODUCTION METHODS ๐
bestie this is the event-making squad, and the way that there are this many ways to make a pass/fail... iconic. Every single signature, exactly as written:
$event = $ctx->pass()$event = $ctx->pass($name)$true = $ctx->pass_and_release()$true = $ctx->pass_and_release($name)my $event = $ctx->fail()my $event = $ctx->fail($name)my $event = $ctx->fail($name, @diagnostics)my $false = $ctx->fail_and_release()my $false = $ctx->fail_and_release($name)my $false = $ctx->fail_and_release($name, @diagnostics)$event = $ctx->ok($bool, $name)$event = $ctx->ok($bool, $name, \@on_fail)$event = $ctx->note($message)$event = $ctx->diag($message)$event = $ctx->plan($max)$event = $ctx->plan(0, 'SKIP', $reason)$event = $ctx->skip($name, $reason);$event = $ctx->bail($reason)$event = $ctx->send_ev2(%facets)$event = $ctx->build_e2(%facets)$event = $ctx->send_ev2_and_release($Type, %parameters)$event = $ctx->send_event($Type, %parameters)$event = $ctx->build_event($Type, %parameters)$event = $ctx->send_event_and_release($Type, %parameters)
HOOKS ๐ช
(the manpage leaves this one empty, fr โ just vibes and a heading)
INIT HOOKS โจ
(also empty, bestie, we're just sitting here)
RELEASE HOOKS ๐ฆ
(yep. empty. not a single line.)
THIRD PARTY META-DATA ๐
(empty, no notes)
SOURCE ๐
(empty โ the source speaks for itself, iykyk)
MAINTAINERS ๐
- Chad Granum <exodist@cpan.org>
AUTHORS ๐
- Chad Granum <exodist@cpan.org>
- Kent Fredric <kentnl@cpan.org>
COPYRIGHT ๐
(nothing listed here, bestie)
Test2::API::Instance - Object used by Test2::API under the hood
the internals bestie, the machinery behind the curtain ๐
DESCRIPTION
(empty, no content listed)
SYNOPSIS
Okay so here's the full menu of $obj calls โ every single one, copied exact:
$pid = $obj->pid$obj->tid$obj->reset()$obj->load()$bool = $obj->loaded$arrayref = $obj->post_load_callbacks$obj->add_post_load_callback(sub { ... })$hashref = $obj->contexts()$arrayref = $obj->context_acquire_callbacks$arrayref = $obj->context_init_callbacks$arrayref = $obj->context_release_callbacks$arrayref = $obj->pre_subtest_callbacks$obj->add_context_init_callback(sub { ... })$obj->add_context_release_callback(sub { ... })$obj->add_pre_subtest_callback(sub { ... })$obj->set_exit()$obj->set_ipc_pending($val)$pending = $obj->get_ipc_pending()$timeout = $obj->ipc_timeout;$obj->set_ipc_timeout($timeout);$drivers = $obj->ipc_drivers$obj->add_ipc_driver($DRIVER_CLASS)$bool = $obj->ipc_polling$obj->enable_ipc_polling$obj->disable_ipc_polling$bool = $obj->no_wait$bool = $obj->set_no_wait($bool)$arrayref = $obj->exit_callbacks$obj->add_exit_callback(sub { ... })$bool = $obj->finalized$ipc = $obj->ipc$obj->ipc_disable$bool = $obj->ipc_disabled$stack = $obj->stack$formatter = $obj->formatter$bool = $obj->formatter_set()$obj->add_formatter($class)$obj->add_formatter($obj)$obj->set_add_uuid_via(sub { ... })$sub = $obj->add_uuid_via()
SOURCE
(empty, nothing here)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
Test2::API::InterceptResult - Representation of a list of events.
DESCRIPTION
(no content listed, just the heading)
SYNOPSIS
(empty, bestie โ the heading is doing all the work)
METHODS
CONSTRUCTION ๐ง
$events = Test2::API::InterceptResult->new(@EVENTS)$events = Test2::API::InterceptResult->new_from_ref(\@EVENTS)$clone = $events->clone()
NORMALIZATION ๐ธ
@events = $events->event_list$hub = $events->hub$state = $events->state$new = $events->upgrade$events->upgrade(in_place => $BOOL)$new = $events->squash_info$events->squash_info(in_place => $BOOL)
FILTERING ๐ฅ
in_place => $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
(empty)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
Test2::API::InterceptResult::Event - Representation of an event for use in testing other test tools.
DESCRIPTION
(empty, no content)
SYNOPSIS
(empty)
METHODS
!!! IMPORTANT NOTES ON DESIGN !!! โ ๏ธ
Okay bestie, this heading is literally shouting and that's on purpose โ pay attention here. Important design notes territory, do not skip.
ATTRIBUTES ๐
$hashref = $event->facet_data$class = $event->result_class
DUPLICATION ๐ฆ
$copy = $event->clone
CONDENSED MULTI-FACET DATA ๐
$bool = $event->causes_failure$bool = $event->causes_failSTRING_OR_EMPTY_LIST = $event->brief$hashref = $event->flatten$hashref = $event->flatten(include_subevents => 1)- always present
- Present if the event has a trace facet
- If an assertion is present
- If a plan is present:
- If amnesty facets are present
- If Info (note/diag) facets are present
- If error facets are present
- Present if the event is a subtest
- If a bail-out is being requested
$hashref = $event->summary()
DIRECT ARBITRARY FACET ACCESS ๐
@list_of_facets = $event->facet($name)$undef_or_facet = $event->the_facet($name)
TRACE FACET ๐
@list_of_facets = $event->trace$undef_or_hashref = $event->the_trace$undef_or_arrayref = $event->frame$undef_or_string = $event->trace_details$undef_or_string = $event->trace_package$undef_or_string = $event->trace_file$undef_or_integer = $event->trace_line$undef_or_string = $event->trace_subname$undef_or_string = $event->trace_tool$undef_or_string = $event->trace_signature
ASSERT FACET โจ
$bool = $event->has_assert$undef_or_hashref = $event->the_assert@list_of_facets = $event->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
(empty)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
Test2::API::InterceptResult::Hub - Hub used by InterceptResult.
SOURCE
(empty)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
Test2::API::InterceptResult::Squasher - Encapsulation of the algorithm that squashes diags into assertions.
squashing diags into assertions?? that's the whole personality right there ๐
DESCRIPTION
(empty, nothing listed)
SOURCE
(empty)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
Test2::API::Stack - Object to manage a stack of Test2::Hub instances.
***INTERNALS NOTE*** ๐
Heads up bestie โ this one is flagged as internals. Internals note, so tread carefully.
DESCRIPTION
(empty)
SYNOPSIS
(empty)
METHODS
$stack = Test2::API::Stack->new()$hub = $stack->new_hub()$hub = $stack->new_hub(%params)$hub = $stack->new_hub(%params, class => $class)$hub = $stack->top()$hub = $stack->peek()$stack->cull@hubs = $stack->all$stack->clear$stack->push($hub)$stack->pop($hub)
SOURCE
(empty)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
Test2::AsyncSubtest - Object representing an async subtest.
DESCRIPTION
(empty)
SYNOPSIS
(empty)
CONSTRUCTION
name => $name(required)send_to => $hub(optional)trace => $trace(optional)hub => $hub(optional)
METHODS
SIMPLE ACCESSORS ๐ธ
$bool = $ast->active$arrayref = $ast->children$arrayref = $ast->events$bool = $ast->finished$hub = $ast->hub$int = $ast->id$str = $ast->name$pid = $ast->pid$tid = $ast->tid$hub = $ast->send_to$arrayref = $ast->stack$trace = $ast->trace
INTERFACE ๐
$ast->attach($id)$id = $ast->cleave$ctx = $ast->context$ast->detach$ast->finish$ast->finish(%options)collapse => 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
(empty)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
Test2::AsyncSubtest::Event::Attach - Event to attach a subtest to the parent.
DESCRIPTION
(empty)
SOURCE
(empty)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
Test2::AsyncSubtest::Event::Detach - Event to detach a subtest from the parent.
DESCRIPTION
(empty)
SOURCE
(empty)
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(empty)
๐ฆ Test2::AsyncSubtest::Hub โ Hub used by async subtests
DESCRIPTION
SYNOPSIS
METHODS
$ast = $hub->ast
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
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 * bestie this one is old news, it's literally the old name for Test2::V0. Periodt. ๐
DESCRIPTION
SYNOPSIS
RESOLVING CONFLICTS WITH MOOSE
TAGS
:v1,:DEFAULT
RENAMING ON IMPORT
':v1', '!ok', ok => {-as => 'my_ok'}
PRAGMAS
STRICT
WARNINGS
UTF8
PLUGINS
SRAND
UTF8
EXIT SUMMARY
API FUNCTIONS
$ctx = context(),$events = intercept { ... }
TOOLS
TARGET
$CLASS,$class = CLASS()
DEFER
def $func => @args;,do_def()
BASIC
ok($bool, $name),pass($name),fail($name),diag($message),note($message),$todo = todo($reason),todo $reason => sub { ... },skip($reason, $count),plan($count),skip_all($reason),done_testing(),bail_out($reason)
COMPARE
is($got, $want, $name),isnt($got, $do_not_want, $name),like($got, qr/match/, $name),unlike($got, qr/mismatch/, $name),$check = match(qr/pattern/),$check = mismatch(qr/pattern/),$check = validator(sub { return $bool }),$check = hash { ... },$check = array { ... },$check = bag { ... },$check = object { ... },$check = meta { ... },$check = number($num),$check = string($str),$check = check_isa($class_name),$check = in_set(@things),$check = not_in_set(@things),$check = check_set(@things),$check = item($thing),$check = item($idx => $thing),$check = field($name => $val),$check = call($method => $expect),$check = call_list($method => $expect),$check = call_hash($method => $expect),$check = prop($name => $expect),$check = check($thing),$check = T(),$check = F(),$check = D(),$check = DF(),$check = E(),$check = DNE(),$check = FDNE(),$check = U(),$check = L(),$check = exact_ref($ref),end(),etc(),filter_items { grep { ... } @_ },$check = event $type => ..,@checks = fail_events $type => ..
CLASSIC COMPARE
cmp_ok($got, $op, $want, $name)
SUBTEST
subtest $name => sub { ... }
CLASS
can_ok($thing, @methods),isa_ok($thing, @classes),DOES_ok($thing, @roles)
ENCODING
set_encoding($encoding)
EXPORTS
imported_ok('function', '$scalar', ...),not_imported_ok('function', '$scalar', ...)
REF
ref_ok($ref, $type),ref_is($got, $want),ref_is_not($got, $do_not_want)
MOCK
$control = mock ..,$bool = mocked($thing)
EXCEPTION
$exception = dies { ... },$bool = lives { ... },$bool = try_ok { ... }
WARNINGS
$count = warns { ... },$warning = warning { ... },$warnings_ref = warnings { ... },$bool = no_warnings { ... }
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
๐ธ Test2::Bundle::More โ ALMOST a drop-in replacement for Test::More.
the word is ALMOST bestie, read it again ๐ญ
DESCRIPTION
SYNOPSIS
PLUGINS
TOOLS
ok($bool, $name),pass($name),fail($name),skip($why, $count),$todo = todo($why),diag($message),note($message),plan($count),skip_all($why),done_testing(),BAIL_OUT($why),is($got, $want, $name),isnt($got, $donotwant, $name),like($got, qr/match/, $name),unlike($got, qr/mismatch/, $name),is_deeply($got, $want, "Deep compare"),cmp_ok($got, $op, $want, $name),isa_ok($thing, @classes),can_ok($thing, @subs),subtest $name => sub { ... }
KEY DIFFERENCES FROM Test::More
- You cannot plan at import
- You have three subs imported for use in planning
isa_okaccepts different arguments
THESE FUNCTIONS AND VARIABLES HAVE BEEN REMOVED
$TODO,use_ok(),require_ok(),todo_skip(),eq_array(),eq_hash(),eq_set(),explain(),new_ok()
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
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),$build = get_build(),push_build($build),$build = pop_build($build),build($class, sub { ... }),$check = convert($thing),$check = convert($thing, $config),implicit_end => 1,use_regex => 1,use_code => 0,$check = strict_convert($thing),implicit_end => 1,use_code => 0,use_regex => 0,$compare = relaxed_convert($thing),implicit_end => 0,use_code => 1,use_regex => 1
WRITING A VARIANT OF IS/LIKE
compare(),\&convert,$delta
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
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.
the blueprint, the blueprint-er, the blueprint-est ๐
DESCRIPTION
SYNOPSIS
METHODS
$dclass = $check->delta_class,@deltas = $check->deltas(id => $id, exists => $bool, got => $got, convert => \&convert, seen => \%seen),@lines = $check->got_lines($got),$op = $check->operator(),$op = $check->operator($got),$bool = $check->verify(id => $id, exists => $bool, got => $got, convert => \&convert, seen => \%seen),$name = $check->name,$display = $check->render,$delta = $check->run(id => $id, exists => $bool, got => $got, convert => \&convert, seen => \%seen)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
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,$_,exists,operator,name
METHODS
$code = $cus->code,$name = $cus->name,$op = $cus->operator,$stringify = $cus->stringify_got,$bool = $cus->verify(got => $got, exists => $bool)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>, Daniel Bรถhmer <dboehmer@cpan.org>
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
file,line,package,subname,debug,tid,pid
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โ Andrew Grangaard<spazm@cpan.org>๐COPYRIGHTโ ๐ (that's the whole entry bestie, it's a short one)
๐ฆ Test2::Compare::Hash โ Representation of a hash in a deep comparison.
Okay so this page is the โจrepresentation of a hashโจ in a deep comparison. That's the whole vibe. Sections it rolls with, in order:
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐
Test2::Compare::Isa โ Check if the value is an instance of the class.
Exactly what it says on the tin: it checks whether the value is an instance of the class. Iconic behaviour honestly. Sections:
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>, TOYAMA Nao<nanto@moon.email.ne.jp>๐ธCOPYRIGHT
๐ Test2::Compare::Meta โ Check library for meta-checks
Meta-checks!! The library for them. Here's what it brings:
DESCRIPTIONDEFINED CHECKSโ the roster is:blessed,reftype,isa,this,size๐SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
โจ Test2::Compare::Negatable โ Poor mans 'role' for compare objects that can be negated.
A poor man's 'role', for compare objects that can be negated. Lowkey genius, highkey humble. ๐ซถ
DESCRIPTIONWHY?โ yes, the page literally has a section calledWHY?and honestly? fair.ATTRIBUTES$bool = $obj->negate$obj->set_negate($bool)$attr = NEGATE()
METHODS$clone = $obj->clone_negate()$obj->toggle_negate()
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Compare::Number โ Compare two values as numbers
Compares two values as numbers. No string shenanigans. ๐ฏ
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ง Test2::Compare::Object โ Representation of an object during deep comparison.
Representation of an object during deep comparison. It's giving main character energy of the whole deep-compare arc.
DESCRIPTIONMETHODS$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)
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Compare::OrderedSubset โ Internal representation of an ordered subset.
Internal representation of an ordered subset โ iykyk, it's not here to be your public API bestie.
DESCRIPTIONMETHODS$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)
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ฆ Test2::Compare::Pattern โ Use a pattern to validate values in a deep comparison.
Use a pattern to validate values in a deep comparison. Slay. ๐
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ฅ Test2::Compare::Ref โ Ref comparison
Ref comparison, periodt.
DESCRIPTIONSYNOPSISSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
โญ Test2::Compare::Regex โ Regex direct comparison
Regex direct comparison. Straight up, no detours.
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Compare::Scalar โ Representation of a Scalar Ref in deep comparisons
Representation of a Scalar Ref in deep comparisons. Yes, scalar refs get their own page, and yes, they deserve it. ๐ซถ
DESCRIPTIONSYNOPSISSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ธ Test2::Compare::Set โ Allows a field to be matched against a set of checks.
Allows a field to be matched against a set of checks. Multiple options? We love to see it.
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Compare::String โ Compare two values as strings
Compares two values as strings โ the number one's sibling but with totally different energy. ๐
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
โจ Test2::Compare::Undef โ Check that something is undefined
Checks that something is undef. Sometimes nothing is the whole point bestie. ๐
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Compare::Wildcard โ Placeholder check.
A placeholder check. It's literally there to hold the place. Iconic of it.
DESCRIPTIONSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ซถ Test2::Env โ Documentation for environment variables used or set by Test2.
Okay so this one is the docs for the environment variables that Test2 uses or sets. The whole page is basically a list of env-var sections, and here they all are, in order:
AUTHOR_TESTINGAUTOMATED_TESTINGEXTENDED_TESTINGHARNESS_ACTIVENONINTERACTIVE_TESTINGRELEASE_TESTINGT2_FORMATTERT2_IN_PRELOADTABLE_TERM_SIZETEST2_ACTIVETEST2_ENABLE_PLUGINSTEST_ACTIVETS_MAX_DELTA
And then the usual suspects:
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event โ Base class for events
The base class for events, aka the mother of all event types. This is a big one, so buckle up. ๐ฆ
DESCRIPTIONSYNOPSISMETHODSGENERAL$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-DATASOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::Bail โ Bailout!
Bailout! The dramatic exit of the event world. ๐ญ
DESCRIPTIONSYNOPSISMETHODS$reason = $e->reason
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::Diag โ Diag event type
The diag event type โ you know it, you've seen it in your TAP output. ๐
DESCRIPTIONSYNOPSISACCESSORS$diag->message
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::Encoding โ Set the encoding for the output stream
Sets the encoding for the output stream. Unlock the characters bestie. โจ
DESCRIPTIONSYNOPSISMETHODS$encoding = $e->encoding
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ฅ Test2::Event::Exception โ Exception event
The exception event. When things go sideways, this is the one showing up to tell you.
DESCRIPTIONSYNOPSISMETHODS$reason = $e->error
CAVEATSโ yes there are caveats, read them, don't skip. ๐SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::Fail โ Event for a simple failed assertion
The event for a simple failed assertion. It's giving "we don't always win and that's okay". ๐
DESCRIPTIONSYNOPSISSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
โญ Test2::Event::Generic โ Generic event type.
The generic event type โ fully customisable, every dial is yours to turn.
DESCRIPTIONSYNOPSISMETHODS$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)
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ง Test2::Event::Note โ Note event type
The note event type. Little FYI, no drama. ๐ธ
DESCRIPTIONSYNOPSISACCESSORS$note->message
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::Ok โ Ok event type
The ok event type. The one everybody wants to see. โจ
DESCRIPTIONSYNOPSISACCESSORS$rb = $e->pass$name = $e->name$b = $e->effective_pass
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::Pass โ Event for a simple passing assertion
The event for a simple passing assertion. Pure serotonin. ๐ซถ
DESCRIPTIONSYNOPSISSOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::Plan โ The event of a plan
The event of a plan. Every good test suite has one. ๐
DESCRIPTIONSYNOPSISACCESSORS$num = $plan->max$dir = $plan->directive$reason = $plan->reason
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ฆ Test2::Event::Skip โ Skip event type
The skip event type. Sometimes the move is to not do the thing, and that's valid. ๐
DESCRIPTIONSYNOPSISACCESSORS$reason = $e->reason
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::Subtest โ Event for subtest types
The event for subtest types. Events inside events, it's giving inception. ๐ฅ
DESCRIPTIONACCESSORS$arrayref = $e->subevents$bool = $e->buffered
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
โญ Test2::Event::TAP::Version โ Event for TAP version.
The event for the TAP version. โจ
DESCRIPTIONSYNOPSISMETHODS$version = $e->version
SOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>COPYRIGHT
๐ Test2::Event::V2 โ Second generation event.
The second generation event. Gen 2. The glow-up. ๐
DESCRIPTIONSYNOPSISUSING A CONTEXTUSING 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 METHODScauses_faildiagnosticsglobalincrements_countno_displaysets_plansubtest_idsummaryterminate
THIRD PARTY META-DATASOURCEMAINTAINERSโ Chad Granum<exodist@cpan.org>AUTHORSโ Chad Granum<exodist@cpan.org>
COPYRIGHT
Standard copyright block bestie, nothing new to see here ๐
๐ธ Test2::Event::Waiting - Tell all procs/threads it is time to be done
DESCRIPTION
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
๐ Test2::EventFacet - Base class for all event facets.
Like, the blueprint for every facet out there, fr fr.
DESCRIPTION
METHODS
$key = $facet_class->facet_key()
$bool = $facet_class->is_list()
$clone = $facet->clone()
$clone = $facet->clone(%replace)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
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
Okay so when you're building one of these bad boys, here's the tea you're working with:
- The number of tests that were planned
- The number of tests actually seen
- The number of tests which failed
- A boolean indicating whether or not the test suite passed
- A boolean indicating whether or not this call is for a subtest
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
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::Hub - The conduit through which all events flow.
SYNOPSIS
DESCRIPTION
COMMON TASKS
SENDING EVENTS
ALTERING OR REMOVING EVENTS
LISTENING FOR EVENTS
POST-TEST BEHAVIORS
SETTING THE FORMATTER
METHODS
$hub->send($event)
$hub->process($event)
$old = $hub->format($formatter)
$sub = $hub->listen(sub { ... }, %optional_params)
$hub->unlisten($sub)
$sub = $hub->filter(sub { ... }, %optional_params)
$sub = $hub->pre_filter(sub { ... }, %optional_params)
$hub->unfilter($sub)
$hub->pre_unfilter($sub)
$hub->follow_op(sub { ... })
$sub = $hub->add_context_acquire(sub { ... });
$hub->remove_context_acquire($sub);
$sub = $hub->add_context_init(sub { ... });
$hub->remove_context_init($sub);
$sub = $hub->add_context_release(sub { ... });
$hub->remove_context_release($sub);
$hub->cull()
$pid = $hub->pid()
$tid = $hub->tid()
$hud = $hub->hid()
$uuid = $hub->uuid()
$ipc = $hub->ipc()
$hub->set_no_ending($bool)
$bool = $hub->no_ending
$bool = $hub->active
$hub->set_active($bool)
STATE METHODS
$hub->reset_state()
$num = $hub->count
$num = $hub->failed
$bool = $hub->ended
$bool = $hub->is_passing
$hub->is_passing($bool)
$hub->plan($plan)
$plan = $hub->plan
$bool = $hub->check_plan
THIRD PARTY META-DATA
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
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)
๐ฆ Test2::IPC โ Turn on IPC for threading or forking support.
Okay so real talk, this module is the one that makes IPC (inter-process communication) go live so your forks and your threads can actually gossip with each other. You flip it on, the magic happens. โจ
โจ SYNOPSIS โจ
๐ DISABLING IT
There's a whole subsection on how to turn it back off, iykyk โ sometimes you genuinely want the silence.
๐ฆ EXPORTS ๐ฆ
cull()โ the one and only export, bestie. That's it.
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ธ Test2::IPC::Driver โ Base class for Test2 IPC drivers.
The blueprint. If you're writing an IPC driver, this is your parent class, periodt. ๐
โจ SYNOPSIS โจ
๐ ๏ธ METHODS ๐ ๏ธ
$self->abort($msg)$self->abort_trace($msg)
๐ LOADING DRIVERS ๐
๐ง WRITING DRIVERS ๐ง
๐ฅ METHODS SUBCLASSES MUST IMPLEMENT ๐ฅ
$ipc->is_viable$ipc->add_hub($hid)$ipc->drop_hub($hid)$ipc->send($hid, $event);$ipc->send($hid, $event, $global);@events = $ipc->cull($hid)$ipc->waiting()
๐ METHODS SUBCLASSES MAY IMPLEMENT OR OVERRIDE ๐
$ipc->driver_abort($msg)
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ Test2::IPC::Driver::Files โ Temp dir + Files concurrency model.
The default vibe: a temp directory plus files. It's giving "old reliable but make it filesystem." ๐๏ธ
๐ DESCRIPTION ๐
โจ SYNOPSIS โจ
๐ ENVIRONMENT VARIABLES ๐
T2_KEEP_TEMPDIR=0T2_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.
Your home base, bestie. Everything Test2 and Test2-Suite lives here. ๐ ๐
๐ DESCRIPTION ๐
โ๏ธ WRITING TESTS โ๏ธ
๐งฐ WRITING TOOLS ๐งฐ
๐ซ GUTS AND INNER WORKINGS ๐ซ
๐งต A NOTE ON CONCURRENCY (SUPPORT FOR FORKING AND THREADING) ๐งต
๐ค CONTRIBUTING ๐ค
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ Test2::Manual::Anatomy โ The hub for documentation of the inner workings of Test2 components.
Not me opening up Test2 and showing you the whole anatomy ๐ this is the master hub for all the guts-level docs.
๐ DESCRIPTION ๐
๐ END TO END ๐
โก EVENTS โก
๐ THE CONTEXT ๐
๐งฉ THE API AND THE API INSTANCE ๐งฉ
๐๏ธ HUBS ๐๏ธ
๐ก THE IPC SYSTEM ๐ก
๐ง INTERNAL UTILITIES ๐ง
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ Test2::Manual::Anatomy::API โ Internals documentation for the API.
The API, but zoomed all the way in. Internals o'clock. ๐ฌ
๐ DESCRIPTION ๐
๐ ๏ธ IMPLEMENTATION DETAILS ๐ ๏ธ
๐ซ Test2::API
๐ซ Test2::API::Instance
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ง Test2::Manual::Anatomy::Context โ Internals documentation for the Context objects.
The Context object is lowkey the main character of Test2 and I will not be taking questions. ๐
๐ DESCRIPTION ๐
๐ WHAT IS THE CONTEXT OBJECT? ๐
๐ฏ PRIMARY INTERFACE FOR TEST TOOLS ๐ฏ
๐ TRACK FILE AND LINE NUMBERS FOR ERROR REPORTING ๐
๐ก๏ธ PRESERVE $?, $!, $^E AND $@ ๐ก๏ธ
๐ FINALIZE THE API STATE ๐
๐ FIND/CREATE THE CURRENT/ROOT HUB ๐
๐ช PROVIDE HOOKS ๐ช
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ Test2::Manual::Anatomy::EndToEnd โ Overview of Test2 from load to finish.
The full journey, start to finish, no skipped steps. Buckle up bestie, we're doing the whole plot. ๐ฌ
๐ DESCRIPTION ๐
โ WHAT HAPPENS WHEN I LOAD THE API? โ
- A singleton instance of
Test2::API::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
Events, but from the inside. The lore. ๐โจ
๐ DESCRIPTION ๐
๐ฐ๏ธ HISTORY ๐ฐ๏ธ
๐ THE EVENT OBJECT ๐
๐ THE FACET API ๐
assert=>{details => $name, pass => $bool, no_debug => $bool, number => $maybe_int}about=>{details => $string, no_display => $bool, package => $pkg}amnesty=>[{details => $string, tag => $short_string, inherited => $bool}]control=>{details => $string, global => $bool, terminate => $maybe_int, halt => $bool, has_callback => $bool, encoding => $enc}errors=>[{details => $string, tag => $short_string, fail => $bool}]info=>[{details => $string, tag => $short_string, debug => $bool, important => $bool}]parent=>{details => $string, hid => $hid, children => [...], buffered => 1}plan=>{details => $string, count => $int, skip => $bool, none => $bool}trace=>{details => $string, frame => [$pkg, $file, $line, $sub], pid => $int, tid => $int, cid => $cid, hid => $hid, nested => $int, buffered => $bool}
๐ฆ CUSTOM FACETS ๐ฆ
$string = $facet_class->facet_key$bool = $facet_class->is_list
๐ง THE OLD API ๐ง
$bool = $e->causes_fail$bool = $e->increments_count$e->callback($hub)$num = $e->nested$bool = $e->global$code = $e->terminate$msg = $e->summary($count, $directive, $reason) = $e->sets_plan()$bool = $e->diagnostics$bool = $e->no_display
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐๏ธ Test2::Manual::Anatomy::Hubs โ Internals documentation for the hub stack, and hubs.
The hub stack, explained. This is where everything routes through, bestie. ๐ฆ
๐ DESCRIPTION ๐
๐ค WHAT IS A HUB? ๐ค
๐ฅ WHY DO WE HAVE A HUB STACK? ๐ฅ
- subtests
- testing your test tools
๐ฅ WHEN SHOULD I ADD A HUB TO THE STACK? ๐ฅ
๐บ๏ธ WHERE IS THE STACK? ๐บ๏ธ
๐ณ WHAT ABOUT THE ROOT HUB? ๐ณ
๐ก HOW DO HUBS HANDLE IPC? ๐ก
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ก Test2::Manual::Anatomy::IPC โ Manual for the IPC system.
The inter-process communication system, dissected. ๐ง โจ
๐ DESCRIPTION ๐
โ WHAT IS THE IPC SYSTEM
๐ HOW DOES THE IPC SYSTEM AFFECT EVERYTHING?
๐ WHAT DOES AN IPC DRIVER DO?
๐๏ธ HOW DOES THE DEFAULT IPC DRIVER WORK?
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ง Test2::Manual::Anatomy::Utilities โ Overview of utilities for Test2.
All the little helper modules that keep the whole thing running. The supporting cast that ate. ๐
๐ DESCRIPTION ๐
๐ซ Test2::Util
๐ซ Test2::Util::ExternalMeta
๐ซ Test2::Util::Facets2Legacy
๐ซ Test2::Util::HashBase
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐งต Test2::Manual::Concurrency โ Documentation for Concurrency support.
Forking AND threading, both. The chaos is organized, I promise. ๐ช๏ธ
๐ด FORKING ๐ด
๐ซ Test2
๐ซ Test::Builder
๐ซ Test2::Suite
๐ซ Test::SharedFork
๐ซ Others
๐งถ THREADING ๐งถ
๐ซ Test2
๐ซ Test::Builder
๐ซ Test2::Suite
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ค Test2::Manual::Contributing โ How to contribute to the Test2 project.
Want in? Obsessed, honestly. Here's how you help. ๐ซถ
๐ DESCRIPTION ๐
๐ ๏ธ WAYS TO HELP ๐ ๏ธ
๐ REPORT BUGS ๐
- Test2/Test-Builder/Test-More/test-more
- Test2-Harness
๐ค SUBMIT PATCHES ๐ค
๐ ADD/UPDATE DOCUMENTATION ๐
๐ฌ ANSWER QUESTIONS ON IRC/SLACK ๐ฌ
๐งฐ WRITE NEW TOOLS USING TEST2 ๐งฐ
๐ PORT OLD TOOLS TO TEST2 ๐
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ Test2::Manual::Testing โ Hub for documentation about writing tests with Test2.
Your testing bible, bestie. Everything about actually writing tests lives right here. ๐๐
๐ DESCRIPTION ๐
๐งญ Test2::Manual::Testing, When writing tests there are a couple namespaces to focus on:
Test2::Tools::*Test2::Plugins::*Test2::Bundle::*Test2::Require::*
๐ LISTING DEPENDENCIES ๐
๐ TUTORIALS ๐
๐ฑ SIMPLE/INTRODUCTION TUTORIAL ๐ฑ
๐ MIGRATING FROM TEST::BUILDER and TEST::MORE ๐
๐ง ADVANCED PLANNING ๐ง
๐ TODO TESTS ๐
๐ช SUBTESTS ๐ช
โ๏ธ COMPARISONS โ๏ธ
๐ฆ TESTING EXPORTERS ๐ฆ
๐๏ธ TESTING CLASSES ๐๏ธ
๐ชค TRAPPING ๐ชค
โณ DEFERRED TESTING โณ
๐ค MANAGING ENCODINGS ๐ค
๐ AUTO-ABORT ON FAILURE ๐
๐ฒ CONTROLLING RANDOM BEHAVIOR ๐ฒ
๐ WRITING YOUR OWN BUNDLE ๐
๐งฐ TOOLSET DOCUMENTATION ๐งฐ
๐ PLUGIN DOCUMENTATION ๐
๐ BUNDLE DOCUMENTATION ๐
๐ REQUIRE DOCUMENTATION ๐
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ฑ Test2::Manual::Testing::Introduction โ Introduction to testing with Test2.
Your very first test. So exciting. Let's gooo. ๐
๐ DESCRIPTION ๐
๐ BOILERPLATE ๐
๐ THE TEST FILE ๐
use Test2::V0;done_testing;
โ๏ธ DIST CONFIG โ๏ธ
โ MAKING ASSERTIONS โ
๐ RUNNING THE TEST ๐
๐ RUN DIRECTLY ๐
๐ USING YATH ๐
๐ USING PROVE ๐
๐๏ธ THE "PLAN" ๐๏ธ
done_testing()plan($COUNT)
๐งฐ ADDITIONAL ASSERTION TOOLS ๐งฐ
is($a, $b, $description)like($a, $b, $description)
๐ SEE ALSO ๐
๐ SOURCE
๐ MAINTAINERS
Chad Granum <exodist@cpan.org>
โ๏ธ AUTHORS
Chad Granum <exodist@cpan.org>
ยฉ๏ธ COPYRIGHT
๐ Test2::Manual::Testing::Migrating โ How to migrate existing tests from Test::More to Test2.
Moving your old Test::More tests over to Test2. It's giving glow-up, and honestly? Easier than you think. ๐ โจ
๐ DESCRIPTION ๐
๐ฐ๏ธ LEGACY TEST ๐ฐ๏ธ
๐ BOILERPLATE ๐
- Replace
Test::MorewithTest2::V0 - NOTE:
srand - Stop using
use_ok() - Stop using
require_ok() - Remove strict/warnings (optional)
- Change where the plan is set
โ SIMPLE ASSERTIONS โ
๐ TODO ๐
todo $reason => sub { ... }{ my $TODO = todo $reason; ... }- DEEP COMPARISONS
- COMPARING REFERENCES
- TOOLS THAT ARE GONE
- TOOLS THAT HAVE CHANGED
- FINAL VERSION
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank โ heading's there, body isn't, that's just how it is)
๐ Test2::Manual::Testing::Planning โ The many ways to set a plan.
okay so this one is literally about plans, bestie. here's what's inside:
- DESCRIPTION
- TEST COUNT
- DONE TESTING
- SKIP ALL
- CUSTOM PLAN EVENT
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Manual::Testing::Todo โ Tutorial for marking tests as TODO.
- DESCRIPTION
- THE TOOL
- TODO BLOCK
- TODO VARIABLE
- MANUAL TODO EVENTS
- HOW THE TODO TOOLS WORK UNDER THE HOOD
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ฆ Test2::Manual::Tooling โ Manual page for tool authors.
- DESCRIPTION
- TOOL TUTORIALS
- FIRST TOOL
- MOVING FROM Test::Builder
- NESTING TOOLS
- TOOLS WITH SUBTESTS
- TESTING YOUR TEST TOOLS
- PLUGIN TUTORIALS
- TAKING ACTION WHEN A NEW TOOL STARTS
- TAKING ACTION AFTER A TOOL IS DONE
- TAKING ACTION AT THE END OF TESTING
- TAKING ACTION JUST BEFORE EXIT
- WRITING A SIMPLE JSONL FORMATTER
- WHERE TO FIND HOOKS AND APIS
- global API, In hubs
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
โจ Test2::Manual::Tooling::FirstTool โ Write your first tool with Test2.
- DESCRIPTION
- COMPLETE CODE UP FRONT
- LINE BY LINE
sub ok($;$@) {my ($bool, $name, @diag) = @_;my $ctx = context();return $ctx->pass_and_release($name) if $bool;return $ctx->fail_and_release($name, @diag);
- CONTEXT OBJECT DOCUMENTATION
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ธ Test2::Manual::Tooling::Formatter โ How to write a custom formatter, in our case a JSONL formatter.
- DESCRIPTION
- COMPLETE CODE UP FRONT
- LINE BY LINE
use base qw/Test2::Formatter/;sub new { bless {}, shift }sub encoding {};sub write { ... }my ($self, $e, $num, $f) = @_;$self$e$num$f$f ||= $e->facet_data;print encode_json($f), "\n";
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ง Test2::Manual::Tooling::Nesting โ Tutorial for using other tools within your own.
- DESCRIPTION
- NAIVE WAY
- WHATS WRONG WITH IT?
- HOW TO FIX IT
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ฅ Test2::Manual::Tooling::Plugin::TestExit โ How to safely add pre-exit behaviors.
- DESCRIPTION
- COMPLETE CODE UP FRONT
- LINE BY LINE
use Test2::API qw{test2_add_callback_exit};test2_add_callback_exit(sub { ... });my ($ctx, $orig_code, $new_exit_code_ref) = @_return if $orig_code == 42$$new_exit_code_ref = 42
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Manual::Tooling::Plugin::TestingDone โ Run code when the test file is finished, or when done_testing is called.
- DESCRIPTION
- COMPLETE CODE UP FRONT
- LINE BY LINE
use Test2::API qw{test2_add_callback_testing_done};test2_add_callback_testing_done(sub { ... });ok(!$some_global, '$some_global was not set')print "The test file is done, or done_testing was just called\n"
- UNDER THE HOOD
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Manual::Tooling::Plugin::ToolCompletes โ How to add behaviors that occur when a tool completes work.
- DESCRIPTION
- COMPLETE CODE UP FRONT
- LINE BY LINE
use Test2::API qw{test2_add_callback_context_release};test2_add_callback_context_release(sub { ... })my $ctx_ref = shiftprint "Context was released\n"
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ซถ Test2::Manual::Tooling::Plugin::ToolStarts โ How to add behaviors that occur when a tool starts work.
- DESCRIPTION
- COMPLETE CODE UP FRONT
- LINE BY LINE
use Test2::API qw{test2_add_callback_context_init test2_add_callback_context_acquire};test2_add_callback_context_acquire(sub { ... })my $params_ref = 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
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
โญ Test2::Manual::Tooling::Subtest โ How to implement a tool that makes use of subtests.
- DESCRIPTION
- WHICH TYPE OF SUBTEST DO I NEED?
- SUBTEST WITH USER SUPPLIED CODEREF
@args\%paramsbuffered => $boolinherit_trace => $boolno_fork => $bool
- SUBTEST WITH TOOL-SIDE CODEREF
- SUBTEST WITH USER SUPPLIED CODEREF
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Manual::Tooling::TestBuilder โ This section maps Test::Builder methods to Test2 concepts.
- DESCRIPTION
- CONTEXT
- TEST BUILDER METHODS
$tb->BAIL_OUT($reason)$tb->diag($string)$tb->note($string)$tb->done_testing$tb->like$tb->unlike$tb->ok($bool, $name)$tb->subtest$tb->todo_start$tb->todo_end$tb->output$tb->failure_output- and
$tb->todo_output
- LEVEL
- TODO
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Manual::Tooling::Testing โ Tutorial on how to test your testing tools.
- DESCRIPTION
- THE HOLY GRAIL OF TESTING YOUR TOOLS
- ADDITIONAL HELPERS
Test2::Tools::TesterTest2::Tools::HarnessTesterTest2::Tools::Compareevent $TYPE => ..fail_events $TYPE => ..
- SEE ALSO
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Mock โ Module for managing mocked classes and instances.
- DESCRIPTION
- SYNOPSIS
- CONSTRUCTION
- METHODS
$mock = Test2::Mock->new(class => $CLASS, ...)$mock->track($bool)$hashref = $mock->sub_tracking$arrayref = $mock->call_tracking$mock->clear_sub_tracking()$mock->clear_sub_tracking(\@subnames)$mock->clear_call_tracking()$mock->add('symbol' => ..., 'symbol2' => ...)$mock->override('symbol1' => ..., 'symbol2' => ...)$mock->set('symbol1' => ..., 'symbol2' => ...)$mock->restore($SYMBOL)$mock->reset($SYMBOL)$mock->orig($SYMBOL)$mock->current($SYMBOL)$mock->reset_all$mock->add_constructor($NAME => $TYPE)$mock->override_constructor($NAME => $TYPE)$mock->before($NAME, sub { ... })$mock->after($NAME, sub { ... })$mock->around($NAME, sub { ... })$mock->autoload$mock->block_load$pm_file = $mock->file$bool = $mock->purge_on_destroy($bool)$stash = $mock->stash$class = $mock->class$p = $mock->parent$c = $mock->child
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Plugin โ Documentation for plugins
- DESCRIPTION
- FAQ Should I subclass Test2::Plugin?
- HOW DO I WRITE A PLUGIN?
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐จ Test2::Plugin::BailOnFail โ Automatically bail out of testing on the first test failure.
- DESCRIPTION
- SYNOPSIS
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Plugin::DieOnFail โ Automatically die on the first test failure.
- DESCRIPTION
- SYNOPSIS
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Plugin::ExitSummary โ Add extra diagnostics on failure at the end of the test.
- DESCRIPTION
- SYNOPSIS
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ฒ Test2::Plugin::SRand โ Control the random seed for more controlled test environments.
- DESCRIPTION
- SYNOPSIS
- NOTE ON LOAD ORDER
- CAVEATS
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
โฑ๏ธ Test2::Plugin::Times โ Output timing data at the end of the test.
- CAVEAT
- DESCRIPTION
- SYNOPSIS
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Plugin::UTF8 โ Test2 plugin to test with utf8.
- DESCRIPTION
- SYNOPSIS
- import options
- encoding_only
- NOTES
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ Test2::Require โ Base class and documentation for skip-unless type test packages.
- DESCRIPTION
- HOW DO I WRITE A 'REQUIRE' MODULE?
- AS A SUBCLASS
- STAND-ALONE
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐งโ๐ป Test2::Require::AuthorTesting โ Only run a test when the AUTHOR_TESTING environment variable is set.
- DESCRIPTION
- SYNOPSIS
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ค Test2::Require::AutomatedTesting โ Only run a test when the AUTOMATED_TESTING environment variable is set.
- DESCRIPTION
- SYNOPSIS
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
๐ฑ Test2::Require::EnvVar โ Only run a test when a specific environment variable is set.
- DESCRIPTION
- SYNOPSIS
- SOURCE
- MAINTAINERS
- AUTHORS
- COPYRIGHT
๐ MAINTAINERS Chad Granum<exodist@cpan.org>ยท AUTHORS Chad Granum<exodist@cpan.org>ยท COPYRIGHT (blank)
Test2::Require::ExtendedTesting ๐
Only run a test when the EXTENDED_TESTING environment variable is set. Like, if your env var isn't set, the whole file just... doesn't go. Bye bestie ๐
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Require::Fork ๐ด
Skip a test file unless the system supports forking. No fork? No test. Simple as ๐
DESCRIPTION
SYNOPSIS
EXPLANATION
SEE ALSO
Test2::Require::RealFork,Test2::Require::Threads
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Require::Module ๐ฆ
Skip tests if certain packages are not installed, or insufficient versions. She's the bouncer at the door โ no package, no entry, no version, no entry ๐ชโจ
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Require::NonInteractiveTesting ๐
Only run a test when the NONINTERACTIVE_TESTING environment variable is set. Same energy as its sibling, different env var, zero drama.
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Require::Perl ๐ช
Skip the test unless the necessary version of Perl is installed. If your perl is too vintage for the vibe, the test file just sits this one out ๐
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Require::RealFork ๐งฌ
Skip a test file unless the system supports true forking. Emphasis on true forking, okay? She has standards ๐
DESCRIPTION
SYNOPSIS
SEE ALSO
Test2::Require::Fork,Test2::Require::Threads
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Require::ReleaseTesting ๐
Only run a test when the RELEASE_TESTING environment variable is set. Release-time behaviour only, bestie. Everyone else can go home ๐
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Require::Threads ๐งต
Skip a test file unless the system supports threading. No threads, no test, and honestly? Respect the boundary ๐ซถ
DESCRIPTION
SYNOPSIS
EXPLANATION
SEE ALSO
Test2::Require::Fork,Test2
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Suite ๐
Distribution with a rich set of tools built upon the Test2 framework. This is the whole treasure chest, babe โ bundles, tools, plugins, the works. Main character distribution energy ๐ฅ
DESCRIPTION
WHAT ARE TOOLS, PLUGINS, AND BUNDLES?
TOOLS, PLUGINS, BUNDLES
INCLUDED BUNDLES
Test2::V#,Extended,More,Simple
INCLUDED TOOLS
Basic,Compare,ClassicCompare,Class,Defer,Encoding,Exports,Mock,Ref,Spec,Subtest,Target
INCLUDED PLUGINS
BailOnFail,DieOnFail,ExitSummary,SRand,UTF8
INCLUDED REQUIREMENT CHECKERS
AuthorTesting,EnvVar,Fork,RealFork,Module,Perl,Threads
SEE ALSO
CONTACTING US
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Todo ๐
TODO extension for Test2. The "yeah I know it's broken, it's on the list" wrapper ๐
DESCRIPTION
SYNOPSIS
CONSTRUCTION OPTIONS
reason(required)hub(optional)
INSTANCE METHODS
$todo->end
CLASS METHODS
$count = Test2::Todo->hub_in_todo($hub)
OTHER NOTES
How it works
$todo->end is called at destruction
Can I use multiple instances?
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Tools ๐งฐ
Documentation for Tools. The meta-doc, the lore, the behind-the-scenes of how tools get built ๐
DESCRIPTION
FAQ
- Why is it called
Test2::Tools, and notTest2::Tool? - Should my tools subclass
Test2::Tools?
HOW DO I WRITE A 'TOOLS' MODULE?
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Tools::AsyncSubtest ๐ฆ
Tools for writing async subtests. Subtests that run off in their own little world, then come back and tell you everything ๐ธ
DESCRIPTION
SYNOPSIS
EXPORTS
$ast = async_subtest $name$ast = async_subtest $name => sub { ... }$ast = async_subtest $name => \%hub_params, sub { ... }$ast = fork_subtest $name => sub { ... }$ast = fork_subtest $name => \%hub_params, sub { ... }$ast = thread_subtest $name => sub { ... }$ast = thread_subtest $name => \%hub_params, sub { ... }
NOTES
- Async Subtests are always buffered
- Do not use
done_testing()yourself
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Tools::Basic ๐
Test2 implementation of the basic testing tools. The classics, but glow-up'd for Test2 โจ
DESCRIPTION
SYNOPSIS
EXPORTS
PLANNING
plan($num)plan('tests' => $num)plan('skip_all' => $reason)skip_all($reason)done_testingbail_out($reason)
ASSERTIONS
ok($bool)ok($bool, $name)ok($bool, $name, @diag)pass()pass($name)fail()fail($name)fail($name, @diag)
DIAGNOSTICS
diag(@messages)note(@messages)
META
$todo = todo($reason)todo $reason => sub { ... }skip($why)skip($why, $count)
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Tools::Class ๐๏ธ
Test2 implementation of the tools for testing classes. Is it a class? Does it do the thing? Does it do the role? Let's find out, bestie ๐
DESCRIPTION
SYNOPSIS
EXPORTS
can_ok($thing, @methods)can_ok($thing, \@methods, $test_name)isa_ok($thing, @classes)isa_ok($thing, \@classes, $test_name)DOES_ok($thing, @roles)DOES_ok($thing, \@roles, $test_name)
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Tools::ClassicCompare ๐ฐ๏ธ
Classic (Test::More style) comparison tools. Old money, but make it Test2 ๐
DESCRIPTION
SYNOPSIS
EXPORTS
$bool = is($got, $expect)$bool = is($got, $expect, $name)$bool = is($got, $expect, $name, @diag)$bool = isnt($got, $dont_expect)$bool = isnt($got, $dont_expect, $name)$bool = isnt($got, $dont_expect, $name, @diag)$bool = like($got, $pattern)$bool = like($got, $pattern, $name)$bool = like($got, $pattern, $name, @diag)$bool = unlike($got, $pattern)$bool = unlike($got, $pattern, $name)$bool = unlike($got, $pattern, $name, @diag)$bool = is_deeply($got, $expect)$bool = is_deeply($got, $expect, $name)$bool = is_deeply($got, $expect, $name, @diag)cmp_ok($got, $op, $expect)cmp_ok($got, $op, $expect, $name)cmp_ok($got, $op, $expect, $name, @diag)
And the whole lil operator squad it supports, exactly as listed:
!= (num), >= (num), <= (num), > (num), <
(num), <=> (num), eq (str), ne (str), gt (str), lt (str), ge
(str), le (str), cmp (str), !~ (str), &&, ||, xor, or, and, //, &,
|, ~~
SOURCE
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Test2::Tools::Compare ๐
Tools for comparing deep data structures. This is the big one. Deep structures, builders on builders, checks on checks. She ate and left no crumbs ๐
DESCRIPTION
SYNOPSIS
ADVANCED
COMPARISON TOOLS
$bool = is($got, $expect)$bool = is($got, $expect, $name)$bool = is($got, $expect, $name, @diag)$bool = isnt($got, $expect)$bool = isnt($got, $expect, $name)$bool = isnt($got, $expect, $name, @diag)$bool = like($got, $expect)$bool = like($got, $expect, $name)$bool = like($got, $expect, $name, @diag)$bool = unlike($got, $expect)$bool = unlike($got, $expect, $name)$bool = unlike($got, $expect, $name, @diag)
QUICK CHECKS
$check = T()$check = F()$check = D()$check = U()$check = DF()$check = E()$check = DNE()$check = FDNE()$check = L()
VALUE SPECIFICATIONS
$check = string "..."$check = !string "..."$check = number ...;$check = !number ...;$check = number_lt ...;$check = number_le ...;$check = number_ge ...;$check = number_gt ...;$check = float ...;$check = !float ...;$check = within($num, $tolerance);$check = !within($num, $tolerance);$check = rounded($num, $precision);$check = !rounded($num, $precision);$check = bool ...;$check = !bool ...;$check = check_isa ...;$check = !check_isa ...;$check = match qr/.../$check = !mismatch qr/.../$check = !match qr/.../$check = mismatch qr/.../$check = validator(sub{ ... })$check = validator($NAME => sub{ ... })$check = validator($OP, $NAME, sub{ ... })$check = exact_ref($ref)
SET BUILDERS
my $check = check_set($check1, $check2, ...)my $check = in_set($check1, $check2, ...)not_in_set($check1, $check2, ...)check $thing
HASH BUILDER
$check = hash { ... }field $NAME => $VALfield $NAME => $CHECKall_keys($CHECK1, $CHECK2, ...)all_vals($CHECK1, $CHECK2, ...)all_values($CHECK1, $CHECK2, ...)end()etc()DNE()
ARRAY BUILDER
$check = array { ... }item $VALitem $CHECKitem $IDX, $VALitem $IDX, $CHECKfilter_items { my @remaining = @_; ...; return @filtered }all_items($CHECK1, $CHECK2, ...)end()etc()DNE()
BAG BUILDER
$check = bag { ... }item $VALitem $CHECKall_items($CHECK1, $CHECK2, ...)end()etc()
ORDERED SUBSET BUILDER
$check = subset { ... }item $VALitem $CHECK
META BUILDER
meta { ... }meta_check { ... }prop $NAME => $VALprop $NAME => $CHECK'blessed''reftype''isa''this''size'
OBJECT BUILDER
$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
Bestie, these are the lil' event-makers you can call โจ
$check = event $TYPE;$check = event $TYPE => sub { ... };$check = event $TYPE => { ... };- and the field keys you can pass:
'file','line','package','subname','skip','todo','trace','tid','pid' @checks = fail_events $TYPE;@checks = fail_events $TYPE => sub { ... };@checks = fail_events $TYPE => { ... };
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(The page doesn't spell out any copyright text right here โ that's just how it is ๐ )
๐ฆ Test2::Tools::Defer โ Write tests that get executed at a later time
DESCRIPTION
SYNOPSIS
EXPORTS
def function => @args;do_def()
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Nothing written out under this one either โ empty, iconic, moving on โจ)
๐ธ Test2::Tools::Encoding โ Tools for managing the encoding of Test2 based tests.
DESCRIPTION
SYNOPSIS
EXPORTS
set_encoding($encoding)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Blank here too, bestie ๐ซถ)
๐ Test2::Tools::Event โ Tools for generating test events.
DESCRIPTION
EXPORTS
$e = gen_event($TYPE)$e = gen_event($TYPE, %FIELDS)$e = gen_event 'Ok';$e = gen_event Ok => ( ... )$e = gen_event '+Test2::Event::Ok' => ( ... )
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(No copyright text listed right here ๐)
๐ฅ Test2::Tools::Exception โ Test2 based tools for checking exceptions
DESCRIPTION
SYNOPSIS
EXPORTS
$e = dies { ... }$bool = lives { ... }$bool = try_ok { ... }$bool = try_ok { ... } "Test Description"
DIFFERENCES FROM TEST::FATAL
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Empty again, and that's fine ๐)
โญ Test2::Tools::Exports โ Tools for validating exporters.
DESCRIPTION
SYNOPSIS
EXPORTS
imported_ok(@SYMBOLS)not_imported_ok(@SYMBOLS)
CAVEATS
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Nothing spelled out here ๐)
๐ง Test2::Tools::GenTemp โ Tool for generating a populated temp directory.
DESCRIPTION
SYNOPSIS
EXPORTS
gen_temp(file => 'content', subdir => [ sub_dir_file => 'content', ...], ...)gen_temp(-tempdir => \@TEMPDIR_ARGS, file => 'content', subdir => [ sub_dir_file => 'content', ...], ...)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Blank, bestie ๐ธ)
๐ซถ Test2::Tools::Grab โ Temporarily intercept all events without adding a scope level.
DESCRIPTION
SYNOPSIS
EXPORTS
$grab = grab()
SEE ALSO
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(No text here either โจ)
๐ Test2::Tools::Mock โ Class/Instance mocking for Test2.
DESCRIPTION
SYNOPSIS
EXPORTS
DEFAULT
mock@mocks = mocked($object)@mocks = mocked($class)$mock = mock $class => ( ... );$mock = mock $instance => ( ... )$mock = mock 'class', $class => ( ... )$obj = mock()$obj = mock { ... }$obj = mock 'obj', ...;mock $mock => sub { ... }mock $method => ( ... )
BY REQUEST
$obj = mock_obj( ... )$obj = mock_obj { ... } => ( ... )$obj = mock_obj sub { ... }$obj = mock_obj { ... } => sub { ... }$mock = mock_class $class => ( ... )$mock = mock_class $instance => ( ... )$mock = mock_class ... => sub { ... }mock_build $mock => sub { ... }$mock = mock_building()mock_do $method => $args$sub = mock_accessor $field$sub = mock_getter $field$sub = mock_setter $field%pairs = mock_accessors(qw/name1 name2 name3/)%pairs = mock_getters(qw/name1 name2 name3/)%pairs = mock_setters(qw/name1 name2 name3/)
MOCK CONTROL OBJECTS
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Nothing listed right here, no cap ๐)
๐ Test2::Tools::Ref โ Tools for validating references.
DESCRIPTION
SYNOPSIS
EXPORTS
ref_ok($thing)ref_ok($thing, $type)ref_ok($thing, $type, $name)ref_is($ref1, $ref2, $name)ref_is_not($ref1, $ref2, $name)
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Blank, and we move on ๐)
๐ Test2::Tools::Refcount, "Test2::Tools::Refcount" โ assert reference counts on objects
SYNOPSIS
DESCRIPTION
FUNCTIONS
is_refcount
is_oneref
refcount
EXAMPLE
BUGS
Temporaries created on the stack
ACKNOWLEDGEMENTS
AUTHOR
๐ Test2::Tools::Spec โ RSPEC implementation on top of Test2::Workflow
DESCRIPTION
SYNOPSIS
EXPORTS
NAMEPARAMSflat => $boolasync => $booliso => $booltodo => $reasonskip => $reasonCODEREF
ESSENTIALS
tests NAME => sub { ... }tests NAME => \%paramssub { ... }tests($NAME, \%PARAMS, \&CODE)it NAME => sub { ... }it NAME => \%paramssub { ... }it($NAME, \%PARAMS, \&CODE)case NAME => sub { ... }case NAME => \%paramssub { ... }case($NAME, \%PARAMS, \&CODE)before_each NAME => sub { ... }before_each NAME => \%paramssub { ... }before_each($NAME, \%PARAMS, \&CODE)before_case NAME => sub { ... }before_case NAME => \%paramssub { ... }before_case($NAME, \%PARAMS, \&CODE)before_all NAME => sub { ... }before_all NAME => \%paramssub { ... }before_all($NAME, \%PARAMS, \&CODE)around_each NAME => sub { ... }around_each NAME => \%paramssub { ... }around_each($NAME, \%PARAMS, \&CODE)around_case NAME => sub { ... }around_case NAME => \%paramssub { ... }around_case($NAME, \%PARAMS, \&CODE)around_all NAME => sub { ... }around_all NAME => \%paramssub { ... }around_all($NAME, \%PARAMS, \&CODE)after_each NAME => sub { ... }after_each NAME => \%paramssub { ... }after_each($NAME, \%PARAMS, \&CODE)after_case NAME => sub { ... }after_case NAME => \%paramssub { ... }after_case($NAME, \%PARAMS, \&CODE)after_all NAME => sub { ... }after_all NAME => \%paramssub { ... }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
(Empty in the source, so empty here ๐)
๐ง 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
(Nothing spelled out here ๐)
๐ธ Test2::Tools::Target โ Alias the testing target package.
DESCRIPTION
SYNOPSIS
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Blank, bestie โจ)
๐ Test2::Tools::Tester โ Tools to help you test other testing tools.
DESCRIPTION
SYNOPSIS
EXPORTS
$array_ref = filter $events => $PACKAGE$array_ref = filter $events => $PACKAGE1, $PACKAGE2$array_ref = filter $events => qr/match/$array_ref = filter $events => qr/match/, $PACKAGE$grouped = group_events($events)$arrayref = facets TYPE => $events
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(No copyright text right here ๐)
๐ Test2::Tools::Tiny โ Tiny set of tools for unfortunate souls who cannot use Test2::Suite.
DESCRIPTION
USE Test2::Suite INSTEAD
EXPORTS
ok($bool, $name)ok($bool, $name, @diag)is($got, $want, $name)is($got, $want, $name, @diag)isnt($got, $do_not_want, $name)isnt($got, $do_not_want, $name, @diag)like($got, $regex, $name)like($got, $regex, $name, @diag)unlike($got, $regex, $name)unlike($got, $regex, $name, @diag)is_deeply($got, $want, $name)is_deeply($got, $want, $name, @diag)diag($msg)note($msg)skip_all($reason)todo $reason => sub { ... }plan($count)done_testing()$warnings = warnings { ... }$exception = exception { ... }tests $name => sub { ... }$output = capture { ... }
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Empty, moving on ๐ซถ)
๐ฅ Test2::Tools::Warnings โ Tools to verify warnings.
DESCRIPTION
SYNOPSIS
EXPORTS
$count = warns { ... }$warning = warning { ... }$warnings_ref = warnings { ... }$bool = no_warnings { ... }
SOURCE
MAINTAINERS
- Chad Granum <exodist@cpan.org>
AUTHORS
- Chad Granum <exodist@cpan.org>
COPYRIGHT
(Nothing written out right here โญ)
๐ฆ Test2::Transition โ Transition notes when upgrading to Test2
DESCRIPTION
THINGS THAT BREAK
- Test::Builder1.5/2 conditionals
- Replacing the Test::Builder singleton
- Directly Accessing Hash Elements
- Subtest indentation
DISTRIBUTIONS THAT BREAK OR NEED TO BE UPGRADED
WORKS BUT TESTS WILL FAIL
- Test::DBIx::Class::Schema
- Device::Chip
UPGRADE SUGGESTED
- Test::Exception
- Data::Peek
- circular::require
- Test::Module::Used
- Test::Moose::More
- Test::FITesque
- Test::Kit
- autouse
NEED TO UPGRADE
- Test::SharedFork
- Test::Builder::Clutch
- Test::Dist::VersionSync
- Test::Modern
- Test::UseAllModules
- Test::More::Prefix
STILL BROKEN
- Test::Aggregate
- Test::Wrapper
- Test::ParallelSubtest
- Test::Pretty
- Net::BitTorrent
- Test::Group
- Test::Flatten
- Log::Dispatch::Config::TestLog
- Test::Able
MAKE ASSERTIONS -> SEND EVENTS
LEGACY
TEST2
ok($bool, $name)diag(@messages)note(@messages)subtest($name, $code)
WRAP EXISTING TOOLS
LEGACY
TEST2
USING UTF8
LEGACY
TEST2
AUTHORS, CONTRIBUTORS AND REVIEWERS
- Chad Granum (EXODIST) <exodist@cpan.org>
๐พ SOURCE ๐พ
๐ MAINTAINER ๐
Chad Granum <exodist@cpan.org> โ bestie holds the whole thing down, no cap ๐
๐ COPYRIGHT ๐
๐งฐ Test2::Util โ Tools used by Test2 and friends. ๐งฐ
๐ DESCRIPTION ๐
๐ EXPORTS ๐
($success, $error) = try { ... }โ wraps the code block, catches what it throws ๐ซถprotect { ... }โ shields your block, fr frCAN_FORKCAN_REALLY_FORKCAN_THREADUSE_THREADSget_tidmy $file = pkg_to_file($package)โ package name in, file path out โจ$string = ipc_separator()$string = gen_uid()โ unique id generator, iconic($ok, $err) = do_rename($old_name, $new_name)($ok, $err) = do_unlink($filename)
๐ซฃ NOTES && CAVEATS ๐ซฃ
- Devel::Cover โ yeah this one's a whole vibe, pay attention
๐พ SOURCE ๐พ
๐ MAINTAINERS ๐
Chad Granum <exodist@cpan.org>
๐ AUTHORS ๐
Chad Granum <exodist@cpan.org>, Kent Fredric <kentnl@cpan.org> โ duo, slay ๐
๐ 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()โ snatch those events bestie ๐ซด
๐ ๏ธ METHODS ๐ ๏ธ
$grab = $class->new()$ar = $grab->flush()$ar = $grab->events()$ar = $grab->finish()$hub = $grab->hub()
๐ ENDING BEHAVIOR ๐
๐ SEE ALSO ๐
๐พ SOURCE ๐พ
๐ MAINTAINERS ๐
Chad Granum <exodist@cpan.org>
๐ AUTHORS ๐
Chad Granum <exodist@cpan.org>
๐ COPYRIGHT ๐
๐ก๏ธ Test2::Util::Guard โ Inline copy of Scope::Guard ๐ก๏ธ
๐ SEE ALSO ๐
โ๏ธ ORIGINAL AUTHOR โ๏ธ
chocolateboy <chocolate@cpan.org> โ the blueprint, the blueprint ๐
๐ง INLINE AND MODIFICATION AUTHOR ๐ง
Chad Granum <exodist@cpan.org>
๐ 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()โ yeah it's deprecated bestie, don't @ me ๐
๐ซ NO SETTER ๐ซ
๐ NO READER ๐
๐ง CONSTANT ONLY ๐ง
๐งฌ SUBCLASSING ๐งฌ
๐ GETTING A LIST OF ATTRIBUTES FOR A CLASS ๐
@list = Test2::Util::HashBase::attr_list($class)@list = $class->Test2::Util::HashBase::attr_list()
๐พ SOURCE ๐พ
๐ MAINTAINERS ๐
Chad Granum <exodist@cpan.org>
๐ AUTHORS ๐
Chad Granum <exodist@cpan.org>
๐ 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)โ what kind of ref is this, bestie? ๐$addr_str = render_ref($ref)โ pretty it up โจ
๐พ SOURCE ๐พ
๐ MAINTAINERS ๐
Chad Granum <exodist@cpan.org>
๐ AUTHORS ๐
Chad Granum <exodist@cpan.org>, Kent Fredric <kentnl@cpan.org>
๐ COPYRIGHT ๐
๐ก Test2::Util::Sig โ Signal tools used by Test2 and friends. ๐ก
๐ DESCRIPTION ๐
๐ EXPORTS ๐
($ok, $err) = try_sig_mask { ... }SIGINTSIGALRMSIGHUPSIGTERMSIGUSR1SIGUSR2
๐พ 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(...)โ the main character of this module, honestly ๐header => [ ... ]rows => [ [...], [...], ... ]collapse => $boolmax_width => $numsanitize => $boolmark_tail => $bool
my $cols = term_size()โ how wide is your terminal, bestie ๐
๐ NOTE ON UNICODE/WIDE CHARACTERS ๐
๐พ SOURCE ๐พ
๐ MAINTAINERS ๐
Chad Granum <exodist@cpan.org>
๐ AUTHORS ๐
Chad Granum <exodist@cpan.org>
๐ 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. ๐
๐ 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::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, no cap ๐ง
โจ SOURCE โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ AUTHORS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test2::Workflow::Build โ represents a build in progress, slay ๐๏ธ
โจ SOURCE โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ AUTHORS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test2::Workflow::Runner โ runs the workflows, periodt ๐โโ๏ธ
โจ SOURCE โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ AUTHORS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test2::Workflow::Task โ encapsulation of a Task, iykyk ๐ฆ
โจ SOURCE โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ AUTHORS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test2::Workflow::Task::Action โ encapsulation of an action, bestie ๐
โจ SOURCE โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ AUTHORS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test2::Workflow::Task::Group โ encapsulation of a group (describe), fr fr ๐
โจ SOURCE โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ AUTHORS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test::Builder โ backend for building test libraries, the moment ๐
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
- Construction
new,create,subtest,name,reset
- Setting up tests
plan,expected_tests,no_plan,done_testing,has_plan,skip_all,exported_to
- Running tests
ok,is_eq,is_num,isnt_eq,isnt_num,like,unlike,cmp_ok
- Other Testing Methods
BAIL_OUT,skip,todo_skip,skip_rest
- Test building utility methods
maybe_regex,is_fh
โจ Test style โจ
level,use_numbers,no_diag,no_ending,no_header
โจ Output โจ
diag,note,explain,output,failure_output,todo_output,reset_outputs,carp,croak
โจ Test Status and Info โจ
no_log_results,current_test,is_passing,summary,details,todo,find_TODO,in_todo,todo_start,"todo_end",caller
โจ EXIT CODES โจ
โจ THREADS โจ
โจ MEMORY โจ
โจ EXAMPLES โจ
โจ SEE ALSO โจ
- INTERNALS
- LEGACY
- EXTERNAL
โจ AUTHORS โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test::Builder::Formatter โ Test::Builder subclass of Test2::Formatter::TAP, iconic ๐จ
โจ DESCRIPTION โจ
โจ SYNOPSIS โจ
โจ SOURCE โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ AUTHORS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test::Builder::Module โ base class for test modules, the blueprint ๐งฑ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
- Importing
โจ Builder โจ
โจ SEE ALSO โจ
Test::Builder::Tester โ test testsuites that have been built with Test::Builder, periodt ๐งช
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ Functions โจ
test_out,test_err
โจ test_fail โจ
โจ test_diag โจ
โจ test_test, title (synonym 'name', 'label'), skip_out, skip_err โจ
โจ line_num โจ
โจ color โจ
โจ BUGS โจ
โจ AUTHOR โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ NOTES โจ
โจ SEE ALSO โจ
Test::Builder::Tester::Color โ turn on colour in Test::Builder::Tester, slay ๐
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ AUTHOR โจ
โจ BUGS โจ
โจ SEE ALSO โจ
Test::Builder::TodoDiag โ Test::Builder subclass of Test2::Event::Diag, no cap ๐
โจ DESCRIPTION โจ
โจ SYNOPSIS โจ
โจ SOURCE โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ AUTHORS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test::Harness โ run Perl standard test scripts with statistics, the whole vibe ๐
โจ VERSION โจ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ FUNCTIONS โจ
runtests( @test_files )execute_tests( tests => \@test_files, out => \*FH )
โจ EXPORT โจ
โจ ENVIRONMENT VARIABLES THAT TAP::HARNESS::COMPATIBLE SETS โจ
"HARNESS_ACTIVE","HARNESS_VERSION"
โจ ENVIRONMENT VARIABLES THAT AFFECT TEST::HARNESS โจ
"HARNESS_PERL_SWITCHES","HARNESS_TIMER","HARNESS_VERBOSE","HARNESS_OPTIONS","j<n>","c","a<file.tgz>","fPackage-With-Dashes","HARNESS_SUBCLASS","HARNESS_SUMMARY_COLOR_SUCCESS","HARNESS_SUMMARY_COLOR_FAIL"
โจ Taint Mode โจ
โจ SEE ALSO โจ
โจ BUGS โจ
โจ AUTHORS โจ
โจ LICENCE AND COPYRIGHT โจ
Test::More โ yet another framework for writing test scripts, bestie ๐
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
- I love it when a plan comes together
โจ done_testing โจ
โจ Test names โจ
โจ I'm ok, you're not ok. โจ
ok
โจ is, isnt โจ
โจ like โจ
โจ unlike โจ
โจ cmp_ok โจ
โจ can_ok โจ
โจ isa_ok โจ
โจ new_ok โจ
โจ subtest โจ
โจ pass, fail โจ
โจ Module tests โจ
require_ok
โจ use_ok โจ
โจ Complex data structures โจ
is_deeply
โจ Diagnostics โจ
diag,note
โจ explain โจ
โจ Conditional tests โจ
SKIP: BLOCK
โจ TODO: BLOCK, todo_skip โจ
โจ When do I use SKIP vs. TODO? โจ
โจ Test control โจ
BAIL_OUT
โจ Discouraged comparison functions โจ
eq_array
โจ eq_hash โจ
โจ eq_set โจ
โจ Extending and Embedding Test::More โจ
builder
โจ EXIT CODES โจ
โจ COMPATIBILITY โจ
subtests,done_testing(),cmp_ok(),new_ok()note()andexplain()
โจ CAVEATS and NOTES โจ
UTF-8/"Wide character in print",Overloaded objects,Threads
โจ HISTORY โจ
โจ SEE ALSO โจ
- ALTERNATIVES
- ADDITIONAL LIBRARIES
- OTHER COMPONENTS
- BUNDLES
โจ ENVIRONMENT VARIABLES โจ
โจ AUTHORS โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ BUGS โจ
โจ SOURCE โจ
โจ COPYRIGHT โจ
Test::Simple โ basic utilities for writing tests, the starter pack ๐งธ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
ok
โจ EXAMPLE โจ
โจ CAVEATS โจ
โจ NOTES โจ
โจ HISTORY โจ
โจ SEE ALSO โจ
- Test::More
โจ AUTHORS โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test::Tester โ ease testing test modules built with Test::Builder, the meta vibe ๐งช
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ HOW TO USE (THE EASY WAY) โจ
โจ HOW TO USE (THE HARD WAY) โจ
โจ TEST RESULTS โจ
ok,actual_ok,name,type,reason,diag,depth
โจ SPACES AND TABS โจ
โจ COLOUR โจ
โจ EXPORTED FUNCTIONS โจ
โจ HOW IT WORKS โจ
โจ CAVEATS โจ
โจ SEE ALSO โจ
โจ AUTHOR โจ
โจ LICENSE โจ
Test::Tester::Capture โ help testing test modules built with Test::Builder, periodt ๐ฅ
โจ DESCRIPTION โจ
โจ AUTHOR โจ
โจ LICENSE โจ
Test::Tester::CaptureRunner โ help testing test modules built with Test::Builder, fr fr ๐
โจ DESCRIPTION โจ
โจ AUTHOR โจ
โจ LICENSE โจ
Test::Tutorial โ a tutorial about writing really basic tests, the whole class ๐
โจ DESCRIPTION โจ
- Nuts and bolts of testing.
- Where to start?
- Names
- Test the manual
- Sometimes the tests are wrong
- Testing lots of values
- Informative names
- Skipping tests
- Todo tests
- Testing with taint mode.
โจ FOOTNOTES โจ
โจ AUTHORS โจ
โจ MAINTAINERS โจ
Chad Granum <exodist@cpan.org>
โจ COPYRIGHT โจ
Test::use::ok โ alternative to Test::More::use_ok, the remix โ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ SEE ALSO โจ
โจ MAINTAINER โจ
Chad Granum <exodist@cpan.org>
โจ CC0 1.0 Universal โจ
Text::Abbrev โ abbrev - create an abbreviation table from a list, iykyk ๐
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ EXAMPLE โจ
Text::Balanced โ extract delimited text sequences from strings, the balance act โ๏ธ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
- General Behaviour in List Contexts
[0],[1],[2]
- General Behaviour in Scalar and Void Contexts
- A Note About Prefixes
- Functions
"extract_delimited","extract_bracketed","extract_variable",[0],[1],[2],"extract_tagged","reject => $listref",ignore => $listref,"fail => $str",[0],[1],[2],[3],[4],[5],"gen_extract_tagged","extract_quotelike",[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],"extract_quotelike",[0],[1],[2],[3],[4],[5],[6],[7..10],"extract_codeblock","extract_multiple","gen_delimited_pat","delimited_pat"
โจ DIAGNOSTICS โจ
C<Did not find a suitable bracket: "%s">,C<Did not find prefix: /%s/>,C<Did not find opening bracket after prefix: "%s">,C<No quotelike operator found after prefix: "%s">,C<Unmatched closing bracket: "%c">,C<Unmatched opening bracket(s): "%s">,C<Unmatched embedded quote (%s)>,C<Did not find closing delimiter to match '%s'>,C<Mismatched closing bracket: expected "%c" but found "%s">,C<No block delimiter found after quotelike "%s">,C<Did not find leading dereferencer>,C<Bad identifier after dereferencer>,C<Did not find expected opening bracket at %s>,C<Improperly nested codeblock at %s>,C<Missing second block for quotelike "%s">,C<No match found for opening bracket>,C<Did not find opening tag: /%s/>,C<Unable to construct closing tag to match: /%s/>,C<Found invalid nested tag: %s>,C<Found unbalanced nested tag: %s>,C<Did not find closing tag>
โจ EXPORTS โจ
- Default Exports, Optional Exports, Export Tags,
":ALL"
โจ KNOWN BUGS โจ
โจ FEEDBACK โจ
โจ AVAILABILITY โจ
โจ INSTALLATION โจ
โจ AUTHOR โจ
โจ COPYRIGHT โจ
โจ LICENCE โจ
โจ VERSION โจ
โจ DATE โจ
โจ HISTORY โจ
Text::ParseWords โ parse text into an array of tokens or array of arrays, the parse party ๐งฉ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
true,false,"delimiters"
โจ EXAMPLES โจ
0,1,2,3,4,5
โจ SEE ALSO โจ
โจ AUTHORS โจ
โจ COPYRIGHT AND LICENSE โจ
Text::Tabs โ expand and unexpand tabs like unix expand(1) and unexpand(1), the tab slay ๐
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ EXPORTS โจ
expand,unexpand,$tabstop
โจ EXAMPLE โจ
โจ BUGS โจ
โจ LICENSE โจ
Text::Wrap โ line wrapping to form simple paragraphs, the wrap star ๐
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ OVERRIDES โจ
โจ EXAMPLES โจ
โจ SEE ALSO โจ
โจ AUTHOR โจ
โจ LICENSE โจ
Thread โ manipulate threads in Perl (for old code only), the throwback ๐งต
โจ DEPRECATED โจ
โจ HISTORY โจ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ FUNCTIONS โจ
$thread = Thread->new(\&start_sub),$thread = Thread->new(\&start_sub, LIST),lock VARIABLE,async BLOCK;,Thread->self,Thread->list,cond_wait VARIABLE,cond_signal VARIABLE,cond_broadcast VARIABLE,yield
โจ METHODS โจ
join,detach,equal,tid,done
โจ DEFUNCT โจ
lock(\&sub),eval,flags
โจ SEE ALSO โจ
Thread::Queue โ thread-safe queues, the queue crew ๐ถโโ๏ธ๐ถโโ๏ธ
โจ VERSION โจ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
Ordinary scalars,Array refs,Hash refs,Scalar refs,Objects based on the above
โจ QUEUE CREATION โจ
->new(),->new(LIST)
โจ BASIC METHODS โจ
->enqueue(LIST),->dequeue(),->dequeue(COUNT),->dequeue_nb(),->dequeue_nb(COUNT),->dequeue_timed(TIMEOUT),->dequeue_timed(TIMEOUT, COUNT),->pending(),->limit,->end()
โจ ADVANCED METHODS โจ
->peek(),->peek(INDEX),->insert(INDEX, LIST),->extract(),->extract(INDEX),->extract(INDEX, COUNT)
โจ NOTES โจ
โจ LIMITATIONS โจ
โจ SEE ALSO โจ
โจ MAINTAINER โจ
โจ LICENSE โจ
Thread::Semaphore โ thread-safe semaphores, the traffic control ๐ฆ
โจ VERSION โจ
โจ SYNOPSIS โจ
โจ DESCRIPTION โจ
โจ METHODS โจ
->new(),->new(NUMBER),->down(),->down(NUMBER),->down_nb(),->down_nb(NUMBER),->down_force(),->down_force(NUMBER),->down_timed(TIMEOUT),->down_timed(TIMEOUT, NUMBER),->up(),->up(NUMBER)
โจ NOTES โจ
โจ SEE ALSO โจ
โจ MAINTAINER โจ
โจ LICENSE โจ
๐ฆ Tie::Array โ base class for tied arrays
bestie, this one is the blueprint for making a regular array act tied, no cap ๐
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
๐ธ Tie::File โ Access the lines of a disk file via a Perl array
the way this lets you treat a file like an array?? iconic fr fr ๐โจ
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 filehandle
๐ Deferred Writing
- Autodeferring
๐ CONCURRENT ACCESS TO FILES
โ ๏ธ CAVEATS
๐ SUBCLASSING
๐ WHAT ABOUT "DB_File"?
๐ AUTHOR
๐ LICENSE
๐ก๏ธ WARRANTY
๐ THANKS
๐ TODO
๐ง Tie::Handle โ base class definitions for tied handles
tied filehandles have entered the chat ๐
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
๐ Tie::Hash, Tie::StdHash, Tie::ExtraHash โ base class definitions for tied hashes
three icons in one entry, we love a collab ๐
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::StdHash
๐ธ Inheriting from Tie::ExtraHash
โจ "SCALAR", "UNTIE" and "DESTROY"
๐ MORE INFORMATION
๐ Tie::Hash::NamedCapture โ Named regexp capture buffers
regex named captures but make it tie-able, periodt ๐ซถ
SYNOPSISDESCRIPTIONSEE ALSO
๐ Tie::Memoize โ add data to hash when needed
lazy loading but for hashes, so main character behavior fr fr โจ
SYNOPSISDESCRIPTION- Inheriting from
Tie::Memoize EXAMPLEBUGSAUTHOR
๐ Tie::RefHash โ Use references as hash keys
refs as keys?? the glow up we didn't know we needed ๐ฅ
VERSIONSYNOPSISDESCRIPTIONEXAMPLETHREAD SUPPORTSTORABLE SUPPORTSEE ALSOSUPPORTAUTHORSCONTRIBUTORSCOPYRIGHT AND LICENCE
๐ง Tie::Scalar, Tie::StdScalar โ base class definitions for tied scalars
scalars can be tied too bestie, don't sleep on them ๐
SYNOPSISDESCRIPTIONTIESCALAR classname, LIST, FETCH this, STORE this, value, DESTROY thisTie::ScalarvsTie::StdScalar
MORE INFORMATION
๐ธ Tie::StdHandle โ base class definitions for tied handles
the standard handle blueprint, no cap ๐
SYNOPSISDESCRIPTION
โญ Tie::SubstrHash โ Fixed-table-size, fixed-key-length hashing
very specific, very niche, very iconic ๐
SYNOPSISDESCRIPTIONCAVEATS
๐ฆ Time::HiRes โ High resolution alarm, sleep, gettimeofday, interval timers
high resolution time stuff, the way it goes sub-second on us ๐ญโฑ๏ธ
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 APIDIAGNOSTICS- useconds or interval more than ...
- negative time not invented yet
- internal error: useconds < 0 (unsigned ... signed ...)
- useconds or uinterval equal to or more than 1000000
- unimplemented in this platform
CAVEATSSEE ALSOAUTHORSCOPYRIGHT AND LICENSE
๐ Time::Local โ Efficiently compute time from local and GMT time
converting between local and GMT time like the queen you are ๐๐
VERSIONSYNOPSISDESCRIPTIONFUNCTIONStimelocal_posix()andtimegm_posix()timelocal_modern()andtimegm_modern()timelocal()andtimegm()timelocal_nocheck()andtimegm_nocheck()- Year Value Interpretation
- Limits of time_t
- Ambiguous Local Times (DST)
- Non-Existent Local Times (DST)
- Negative Epoch Values
IMPLEMENTATIONAUTHORS EMERITUSBUGSSOURCEAUTHORCONTRIBUTORSCOPYRIGHT AND LICENSE
๐ Time::Piece โ Object Oriented time objects
OO time objects, the way that slays honestly โจ
SYNOPSISDESCRIPTIONUSAGE- Local Locales
- Date Calculations
- Truncation
- Date Comparisons
- Date Parsing
YYYY-MM-DDThh:mm:ss- Week Number
- Global Overriding
CAVEATS- Setting
$ENV{TZ}in Threads on Win32 - Use of epoch seconds
- Setting
AUTHORCOPYRIGHT AND LICENSESEE ALSOBUGS
๐ Time::Seconds โ a simple API to convert seconds to other date values
seconds-to-date-values converter, cute and simple ๐
SYNOPSISDESCRIPTIONMETHODSAUTHORCOPYRIGHT AND LICENSEBugs
๐ธ Time::gmtime โ by-name interface to Perl's built-in gmtime() function
by-name access to gmtime(), so you don't gotta remember the index order ๐
SYNOPSISDESCRIPTIONNOTEAUTHOR
๐ Time::localtime โ by-name interface to Perl's built-in localtime() function
same vibe as gmtime but local, we love a matching set ๐
SYNOPSISDESCRIPTIONNOTEAUTHOR
๐ฆ Time::tm โ internal object used by Time::gmtime and Time::localtime
the internal object doing the behind-the-scenes work, main character energy fr fr ๐
SYNOPSISDESCRIPTIONAUTHOR
๐ UNIVERSAL โ base class for ALL classes (blessed references)
THE base class for every single class out there, absolutely iconic ๐ โจ
SYNOPSISDESCRIPTION"$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 ] )"
WARNINGSEXPORTS
๐ง Unicode::Collate โ Unicode Collation Algorithm
the whole UCA situation, sorting and searching strings the Unicode way, no cap ๐ฅ
SYNOPSISDESCRIPTION- Constructor and Tailoring
UCA_Version,alternate,backwards,entry,hangul_terminator,highestFFFF,identical,ignoreChar,ignoreName,ignore_level2,katakana_before_hiragana,level,long_contraction,minimalFFFE,normalization,overrideCJK,overrideHangul,overrideOut,preprocess,rearrange,rewrite,suppress,table,undefChar,undefName,upper_before_lower,variable
- Methods for Collation
"@sorted = $Collator->sort(@not_sorted)","$result = $Collator->cmp($a, $b)","$result = $Collator->eq($a, $b)","$result = $Collator->ne($a, $b)","$result = $Collator->lt($a, $b)","$result = $Collator->le($a, $b)","$result = $Collator->gt($a, $b)","$result = $Collator->ge($a, $b)","$sortKey = $Collator->getSortKey($string)","$sortKeyForm = $Collator->viewSortKey($string)"
- Methods for Searching
"$position = $Collator->index($string, $substring[, $position])","($position, $length) = $Collator->index($string, $substring[, $position])","$match_ref = $Collator->match($string, $substring)","($match) = $Collator->match($string, $substring)","@match = $Collator->gmatch($string, $substring)","$count = $Collator->subst($string, $substring, $replacement)","$count = $Collator->gsubst($string, $substring, $replacement)"
- Other Methods
"%old_tailoring = $Collator->change(%new_tailoring)","$modified_collator = $Collator->change(%new_tailoring)","$version = $Collator->version()",UCA_Version(),Base_Unicode_Version()
- Constructor and Tailoring
EXPORTINSTALLCAVEATS- Normalization, Conformance Test
AUTHOR, COPYRIGHT AND LICENSESEE ALSO- Unicode Collation Algorithm - UTS #10, The Default Unicode Collation Element Table (DUCET), The conformance test for the UCA, Hangul Syllable Type, Unicode Normalization Forms - UAX #15, Unicode Locale Data Markup Language (LDML) - UTS #35
๐ Unicode::Collate::CJK::Big5 โ weighting CJK Unified Ideographs for Unicode::Collate
Big5 weighting support, holding it down for CJK ideographs ๐ซถ
SYNOPSISDESCRIPTIONSEE ALSO- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
Unicode::Collate,Unicode::Collate::Locale
- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
๐ Unicode::Collate::CJK::GB2312 โ weighting CJK Unified Ideographs for Unicode::Collate
GB2312 weighting, doing its thing for the CJK squad โจ
SYNOPSISDESCRIPTIONCAVEATSEE ALSO- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
Unicode::Collate,Unicode::Collate::Locale
- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
๐ธ Unicode::Collate::CJK::JISX0208 โ weighting JIS KANJI for Unicode::Collate
JIS KANJI weighting, repping the Japanese side of things ๐
SYNOPSISDESCRIPTIONSEE ALSOUnicode::Collate,Unicode::Collate::Locale
๐ Unicode::Collate::CJK::Korean โ weighting CJK Unified Ideographs for Unicode::Collate
Korean weighting support, periodt ๐ฐ๐ทโจ
SYNOPSISDESCRIPTIONSEE ALSO- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
Unicode::Collate,Unicode::Collate::Locale
- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
๐ฆ Unicode::Collate::CJK::Pinyin โ weighting CJK Unified Ideographs for Unicode::Collate
Pinyin weighting, so the Chinese collation hits just right ๐
SYNOPSISDESCRIPTIONCAVEATSEE ALSO- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
Unicode::Collate,Unicode::Collate::Locale
- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
๐ Unicode::Collate::CJK::Stroke โ weighting CJK Unified Ideographs for Unicode::Collate
stroke-based weighting, very organized of it honestly ๐
SYNOPSISDESCRIPTIONCAVEATSEE ALSO- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
Unicode::Collate,Unicode::Collate::Locale
- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
๐ง Unicode::Collate::CJK::Zhuyin โ weighting CJK Unified Ideographs for Unicode::Collate
Zhuyin weighting, the bop-fang squad representation we needed ๐
SYNOPSISDESCRIPTIONCAVEATSEE ALSO- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
Unicode::Collate,Unicode::Collate::Locale
- CLDR - Unicode Common Locale Data Repository, Unicode Locale Data Markup Language (LDML) - UTS #35,
๐ Unicode::Collate::Locale โ Linguistic tailoring for DUCET via Unicode::Collate
linguistic tailoring on top of DUCET, the localization glow-up ๐
SYNOPSISDESCRIPTION- Constructor
- Methods
"$Collator->getlocale","$Collator->locale_version"
- A list of tailorable locales
- A list of variant codes and their aliases
INSTALLCAVEAT- Tailoring is not maximum, Collation reordering is not supported
- Reference
AUTHORSEE ALSO- Unicode Collation Algorithm - UTS #10, The Default Unicode Collation Element Table (DUCET), Unicode Locale Data Markup Language (LDML) - UTS #35, CLDR - Unicode Common Locale Data Repository,
Unicode::Collate,Unicode::Normalize
- Unicode 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::Normalize โ Unicode Normalization Forms
all the normalization forms in one place, we love a one-stop shop ๐
SYNOPSISDESCRIPTION- 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)"
- Normalization Forms
๐ Decomposition and Composition ๐
okay bestie, we're still under Unicode::Collate and these are the decomposition & composition calls you can make. Exact signatures, no cap:
"$decomposed_string = decompose($string [, $useCompatMapping])""$reordered_string = reorder($string)"$composed_string = compose($string)($processed, $unprocessed) = splitOnLastStarter($normalized)"$processed = normalize_partial($form, $unprocessed)""$processed = NFD_partial($unprocessed)"$processed = NFC_partial($unprocessed)"$processed = NFKD_partial($unprocessed)""$processed = NFKC_partial($unprocessed)"
โจ Quick Check โจ
these are the quick check functions for the normalization forms, bestie:
"$result = checkNFD($string)""$result = checkNFC($string)"$result = checkNFKD($string)"$result = checkNFKC($string)"$result = checkFCD($string)$result = checkFCC($string)"$result = check($form_name, $string)"
๐ธ Character Data ๐ธ
all the character data lookups:
"$canonical_decomposition = getCanon($code_point)""$compatibility_decomposition = getCompat($code_point)""$code_point_composite = getComposite($code_point_here, $code_point_next)""$combining_class = getCombinClass($code_point)""$may_be_composed_with_prev_char = isComp2nd($code_point)""$is_exclusion = isExclusion($code_point)"$is_singleton = isSingleton($code_point)$is_non_starter_decomposition = isNonStDecomp($code_point)$is_Full_Composition_Exclusion = isComp_Ex($code_point)"$NFD_is_NO = isNFD_NO($code_point)""$NFC_is_NO = isNFC_NO($code_point)"$NFC_is_MAYBE = isNFC_MAYBE($code_point)"$NFKD_is_NO = isNFKD_NO($code_point)""$NFKC_is_NO = isNFKC_NO($code_point)"$NFKC_is_MAYBE = isNFKC_MAYBE($code_point)
๐ EXPORT ๐
nothing listed under here, just the heading, periodt.
๐ญ CAVEATS ๐ญ
- Perl's version vs. Unicode version
- Correction of decomposition mapping
- Revised definition of canonical composition
๐ AUTHOR ๐
(no content)
๐ LICENSE ๐
(no content)
๐ SEE ALSO ๐
<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 ๐
(no content)
๐ DESCRIPTION ๐
code point argument
๐ charinfo() ๐
codenamecategorycombiningbididecompositiondecimaldigitnumericmirroredunicode10commentupperlowertitleblockscript
๐ charprop() ๐
BlockDecomposition_MappingName_AliasNumeric_ValueScript_Extensions
๐ charprops_all() ๐
(no content)
๐ charblock() ๐
(no content)
๐ charscript() ๐
(no content)
๐ charblocks() ๐
(no content)
๐ charscripts() ๐
(no content)
๐ charinrange() ๐
(no content)
๐ general_categories() ๐
(no content)
๐ bidi_types() ๐
(no content)
๐ compexcl() ๐
(no content)
๐ casefold() ๐
codefullsimplemappingstatus* If you use this "I" mapping* If you exclude this "I" mappingturkic
๐ all_casefolds() ๐
(no content)
๐ casespec() ๐
codelowertitleuppercondition
๐ namedseq() ๐
(no content)
๐ num() ๐
(no content)
๐ prop_aliases() ๐
(no content)
๐ prop_values() ๐
(no content)
๐ prop_value_aliases() ๐
(no content)
๐ prop_invlist() ๐
(no content)
๐ prop_invmap() ๐
"s""sl""correction""control""alternate""figment""abbreviation""a""al""ae""ale""ar""n""ad"
๐ search_invlist() ๐
(no content)
๐ Unicode::UCD::UnicodeVersion ๐
(no content)
๐งฉ Blocks versus Scripts ๐งฉ
(no content)
๐งฉ Matching Scripts and Blocks ๐งฉ
(no content)
๐งฉ Old-style versus new-style block names ๐งฉ
(no content)
๐งฉ Use with older Unicode versions ๐งฉ
(no content)
๐ AUTHOR ๐
(no content)
๐ User::grent - by-name interface to Perl's built-in getgr*() functions ๐
๐ SYNOPSIS ๐
(no content)
๐ DESCRIPTION ๐
(no content)
๐ NOTE ๐
(no content)
๐ AUTHOR ๐
(no content)
๐ User::pwent - by-name interface to Perl's built-in getpw*() functions ๐
๐ SYNOPSIS ๐
(no content)
๐ DESCRIPTION ๐
๐ฅ๏ธ System Specifics ๐ฅ๏ธ
(no content)
๐ NOTE ๐
(no content)
๐ AUTHOR ๐
(no content)
๐ HISTORY ๐
- March 18th, 2000
๐ XSLoader - Dynamically load C libraries into Perl code ๐
๐ฆ VERSION ๐ฆ
(no content)
๐ SYNOPSIS ๐
(no content)
๐ DESCRIPTION ๐
๐ Migration from "DynaLoader" ๐
(no content)
๐งฑ Backward compatible boilerplate ๐งฑ
(no content)
โณ Order of initialization: early load() โณ
๐ฑ The most hairy case ๐ฑ
(no content)
๐ฉบ DIAGNOSTICS ๐ฉบ
"Can't find '%s' symbol in %s""Can't load '%s' for module %s: %s""Undefined symbols present after loading %s: %s"
๐ง LIMITATIONS ๐ง
(no content)
๐ KNOWN BUGS ๐
(no content)
๐ BUGS ๐
(no content)
๐ SEE ALSO ๐
(no content)
๐ AUTHORS ๐
(no content)
ยฉ๏ธ COPYRIGHT & LICENSE ยฉ๏ธ
(no content)
๐ AUXILIARY DOCUMENTATION ๐
Here should be listed all the extra programs' documentation, but they don't all have manual pages yet:
h2phh2xsperlbugpl2pmpod2htmlpod2mansplainxsubpp
๐ AUTHOR ๐
Larry Wall <larry@wall.org>, with the help of oodles of other folks.
That's the whole tea, bestie. This was from perl v5.42.3, dated 2026-08-03, and it's PERLTOC(1). Periodt. ๐
๐ฆ where this page comes from
- fedora 43: perl-doc 5.42.3-524.fc43 ยท (GPL-1.0-or-later OR Artistic-1.0-Perl) AND Unicode-3.0 AND LicenseRef-Fedora-UltraPermissive
- fedora 44: perl-doc 5.42.3-525.fc44 ยท (GPL-1.0-or-later OR Artistic-1.0-Perl) AND Unicode-3.0 AND LicenseRef-Fedora-UltraPermissive
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms