Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
the Perl 5 language interpreter
Perl C Perl6 XS Shell C++ Other
branch: blead

dont report a $@ exception with uninitialized $!'s message in IPC::Open3

Commit a24d8df "Make IPC::Open3 work without fork()" from 5.003 created
an eval block, and if that eval block threw an exception, instead of
propagating $@, the code propagated $!, even though no system call was done
and $! is effectivly unintialized data. In one case for me, a taint
exception inside system was turned into open3() throwing an exception
about "Inappropriate I/O control operation" or "Bad file descriptor", which
had nothing to do with the real fault which was a Perl C level croak with
the message "Insecure $ENV{PATH} while running with -T switch at ..."
which was called as Perl_pp_system->Perl_taint_env->Perl_taint_proper->
Perl_croak->Perl_vcroak. This patch does not try to fix the ambiguity of
the error messages between the !DO_SPAWN and IO::Pipe
branches/implementations of _open3.
latest commit c85f23b236
@bulk88 bulk88 authored tonycoz committed
Failed to load latest commit information.
Cross patchlevel: we are now perl v5.23.1
NetWare patchlevel: we are now perl v5.23.1
Porting Various corrections to Porting/Maintainers.pl
cpan Upgrade Encode from version 2.73 to 2.75
cygwin avoid a "FILE" name conflict with cygwin's wchar.h
dist gcc 5.1.0 thinks RETVAL might end up unset.
djgpp Remove some remnants of x2p, which was removed by commit e5a8a0f
ext dont report a $@ exception with uninitialized $!'s message in IPC::Open3
h2pl [RT #36079] Convert ` to '.
haiku Remove "register" declarations
hints patchlevel: we are now perl v5.23.1
lib fix #124181 double free/refcnt problems in IO types in typemap
os2 bump $VERSION for PerlIO-encoding, PerlIO-mmap, PerlIO-scalar, OS2-Pr…
plan9 patchlevel: we are now perl v5.23.1
pod dont report a $@ exception with uninitialized $!'s message in IPC::Open3
qnx Fix typos (spelling errors) in qnx/*.
regen Non-invasive mojibake fixes
symbian infnan: move the mantbits definitions from perl.h to Configure
t [perl #125373] set $! in chdir() if env not set, clarify docs
utils add "what it does" comment to utils/enc2xs.PL
vms belatedly set up delta for 5.23.1
vos Build perl using the dynamic linking capabilities of OpenVOS Release …
win32 belatedly set up delta for 5.23.1
.dir-locals.el Replace common Emacs file-local variables with dir-locals
.gitignore automatically sort the MANIFEST if necessary
AUTHORS Non-invasive mojibake fixes
Artistic Expand tabs in Artistic license to spaces
Changes Change the example in the Changes file to be more generic.
Configure Regenerate Configure after backports and small fixes
Copying Update F<Copying> with the FSF's new address.
EXTERN.h Ditch the custom extern/const model on VMS.
INSTALL patchlevel: we are now perl v5.23.1
INTERN.h Ditch the custom extern/const model on VMS.
MANIFEST belatedly set up delta for 5.23.1
META.json patchlevel: we are now perl v5.23.1
META.yml patchlevel: we are now perl v5.23.1
Makefile.SH belatedly set up delta for 5.23.1
Makefile.micro Change name of mro.c
Policy_sh.SH add shebangs where missing
README Release prep - Update version/copyright information.
README.aix podcheck.
README.amiga Pod cleanup for F<> and L<>
README.android INSTALL: Updates to the cross-compilation section
README.bs2000 Add note to EBCDIC README's, asking for input
README.ce Document how to build perl for WinCE using EVC4
README.cn Converted Asian documentations to utf-8
README.cygwin Correct double mention of winpid_to_pid.
README.dos README.$OS URLs
README.freebsd Update README.freebsd with the new approach for making $^X absolute.
README.haiku patchlevel: we are now perl v5.23.1
README.hpux Corrections to spelling and grammatical errors.
README.hurd README.foo: Change NAME to perlfoo
README.irix README.foo: Change NAME to perlfoo
README.jp Converted Asian documentations to utf-8
README.ko README.ko: remove blank line
README.linux README.foo: Change NAME to perlfoo
README.macos README.foo: Change NAME to perlfoo
README.macosx patchlevel: we are now perl v5.23.1
README.micro Make the request to fix rather than report bugs in microperl politer.
README.netware fix various Pod line length warnings
README.openbsd README.foo: Change NAME to perlfoo
README.os2 patchlevel: we are now perl v5.23.1
README.os390 Add note to EBCDIC README's, asking for input
README.os400 Add note to EBCDIC README's, asking for input
README.plan9 [PATCH] Doc spellcheck + podcheck
README.qnx README.qnx: Make verbatim line fit in 79 columns
README.riscos README.foo: Change NAME to perlfoo
README.solaris README.solaris: Add a section for cross-compilation
README.symbian README.foo: Change NAME to perlfoo
README.synology README.synology: Wrap too-long verbatim line
README.tru64 Tru64: Document "read_cur_obj_info: bad file magic number" error.
README.tw tweak perltw.pod for long lines (and default exports)
README.vms patchlevel: we are now perl v5.23.1
README.vos Update README.vos to reflect recent changes
README.win32 bump version to v5.23.0
TestInit.pm Get closure.t working under minitest
XSUB.h Replace common Emacs file-local variables with dir-locals
asan_ignore asan_ignore: exclude S_expect_number()
autodoc.pl perlapi: Clearer wording in intro
av.c Replace common Emacs file-local variables with dir-locals
av.h Replace common Emacs file-local variables with dir-locals
caretx.c Replace common Emacs file-local variables with dir-locals
cflags.SH Prefer -std=c89 over -ansi.
charclass_invlists.h mktables: Fix logic error
config_h.SH Regenerate Configure after backports and small fixes
configpm Grab the warnflags and stdflags from cflags [perl #122694].
configure.com Require v7.3-2 or later for VMS builds.
configure.gnu Remove "dead" RCS $Id$ tags from files that we own.
cop.h add PERLSI_MULTICALL
cv.h Replace common Emacs file-local variables with dir-locals
deb.c Cannot do much if putc fails in debug output.
doio.c lseek() SEEK_SET pos may not be negative
doop.c Replace common Emacs file-local variables with dir-locals
dosish.h Replace common Emacs file-local variables with dir-locals
dquote_static.c Replace common Emacs file-local variables with dir-locals
dump.c Remove NEW_ from PERL_NEW_COPY_ON_WRITE
ebcdic_tables.h Make many EBCDIC tables generated instead of hand-coded
embed.fnc Remove PERL_OLD_COPY_ON_WRITE
embed.h Remove PERL_OLD_COPY_ON_WRITE
embedvar.h Add \b{sb}
fakesdio.h Replace common Emacs file-local variables with dir-locals
feature.h The postderef feature is no longer experimental
form.h better document format code
generate_uudmap.c generate_uudmap.c: Clarify comment
globals.c Replace common Emacs file-local variables with dir-locals
globvar.sym infnan: new logic for NV_INF and NV_NAN
gv.c gv_const_sv() handle subrefs directly in the stash
gv.h Replace common Emacs file-local variables with dir-locals
handy.h remove redundant PERL_EXPORT_C and PERL_XS_EXPORT_C macros
hv.c Impossible for entry to be NULL at this point.
hv.h Replace common Emacs file-local variables with dir-locals
hv_func.h Replace common Emacs file-local variables with dir-locals
inline.h Replace common Emacs file-local variables with dir-locals
inline_invlist.c Move inline fcn to #included file
install_lib.pl make link->copy fallback work again [#123141]
installhtml Fixed verbatim lines in POD over 79 characters
installman Replace common Emacs file-local variables with dir-locals
installperl Replace common Emacs file-local variables with dir-locals
intrpvar.h patchlevel: we are now perl v5.23.1
iperlsys.h Replace common Emacs file-local variables with dir-locals
keywords.c Remove or downgrade unnecessary dVAR.
keywords.h Remove or downgrade unnecessary dVAR.
l1_char_class_tab.h \s matching VT is no longer experimental
locale.c locale.c: White-space, comment only
make_ext.pl special-case Pod::Checker ABSTRACT
make_patchnum.pl reduce stderr noise in build
makedef.pl Remove NEW_ from PERL_NEW_COPY_ON_WRITE
makedepend.SH makedepend.SH: Split too long lines; properly join
malloc.c Replace common Emacs file-local variables with dir-locals
malloc_ctl.h Fix calling conventions in malloc_ctl.h
mathoms.c Revert "Mathomise save_re_context"
metaconfig.SH Remove some remnants of x2p, which was removed by commit e5a8a0f
metaconfig.h Configure syncup
mg.c Remove PERL_OLD_COPY_ON_WRITE
mg.h Replace common Emacs file-local variables with dir-locals
mg_names.c Remove proto magic type
mg_raw.h Remove proto magic type
mg_vtable.h Remove proto magic type
miniperlmain.c Tru64: introduce PERL_SYS_FPU_INIT, use it.
mkppport Update podlators to CPAN version 2.4.0
mkppport.lst Move Cwd and List-Util to folders named as per their CPAN distributions
mro_core.c Replace common Emacs file-local variables with dir-locals
myconfig.SH Configure: add doublekind for the format of double.
mydtrace.h Replace common Emacs file-local variables with dir-locals
nostdio.h Replace common Emacs file-local variables with dir-locals
numeric.c Replace common Emacs file-local variables with dir-locals
op.c Superfluous null ptr test warnings by clang 3.7
op.h add Op(MORE|LAST|MAYBE)SIB_set; rm OpSIBLING_set
op_reg_common.h silence some gcc -pendantic warnings
opcode.h [perl #123790] Disable targlex for some ops
opnames.h Add OP_IS_INFIX_BIT
overload.c Add overload types for string-specifc bitops
overload.h Add overload types for string-specifc bitops
packsizetables.c Use IVSIZE not HAS_QUAD to enable 'q' and 'Q' formats in pack.
pad.c dont use a 64 bit constant for a 32 bit value
pad.h make PadlistNAMES() lvalue again.
parser.h Replace common Emacs file-local variables with dir-locals
patchlevel.h patchlevel: we are now perl v5.23.1
perl.c Remove NEW_ from PERL_NEW_COPY_ON_WRITE
perl.h Remove NEW_ from PERL_NEW_COPY_ON_WRITE
perlapi.c Simplify embedvar.h, removing a level of macro indirection for PL_* v…
perlapi.h Static initialization using 1/0 or 0/0 not C89.
perldtrace.d Replace common Emacs file-local variables with dir-locals
perlio.c self cannot be NULL here because PerlIO_push() will deref it.
perlio.h remove redundant PERL_EXPORT_C and PERL_XS_EXPORT_C macros
perlio.sym Purge remaining references to PerlIO_sprintf and PerlIO_vsprintf().
perliol.h remove redundant PERL_EXPORT_C and PERL_XS_EXPORT_C macros
perlsdio.h Replace common Emacs file-local variables with dir-locals
perlvars.h Static initialization using 1/0 or 0/0 not C89.
perly.act perly.y: Remove type from ';'
perly.c Replace common Emacs file-local variables with dir-locals
perly.h perly.y: Remove type from ';'
perly.tab perly.y: Remove type from ';'
perly.y perly.y: Remove type from ';'
pp.c Left overshift of negatives under use integer was still wrong.
pp.h fix signed/unsigned mismatch in (M)EXTEND
pp_ctl.c fix harmless(ish) thinko in pp_return
pp_hot.c make MULTICALL handle list context
pp_pack.c pack('f', $NAN) must account for NAN_COMPARE_BROKEN platforms
pp_proto.h Add string- and number-specific bitop types
pp_sort.c simplify sort sub return arg processing
pp_sys.c [perl #125373] set $! in chdir() if env not set, clarify docs
proto.h Remove PERL_OLD_COPY_ON_WRITE
reentr.c Make the LoTR quote of reentr.c formatted more like the others.
reentr.h [perl #115928] we don't use drand48_r or random_r any longer
regcharclass.h mktables: Fix logic error
regcomp.c Cannot do much if putc fails in debug output.
regcomp.h remove deprecated /\C/ RE character class
regcomp.sym remove deprecated /\C/ RE character class
regen.pl Refactor t/porting/regen.t to check everything (and the return values!).
regen_perly.pl Remove MAD.
regexec.c fix punctuation in Tolkien quote in regexec.c
regexp.h remove redundant PERL_EXPORT_C and PERL_XS_EXPORT_C macros
regnodes.h remove deprecated /\C/ RE character class
run.c Replace common Emacs file-local variables with dir-locals
runtests.SH avoid 'jobserver unavailable:' warnings
scope.c Replace common Emacs file-local variables with dir-locals
scope.h Replace common Emacs file-local variables with dir-locals
sv.c Remove NEW_ from PERL_NEW_COPY_ON_WRITE
sv.h Remove NEW_ from PERL_NEW_COPY_ON_WRITE
taint.c Replace common Emacs file-local variables with dir-locals
thread.h Replace common Emacs file-local variables with dir-locals
time64.c Use the Perl_ math in time64.c, too.
time64.h time64.h: On QNX, use const for tm_zone
time64_config.h Make time64 use NV for time_t, I32 for year, not Quad_t.
toke.c The postderef feature is no longer experimental
uconfig.h Regenerate Configure after backports and small fixes
uconfig.sh infnan: move the mantbits definitions from perl.h to Configure
uconfig64.sh infnan: move the mantbits definitions from perl.h to Configure
unicode_constants.h Switch to Unicode Version 8
universal.c Remove PERL_OLD_COPY_ON_WRITE
unixish.h Replace common Emacs file-local variables with dir-locals
utf8.c Change wording of warning due to Unicode Standard change
utf8.h perlapi: Add intro text to Unicode section
utfebcdic.h utfebcdic.h: Remove comments
util.c Remove gettimeofday() workarounds for VMS in util.c.
util.h Replace common Emacs file-local variables with dir-locals
utils.lst Update Encode to CPAN version 2.70
vutil.c PATCH: [perl #121930] Bleadperl breaks MDOOTSON/Wx
vutil.h Lots of C optimizations for both speed/correctness
vxs.inc vutil.c, vxs.inc: Avoid warnings from -Wmissing-prototypes -Wundef -W…
warnings.h Add experimental::bitwise warnings category
write_buildcustomize.pl Replace common Emacs file-local variables with dir-locals

README

Perl is Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
2013, 2014, 2015 by Larry Wall and others.  All rights reserved.



ABOUT PERL
==========

Perl is a general-purpose programming language originally developed for
text manipulation and now used for a wide range of tasks including
system administration, web development, network programming, GUI
development, and more.

The language is intended to be practical (easy to use, efficient,
complete) rather than beautiful (tiny, elegant, minimal).  Its major
features are that it's easy to use, supports both procedural and
object-oriented (OO) programming, has powerful built-in support for text
processing, and has one of the world's most impressive collections of
third-party modules.

For an introduction to the language's features, see pod/perlintro.pod.

For a discussion of the important changes in this release, see
pod/perldelta.pod.

There are also many Perl books available, covering a wide variety of topics,
from various publishers.  See pod/perlbook.pod for more information.


INSTALLATION
============

If you're using a relatively modern operating system and want to
install this version of Perl locally, run the following commands:

  ./Configure -des -Dprefix=$HOME/localperl
  make test
  make install

This will configure and compile perl for your platform, run the regression
tests, and install perl in a subdirectory "localperl" of your home directory.

If you run into any trouble whatsoever or you need to install a customized
version of Perl, you should read the detailed instructions in the "INSTALL"
file that came with this distribution.  Additionally, there are a number of
"README" files with hints and tips about building and using Perl on a wide
variety of platforms, some more common than others.

Once you have Perl installed, a wealth of documentation is available to you
through the 'perldoc' tool.  To get started, run this command:

  perldoc perl


IF YOU RUN INTO TROUBLE
=======================

Perl is a large and complex system that's used for everything from
knitting to rocket science.  If you run into trouble, it's quite
likely that someone else has already solved the problem you're
facing. Once you've exhausted the documentation, please report bugs to us
using the 'perlbug' tool. For more information about perlbug, either type
'perldoc perlbug' or just 'perlbug' on a line by itself.

While it was current when we made it available, Perl is constantly evolving
and there may be a more recent version that fixes bugs you've run into or
adds new features that you might find useful.

You can always find the latest version of perl on a CPAN (Comprehensive Perl
Archive Network) site near you at http://www.cpan.org/src/

If you want to submit a simple patch to the perl source, see the "SUPER
QUICK PATCH GUIDE" in pod/perlhack.pod.

Just a personal note:  I want you to know that I create nice things like this
because it pleases the Author of my story.  If this bothers you, then your
notion of Authorship needs some revision.  But you can use perl anyway. :-)

							The author.


LICENSING
=========

This program is free software; you can redistribute it and/or modify
it under the terms of either:

	a) the GNU General Public License as published by the Free
	Software Foundation; either version 1, or (at your option) any
	later version, or

	b) the "Artistic License" which comes with this Kit.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See either
the GNU General Public License or the Artistic License for more details.

You should have received a copy of the Artistic License with this
Kit, in the file named "Artistic".  If not, I'll be glad to provide one.

You should also have received a copy of the GNU General Public License
along with this program in the file named "Copying". If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA or visit their web page on the internet at
http://www.gnu.org/copyleft/gpl.html.

For those of you that choose to use the GNU General Public License,
my interpretation of the GNU General Public License is that no Perl
script falls under the terms of the GPL unless you explicitly put
said script under the terms of the GPL yourself.  Furthermore, any
object code linked with perl does not automatically fall under the
terms of the GPL, provided such object code only adds definitions
of subroutines and variables, and does not otherwise impair the
resulting interpreter from executing any standard Perl script.  I
consider linking in C subroutines in this manner to be the moral
equivalent of defining subroutines in the Perl language itself.  You
may sell such an object file as proprietary provided that you provide
or offer to provide the Perl source, as specified by the GNU General
Public License.  (This is merely an alternate way of specifying input
to the program.)  You may also sell a binary produced by the dumping of
a running Perl script that belongs to you, provided that you provide or
offer to provide the Perl source as specified by the GPL.  (The
fact that a Perl interpreter and your code are in the same binary file
is, in this case, a form of mere aggregation.)  This is my interpretation
of the GPL.  If you still have concerns or difficulties understanding
my intent, feel free to contact me.  Of course, the Artistic License
spells all this out for your protection, so you may prefer to use that.


Something went wrong with that request. Please try again.