# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Wed Jun 20 22:37:47 EET DST 2001 [metaconfig 3.0 PL70]
+# Generated on Thu Jun 21 18:44:48 EET DST 2001 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
esac
case "$src" in
/*) run=$src/Cross/run
+ targetmkdir=$src/Cross/mkdir
to=$src/Cross/to
from=$src/Cross/from
;;
*) pwd=`$test -f ../Configure & cd ..; pwd`
run=$pwd/Cross/run
+ targetmkdir=$pwd/Cross/mkdirkrun
to=$pwd/Cross/to
from=$pwd/Cross/from
;;
ssh|rsh)
cat >$run <<EOF
#!/bin/sh
+case "\$1" in
+-cwd)
+ shift
+ cwd=\$1
+ shift
+ ;;
+esac
+case "\$cwd" in
+'') cwd=$targetdir ;;
+esac
exe=\$1
shift
-$to \$exe
-$targetrun -l $targetuser $targethost "cd $targetdir && ./\$exe \$@"
+if $test ! -f \$exe.xok; then
+ $to \$exe
+ $touch \$exe.xok
+fi
+$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
EOF
;;
*) echo "Unknown targetrun '$targetrun'" >&4
exit 1
;;
esac
+ case "$targetmkdir" in
+ */Cross/mkdir)
+ cat >$targetmkdir <<EOF
+#!/bin/sh
+$targetrun -l $targetuser $targethost "mkdir -p \$@"
+EOF
+ ;;
+ *) echo "Unknown targetmkdir '$targetmkdir'" >&4
+ exit 1
+ ;;
+ esac
case "$targetto" in
scp|rcp)
cat >$to <<EOF
#!/bin/sh
for f in \$@
do
- $targetto $q \$f $targetuser@$targethost:$targetdir/. || exit 1
+ case "\$f" in
+ /*)
+ $targetmkdir \`dirname \$f\`
+ $targetto $q \$f $targetuser@$targethost:\$f || exit 1
+ ;;
+ *)
+ $targetmkdir $targetdir/\`dirname \$f\`
+ $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
+ ;;
+ esac
done
exit 0
EOF
;;
cp) cat >$to <<EOF
#!/bin/sh
-cp \$@ $targetdir/.
+for f in \$@
+do
+ case "\$f" in
+ /*)
+ $mkdir -p $targetdir/\`dirname \$f\`
+ $cp \$f $targetdir/\$f || exit 1
+ ;;
+ *)
+ $targetmkdir $targetdir/\`dirname \$f\`
+ $cp \$f $targetdir/\$f || exit 1
+ ;;
+ esac
+done
+exit 0
EOF
;;
*) echo "Unknown targetto '$targetto'" >&4
#!/bin/sh
for f in \$@
do
+ $rm -f \$f
$targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
done
exit 0
#!/bin/sh
for f in \$@
do
+ $rm -f \$f
cp $targetdir/\$f . || exit 1
done
exit 0
output=''
set try -DTRY_FPUTC
if eval $compile; then
- $rm -f try.out
$run ./try 2>/dev/null
code="$?"
$from try.out
'')
set try -DTRY_FPRINTF
if eval $compile; then
- $rm -f try.out
$run ./try 2>/dev/null
code="$?"
$from try.out
case "$fflushNULL" in
'') set try -DTRY_FFLUSH_NULL $output
if eval $compile; then
- $rm -f try.out
$run ./try 2>/dev/null
code="$?"
$from try.out
$cat >&4 <<EOM
(Now testing the other method--but note that this also may fail.)
EOM
- $rm -f try.out
$run ./try 2>/dev/null
code=$?
$from try.out
-AUTHORS Contact info for contributors
+apollo/netinet/in.h Apollo DomainOS port: C header file frontend
Artistic The "Artistic License"
+AUTHORS Contact info for contributors
+av.c Array value code
+av.h Array value header
+beos/nm.c BeOS port
+bytecode.pl Produces ext/ByteLoader/byterun.h, ext/ByteLoader/byterun.c and ext/B/Asmdata.pm
+cc_runtime.h Macros need by runtime of compiler-generated code
+cflags.SH A script that emits C compilation flags per file
Changes Differences from previous version
Changes5.000 Differences between 4.x and 5.000
Changes5.001 Differences between 5.000 and 5.001
Changes5.004 Differences between 5.003 and 5.004
Changes5.005 Differences between 5.004 and 5.005
Changes5.6 Differences between 5.005 and 5.6
-Configure Portability tool
-Copying The GNU General Public License
-Cross/README Cross-compilation
-EXTERN.h Included before foreign .h files
-INSTALL Detailed installation instructions
-INTERN.h Included before domestic .h files
-MANIFEST This list of files
-Makefile.SH A script that generates Makefile
-Makefile.micro microperl Makefile
-NetWare/CLIBsdio.h Netware port
-NetWare/CLIBstr.h Netware port
-NetWare/CLIBstuf.c Netware port
-NetWare/CLIBstuf.h Netware port
-NetWare/Main.c Netware port
-NetWare/Makefile Netware port
-NetWare/NWTInfo.c Netware port
-NetWare/NWUtil.c Netware port
-NetWare/Nwmain.c Netware port
-NetWare/Nwpipe.c Netware port
-NetWare/bat/BldNWExt.bat Netware port
-NetWare/bat/Buildtype.bat Netware port
-NetWare/bat/MPKBuild.bat Netware port
-NetWare/bat/SetNWBld.bat Netware port
-NetWare/bat/Setmpksdk.bat Netware port
-NetWare/bat/Setnlmsdk.bat Netware port
-NetWare/bat/Setwatcom.bat Netware port
-NetWare/bat/ToggleD2.bat Netware port
-NetWare/bat/ToggleXDC.bat Netware port
-NetWare/config.wc Netware port
-NetWare/config_H.wc Netware port
-NetWare/config_h.PL Netware port
-NetWare/config_sh.PL Netware port
-NetWare/deb.h Netware port
-NetWare/dl_netware.xs Netware port
-NetWare/intdef.h Netware port
-NetWare/interface.c Netware port
-NetWare/interface.h Netware port
-NetWare/iperlhost.h Netware port
-NetWare/netware.h Netware port
-NetWare/nw5.c Netware port
-NetWare/nw5iop.h Netware port
-NetWare/nw5sck.c Netware port
-NetWare/nw5sck.h Netware port
-NetWare/nw5thread.c Netware port
-NetWare/nw5thread.h Netware port
-NetWare/nwperlsys.c Netware port
-NetWare/nwperlsys.h Netware port
-NetWare/nwpipe.h Netware port
-NetWare/nwplglob.c Netware port
-NetWare/nwplglob.h Netware port
-NetWare/nwtinfo.h Netware port
-NetWare/nwutil.h Netware port
-NetWare/t/NWModify.pl Netware port
-NetWare/t/NWScripts.pl Netware port
-NetWare/t/Readme.txt Netware port
-NetWare/testnlm/echo/echo.c Netware port
-NetWare/testnlm/type/type.c Netware port
-NetWare/win32ish.h Netware port
-Policy_sh.SH Hold site-wide preferences between Configure runs.
-Porting/Contract Social contract for contributed modules in Perl core
-Porting/Glossary Glossary of config.sh variables
-Porting/config.sh Sample config.sh
-Porting/config_H Sample config.h
-Porting/findvars Find occurrences of words
-Porting/fixCORE Find and fix modules that generate warnings
-Porting/fixvars Find undeclared variables with C compiler and fix em
-Porting/genlog Generate formatted changelogs by querying p4d
-Porting/makerel Release making utility
-Porting/p4d2p Generate standard patches from p4 diffs
-Porting/p4desc Smarter 'p4 describe', outputs diffs for new files
-Porting/patching.pod How to report changes made to Perl
-Porting/patchls Flexible patch file listing utility
-Porting/pumpkin.pod Guidelines and hints for Perl maintainers
-Porting/repository.pod How to use the Perl repository
-Porting/testall.atom Cumulative profile of the test suite with Third Degree
-README The Instructions
-README.Y2K Notes about Year 2000 concerns
-README.aix Notes about AIX port
-README.amiga Notes about AmigaOS port
-README.apollo Notes about Apollo DomainOS port
-README.beos Notes about BeOS port
-README.bs2000 Notes about BS2000 POSIX port
-README.cygwin Notes about Cygwin port
-README.dgux Notes about DG/UX port
-README.dos Notes about DOS/DJGPP port
-README.epoc Notes about EPOC port
-README.hpux Notes about HP-UX port
-README.hurd Notes about GNU/Hurd port
-README.machten Notes about Power MachTen port
-README.macos Notes about Mac OS (Classic)
-README.micro Notes about microperl
-README.mint Notes about Atari MiNT port
-README.mpeix Notes about MPE/iX port
-README.netware Notes about Netware port
-README.os2 Notes about OS/2 port
-README.os390 Notes about OS/390 (nee MVS) port
-README.plan9 Notes about Plan9 port
-README.qnx Notes about QNX port
-README.solaris Notes about Solaris port
-README.threads Notes about multithreading
-README.tru64 Notes about Tru64
-README.vmesa Notes about VM/ESA port
-README.vms Notes about installing the VMS port
-README.vos Notes about Stratus VOS port
-README.win32 Notes about Win32 port
-Todo.micro The Wishlist for microperl
-XSUB.h Include file for extension subroutines
-apollo/netinet/in.h Apollo DomainOS port: C header file frontend
-av.c Array value code
-av.h Array value header
-beos/nm.c BeOS port
-bytecode.pl Produces ext/ByteLoader/byterun.h, ext/ByteLoader/byterun.c and ext/B/Asmdata.pm
-cc_runtime.h Macros need by runtime of compiler-generated code
-cflags.SH A script that emits C compilation flags per file
-config_h.SH Produces config.h
configpm Produces lib/Config.pm
+Configure Portability tool
configure.com Configure-equivalent for VMS
configure.gnu Crude emulation of GNU configure
+config_h.SH Produces config.h
cop.h Control operator header
+Copying The GNU General Public License
+Cross/README Cross-compilation
cv.h Code value header
-cygwin/Makefile.SHs Shared library generation for Cygwin port
cygwin/cygwin.c Additional code for Cygwin port
cygwin/ld2.in ld wrapper template for Cygwin port
+cygwin/Makefile.SHs Shared library generation for Cygwin port
cygwin/perlld.in dll generator template for Cygwin port
deb.c Debugging routines
djgpp/config.over DOS/DJGPP port
epoc/config.sh EPOC port config.sh template
epoc/createpkg.pl EPOC port generate PKG file
epoc/epoc.c EPOC port
-epoc/epoc_stubs.c EPOC port
epoc/epocish.c EPOC port
epoc/epocish.h EPOC port
+epoc/epoc_stubs.c EPOC port
epoc/link.pl EPOC port link a exe
+ext/attrs.t See if attrs works with C<sub : attrs>
+ext/attrs/attrs.pm attrs extension Perl module
+ext/attrs/attrs.xs attrs extension external subroutines
+ext/attrs/Makefile.PL attrs extension makefile writer
ext/B/B.pm Compiler backend support functions and methods
ext/B/B.t See if B works
ext/B/B.xs Compiler backend external subroutines
ext/B/B/Asmdata.pm Compiler backend data for assembler
+ext/B/B/assemble Assemble compiler bytecode
ext/B/B/Assembler.pm Compiler backend assembler support functions
ext/B/B/Bblock.pm Compiler basic block analysis support
ext/B/B/Bytecode.pm Compiler Bytecode backend
ext/B/B/C.pm Compiler C backend
ext/B/B/CC.pm Compiler CC backend
+ext/B/B/cc_harness Simplistic wrapper for using -MO=CC compiler
ext/B/B/Concise.pm Compiler Concise backend
ext/B/B/Debug.pm Compiler Debug backend
ext/B/B/Deparse.pm Compiler Deparse backend
+ext/B/B/disassemble Disassemble compiler bytecode output
ext/B/B/Disassembler.pm Compiler Disassembler backend
ext/B/B/Lint.pm Compiler Lint backend
+ext/B/B/makeliblinks Make a simplistic XSUB .so symlink tree for compiler
ext/B/B/Showlex.pm Compiler Showlex backend
ext/B/B/Stackobj.pm Compiler stack objects support functions
ext/B/B/Stash.pm Compiler module to identify stashes
ext/B/B/Terse.pm Compiler Terse backend
ext/B/B/Xref.pm Compiler Xref backend
-ext/B/B/assemble Assemble compiler bytecode
-ext/B/B/cc_harness Simplistic wrapper for using -MO=CC compiler
-ext/B/B/disassemble Disassemble compiler bytecode output
-ext/B/B/makeliblinks Make a simplistic XSUB .so symlink tree for compiler
ext/B/Debug.t See if B::Debug works
+ext/B/defsubs_h.PL Generator for constant subroutines
ext/B/Deparse.t See if B::Deparse works
ext/B/Makefile.PL Compiler backend makefile writer
ext/B/NOTES Compiler backend notes
ext/B/O.pm Compiler front-end module (-MO=...)
-ext/B/README Compiler backend README
-ext/B/Showlex.t See if B::ShowLex works
-ext/B/Stash.t See if B::Stash works
-ext/B/TESTS Compiler backend test data
-ext/B/Todo Compiler backend Todo list
-ext/B/defsubs_h.PL Generator for constant subroutines
ext/B/ramblings/cc.notes Compiler ramblings: notes on CC backend
ext/B/ramblings/curcop.runtime Compiler ramblings: notes on curcop use
ext/B/ramblings/flip-flop Compiler ramblings: notes on flip-flop
ext/B/ramblings/magic Compiler ramblings: notes on magic
ext/B/ramblings/reg.alloc Compiler ramblings: register allocation
ext/B/ramblings/runtime.porting Compiler ramblings: porting PP enging
+ext/B/README Compiler backend README
+ext/B/Showlex.t See if B::ShowLex works
+ext/B/Stash.t See if B::Stash works
+ext/B/TESTS Compiler backend test data
+ext/B/Todo Compiler backend Todo list
ext/B/typemap Compiler backend interface types
+ext/ByteLoader/bytecode.h Bytecode header for bytecode loader
ext/ByteLoader/ByteLoader.pm Bytecode loader Perl module
ext/ByteLoader/ByteLoader.xs Bytecode loader external subroutines
-ext/ByteLoader/Makefile.PL Bytecode loader makefile writer
-ext/ByteLoader/bytecode.h Bytecode header for bytecode loader
ext/ByteLoader/byterun.c Runtime support for bytecode loader
ext/ByteLoader/byterun.h Header for byterun.c
ext/ByteLoader/hints/sunos.pl Hints for named architecture
+ext/ByteLoader/Makefile.PL Bytecode loader makefile writer
ext/Cwd/Cwd.t See if Cwd works
ext/Cwd/Cwd.xs Cwd extension external subroutines
ext/Cwd/Makefile.PL Cwd extension makefile maker
+ext/Data/Dumper/Changes Data pretty printer, changelog
+ext/Data/Dumper/Dumper.pm Data pretty printer, module
+ext/Data/Dumper/Dumper.xs Data pretty printer, externals
+ext/Data/Dumper/Makefile.PL Data pretty printer, makefile writer
+ext/Data/Dumper/t/dumper.t See if Data::Dumper works
+ext/Data/Dumper/t/overload.t See if Data::Dumper works for overloaded data
+ext/Data/Dumper/Todo Data pretty printer, futures
ext/DB_File/Changes Berkeley DB extension change log
+ext/DB_File/dbinfo Berkeley DB database version checker
ext/DB_File/DB_File.pm Berkeley DB extension Perl module
ext/DB_File/DB_File.xs Berkeley DB extension external subroutines
ext/DB_File/DB_File_BS Berkeley DB extension mkbootstrap fodder
-ext/DB_File/Makefile.PL Berkeley DB extension makefile writer
-ext/DB_File/dbinfo Berkeley DB database version checker
ext/DB_File/hints/dynixptx.pl Hint for DB_File for named architecture
ext/DB_File/hints/sco.pl Hint for DB_File for named architecture
+ext/DB_File/Makefile.PL Berkeley DB extension makefile writer
ext/DB_File/t/db-btree.t See if DB_File works
ext/DB_File/t/db-hash.t See if DB_File works
ext/DB_File/t/db-recno.t See if DB_File works
ext/DB_File/typemap Berkeley DB extension interface types
ext/DB_File/version.c Berkeley DB extension interface version check
-ext/Data/Dumper/Changes Data pretty printer, changelog
-ext/Data/Dumper/Dumper.pm Data pretty printer, module
-ext/Data/Dumper/Dumper.xs Data pretty printer, externals
-ext/Data/Dumper/Makefile.PL Data pretty printer, makefile writer
-ext/Data/Dumper/Todo Data pretty printer, futures
-ext/Data/Dumper/t/dumper.t See if Data::Dumper works
-ext/Data/Dumper/t/overload.t See if Data::Dumper works for overloaded data
ext/Devel/DProf/Changes Perl code profiler changelog
ext/Devel/DProf/DProf.pm Perl code profiler
ext/Devel/DProf/DProf.xs Perl code profiler
ext/Devel/Peek/Peek.t See if Devel::Peek works
ext/Devel/Peek/Peek.xs Data debugging tool, externals
ext/Digest/MD5/Changes Digest::MD5 extension changes
+ext/Digest/MD5/hints/irix_6.pl Hints for named architecture
+ext/Digest/MD5/Makefile.PL Digest::MD5 extension makefile writer
ext/Digest/MD5/MD5.pm Digest::MD5 extension
ext/Digest/MD5/MD5.xs Digest::MD5 extension
-ext/Digest/MD5/Makefile.PL Digest::MD5 extension makefile writer
-ext/Digest/MD5/hints/irix_6.pl Hints for named architecture
ext/Digest/MD5/t/aaa.t See if Digest::MD5 extension works
ext/Digest/MD5/t/align.t See if Digest::MD5 extension works
ext/Digest/MD5/t/badfile.t See if Digest::MD5 extension works
ext/Digest/MD5/t/files.t See if Digest::MD5 extension works
ext/Digest/MD5/typemap Digest::MD5 extension
-ext/DynaLoader/DynaLoader_pm.PL Dynamic Loader perl module
-ext/DynaLoader/Makefile.PL Dynamic Loader makefile writer
-ext/DynaLoader/README Dynamic Loader notes and intro
-ext/DynaLoader/XSLoader_pm.PL Simple XS Loader perl module
+ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files
ext/DynaLoader/dl_aix.xs AIX implementation
ext/DynaLoader/dl_beos.xs BeOS implementation
ext/DynaLoader/dl_dld.xs GNU dld style implementation
ext/DynaLoader/dl_none.xs Stub implementation
ext/DynaLoader/dl_vmesa.xs VM/ESA implementation
ext/DynaLoader/dl_vms.xs VMS implementation
-ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files
+ext/DynaLoader/DynaLoader_pm.PL Dynamic Loader perl module
ext/DynaLoader/hints/aix.pl Hint for DynaLoader for named architecture
ext/DynaLoader/hints/linux.pl Hint for DynaLoader for named architecture
ext/DynaLoader/hints/netbsd.pl Hint for DynaLoader for named architecture
ext/DynaLoader/hints/openbsd.pl Hint for DynaLoader for named architecture
+ext/DynaLoader/Makefile.PL Dynamic Loader makefile writer
+ext/DynaLoader/README Dynamic Loader notes and intro
+ext/DynaLoader/XSLoader_pm.PL Simple XS Loader perl module
ext/Encode.t See if Encode works
+ext/Encode/compile Encode extension
+ext/Encode/encengine.c Encode extension
+ext/Encode/encode.h Encode extension
ext/Encode/Encode.pm Encode extension
ext/Encode/Encode.xs Encode extension
-ext/Encode/Encode/EncodeFormat.pod Encoding table format
-ext/Encode/Encode/Tcl.pm Handler for .enc encodings
ext/Encode/Encode/ascii.enc Encoding tables
ext/Encode/Encode/ascii.ucm Encoding tables
ext/Encode/Encode/big5.enc Encoding tables
ext/Encode/Encode/cp950.enc Encoding tables
ext/Encode/Encode/dingbats.enc Encoding tables
ext/Encode/Encode/dingbats.ucm Encoding tables
+ext/Encode/Encode/EncodeFormat.pod Encoding table format
ext/Encode/Encode/euc-cn.enc Encoding tables
ext/Encode/Encode/euc-jp.enc Encoding tables
ext/Encode/Encode/euc-kr.enc Encoding tables
ext/Encode/Encode/shiftjis.enc Encoding tables
ext/Encode/Encode/symbol.enc Encoding tables
ext/Encode/Encode/symbol.ucm Encoding tables
+ext/Encode/Encode/Tcl.pm Handler for .enc encodings
ext/Encode/Makefile.PL Encode extension
ext/Encode/Todo Encode extension
-ext/Encode/compile Encode extension
-ext/Encode/encengine.c Encode extension
-ext/Encode/encode.h Encode extension
ext/Errno/ChangeLog Errno perl module change log
ext/Errno/Errno.t See if Errno works
ext/Errno/Errno_pm.PL Errno perl module create script
ext/Fcntl/Fcntl.xs Fcntl extension external subroutines
ext/Fcntl/Makefile.PL Fcntl extension makefile writer
ext/Fcntl/syslfs.t See if large files work for sysio
+ext/File/Glob/bsd_glob.c File::Glob extension run time code
+ext/File/Glob/bsd_glob.h File::Glob extension header file
ext/File/Glob/Changes File::Glob extension changelog
ext/File/Glob/Glob.pm File::Glob extension module
ext/File/Glob/Glob.xs File::Glob extension external subroutines
ext/File/Glob/Makefile.PL File::Glob extension makefile writer
+ext/File/Glob/t/basic.t See if File::Glob works
+ext/File/Glob/t/case.t See if File::Glob works
+ext/File/Glob/t/global.t See if File::Glob works
+ext/File/Glob/t/taint.t See if File::Glob works
ext/File/Glob/TODO File::Glob extension todo list
-ext/File/Glob/bsd_glob.c File::Glob extension run time code
-ext/File/Glob/bsd_glob.h File::Glob extension header file
+ext/Filter/t/call.t See if Filter::Util::Call works
ext/Filter/Util/Call/Call.pm Filter::Util::Call extension module
ext/Filter/Util/Call/Call.xs Filter::Util::Call extension external subroutines
ext/Filter/Util/Call/Makefile.PL Filter::Util::Call extension makefile writer
-ext/Filter/t/call.t See if Filter::Util::Call works
+ext/GDBM_File/gdbm.t See if GDBM_File works
ext/GDBM_File/GDBM_File.pm GDBM extension Perl module
ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines
-ext/GDBM_File/Makefile.PL GDBM extension makefile writer
-ext/GDBM_File/gdbm.t See if GDBM_File works
ext/GDBM_File/hints/sco.pl Hint for GDBM_File for named architecture
+ext/GDBM_File/Makefile.PL GDBM extension makefile writer
ext/GDBM_File/typemap GDBM extension interface types
ext/IO/ChangeLog IO perl module change log
ext/IO/IO.pm Top-level interface to IO::* classes
ext/IO/IO.xs IO extension external subroutines
-ext/IO/Makefile.PL IO extension makefile writer
-ext/IO/README IO extension maintenance notice
ext/IO/lib/IO/Dir.pm IO directory reading package
ext/IO/lib/IO/File.pm IO file handle package
ext/IO/lib/IO/Handle.pm IO base handle package
ext/IO/lib/IO/t/io_udp.t See if UDP socket-related methods from IO work
ext/IO/lib/IO/t/io_unix.t See if UNIX socket-related methods from IO work
ext/IO/lib/IO/t/io_xs.t See if XSUB methods from IO work
+ext/IO/Makefile.PL IO extension makefile writer
ext/IO/poll.c IO poll() emulation using select()
ext/IO/poll.h IO poll() emulation using select()
+ext/IO/README IO extension maintenance notice
ext/IPC/SysV/ChangeLog IPC::SysV extension Perl module
-ext/IPC/SysV/MANIFEST IPC::SysV extension Perl module
+ext/IPC/SysV/hints/cygwin.pl Hint for IPC::SysV for named architecture
+ext/IPC/SysV/hints/next_3.pl Hint for IPC::SysV for named architecture
+ext/IPC/SysV/ipcsysv.t See if IPC::SysV works
ext/IPC/SysV/Makefile.PL IPC::SysV extension Perl module
+ext/IPC/SysV/MANIFEST IPC::SysV extension Perl module
ext/IPC/SysV/Msg.pm IPC::SysV extension Perl module
ext/IPC/SysV/README IPC::SysV extension Perl module
ext/IPC/SysV/Semaphore.pm IPC::SysV extension Perl module
ext/IPC/SysV/SysV.pm IPC::SysV extension Perl module
ext/IPC/SysV/SysV.xs IPC::SysV extension Perl module
-ext/IPC/SysV/hints/cygwin.pl Hint for IPC::SysV for named architecture
-ext/IPC/SysV/hints/next_3.pl Hint for IPC::SysV for named architecture
-ext/IPC/SysV/ipcsysv.t See if IPC::SysV works
ext/IPC/SysV/t/msg.t IPC::SysV extension Perl module
ext/IPC/SysV/t/sem.t IPC::SysV extension Perl module
ext/List/Util/ChangeLog Util extension
-ext/List/Util/Makefile.PL Util extension
-ext/List/Util/README Util extension
-ext/List/Util/Util.xs Util extension
ext/List/Util/lib/List/Util.pm List::Util
ext/List/Util/lib/Scalar/Util.pm Scalar::Util
+ext/List/Util/Makefile.PL Util extension
+ext/List/Util/README Util extension
ext/List/Util/t/blessed.t Scalar::Util
ext/List/Util/t/dualvar.t Scalar::Util
ext/List/Util/t/first.t List::Util
ext/List/Util/t/sum.t List::Util
ext/List/Util/t/tainted.t Scalar::Util
ext/List/Util/t/weak.t Scalar::Util
+ext/List/Util/Util.xs Util extension
ext/MIME/Base64/Base64.pm MIME::Base64 extension
ext/MIME/Base64/Base64.xs MIME::Base64 extension
ext/MIME/Base64/Changes MIME::Base64 extension
ext/MIME/Base64/t/base64.t See whether MIME::Base64 works
ext/MIME/Base64/t/qp.t See whether MIME::QuotedPrint works
ext/MIME/Base64/t/unicode.t See whether MIME::Base64 works
-ext/NDBM_File/Makefile.PL NDBM extension makefile writer
-ext/NDBM_File/NDBM_File.pm NDBM extension Perl module
-ext/NDBM_File/NDBM_File.xs NDBM extension external subroutines
ext/NDBM_File/hints/cygwin.pl Hint for NDBM_File for named architecture
ext/NDBM_File/hints/dec_osf.pl Hint for NDBM_File for named architecture
ext/NDBM_File/hints/dynixptx.pl Hint for NDBM_File for named architecture
ext/NDBM_File/hints/sco.pl Hint for NDBM_File for named architecture
ext/NDBM_File/hints/solaris.pl Hint for NDBM_File for named architecture
ext/NDBM_File/hints/svr4.pl Hint for NDBM_File for named architecture
+ext/NDBM_File/Makefile.PL NDBM extension makefile writer
ext/NDBM_File/ndbm.t See if NDBM_File works
+ext/NDBM_File/NDBM_File.pm NDBM extension Perl module
+ext/NDBM_File/NDBM_File.xs NDBM extension external subroutines
ext/NDBM_File/typemap NDBM extension interface types
-ext/ODBM_File/Makefile.PL ODBM extension makefile writer
-ext/ODBM_File/ODBM_File.pm ODBM extension Perl module
-ext/ODBM_File/ODBM_File.xs ODBM extension external subroutines
ext/ODBM_File/hints/cygwin.pl Hint for ODBM_File for named architecture
ext/ODBM_File/hints/dec_osf.pl Hint for ODBM_File for named architecture
ext/ODBM_File/hints/hpux.pl Hint for ODBM_File for named architecture
ext/ODBM_File/hints/solaris.pl Hint for ODBM_File for named architecture
ext/ODBM_File/hints/svr4.pl Hint for ODBM_File for named architecture
ext/ODBM_File/hints/ultrix.pl Hint for ODBM_File for named architecture
+ext/ODBM_File/Makefile.PL ODBM extension makefile writer
ext/ODBM_File/odbm.t See if ODBM_File works
+ext/ODBM_File/ODBM_File.pm ODBM extension Perl module
+ext/ODBM_File/ODBM_File.xs ODBM extension external subroutines
ext/ODBM_File/sdbm.t See if SDBM_File works
ext/ODBM_File/typemap ODBM extension interface types
ext/Opcode/Makefile.PL Opcode extension makefile writer
ext/Opcode/Opcode.pm Opcode extension Perl module
ext/Opcode/Opcode.t See if Opcode works
ext/Opcode/Opcode.xs Opcode extension external subroutines
-ext/Opcode/Safe.pm Safe extension Perl module
ext/Opcode/ops.pm "Pragma" form of Opcode extension Perl module
ext/Opcode/ops.t See if Opcode works
-ext/POSIX/Makefile.PL POSIX extension makefile writer
-ext/POSIX/POSIX.pm POSIX extension Perl module
-ext/POSIX/POSIX.pod POSIX extension documentation
-ext/POSIX/POSIX.t See if POSIX works
-ext/POSIX/POSIX.xs POSIX extension external subroutines
-ext/POSIX/hints/bsdos.pl Hint for POSIX for named architecture
-ext/POSIX/hints/dynixptx.pl Hint for POSIX for named architecture
-ext/POSIX/hints/freebsd.pl Hint for POSIX for named architecture
-ext/POSIX/hints/linux.pl Hint for POSIX for named architecture
-ext/POSIX/hints/mint.pl Hint for POSIX for named architecture
-ext/POSIX/hints/netbsd.pl Hint for POSIX for named architecture
-ext/POSIX/hints/next_3.pl Hint for POSIX for named architecture
-ext/POSIX/hints/openbsd.pl Hint for POSIX for named architecture
-ext/POSIX/hints/sunos_4.pl Hint for POSIX for named architecture
-ext/POSIX/hints/svr4.pl Hint for POSIX for named architecture
-ext/POSIX/hints/uts.pl Hint for POSIX for named architecture
-ext/POSIX/sigaction.t See if POSIX::sigaction works
-ext/POSIX/typemap POSIX extension interface types
+ext/Opcode/Safe.pm Safe extension Perl module
ext/PerlIO/PerlIO.t See if PerlIO works
ext/PerlIO/Scalar/Makefile.PL PerlIO layer for scalars
ext/PerlIO/Scalar/Scalar.pm PerlIO layer for scalars
ext/PerlIO/Scalar/Scalar.xs PerlIO layer for scalars
+ext/PerlIO/t/scalar.t Test of PerlIO::Scalar
ext/PerlIO/Via/Makefile.PL PerlIO layer for layers in perl
ext/PerlIO/Via/Via.pm PerlIO layer for layers in perl
ext/PerlIO/Via/Via.xs PerlIO layer for layers in perl
-ext/PerlIO/t/scalar.t Test of PerlIO::Scalar
+ext/POSIX/hints/bsdos.pl Hint for POSIX for named architecture
+ext/POSIX/hints/dynixptx.pl Hint for POSIX for named architecture
+ext/POSIX/hints/freebsd.pl Hint for POSIX for named architecture
+ext/POSIX/hints/linux.pl Hint for POSIX for named architecture
+ext/POSIX/hints/mint.pl Hint for POSIX for named architecture
+ext/POSIX/hints/netbsd.pl Hint for POSIX for named architecture
+ext/POSIX/hints/next_3.pl Hint for POSIX for named architecture
+ext/POSIX/hints/openbsd.pl Hint for POSIX for named architecture
+ext/POSIX/hints/sunos_4.pl Hint for POSIX for named architecture
+ext/POSIX/hints/svr4.pl Hint for POSIX for named architecture
+ext/POSIX/hints/uts.pl Hint for POSIX for named architecture
+ext/POSIX/Makefile.PL POSIX extension makefile writer
+ext/POSIX/POSIX.pm POSIX extension Perl module
+ext/POSIX/POSIX.pod POSIX extension documentation
+ext/POSIX/POSIX.t See if POSIX works
+ext/POSIX/POSIX.xs POSIX extension external subroutines
+ext/POSIX/sigaction.t See if POSIX::sigaction works
+ext/POSIX/typemap POSIX extension interface types
+ext/re/hints/mpeix.pl Hints for re for named architecture
+ext/re/Makefile.PL re extension makefile writer
+ext/re/re.pm re extension Perl module
+ext/re/re.xs re extension external subroutines
+ext/Safe/safe1.t See if Safe works
+ext/Safe/safe2.t See if Safe works
ext/SDBM_File/Makefile.PL SDBM extension makefile writer
-ext/SDBM_File/SDBM_File.pm SDBM extension Perl module
-ext/SDBM_File/SDBM_File.xs SDBM extension external subroutines
+ext/SDBM_File/sdbm/biblio SDBM kit
ext/SDBM_File/sdbm/CHANGES SDBM kit
ext/SDBM_File/sdbm/COMPARE SDBM kit
-ext/SDBM_File/sdbm/Makefile.PL SDBM kit
-ext/SDBM_File/sdbm/README SDBM kit
-ext/SDBM_File/sdbm/README.too SDBM kit
-ext/SDBM_File/sdbm/biblio SDBM kit
ext/SDBM_File/sdbm/dba.c SDBM kit
ext/SDBM_File/sdbm/dbd.c SDBM kit
ext/SDBM_File/sdbm/dbe.1 SDBM kit
ext/SDBM_File/sdbm/grind SDBM kit
ext/SDBM_File/sdbm/hash.c SDBM kit
ext/SDBM_File/sdbm/linux.patches SDBM kit
+ext/SDBM_File/sdbm/Makefile.PL SDBM kit
ext/SDBM_File/sdbm/makefile.sdbm SDBM kit
ext/SDBM_File/sdbm/pair.c SDBM kit
ext/SDBM_File/sdbm/pair.h SDBM kit
+ext/SDBM_File/sdbm/README SDBM kit
ext/SDBM_File/sdbm/readme.ms SDBM kit
+ext/SDBM_File/sdbm/README.too SDBM kit
ext/SDBM_File/sdbm/sdbm.3 SDBM kit
ext/SDBM_File/sdbm/sdbm.c SDBM kit
ext/SDBM_File/sdbm/sdbm.h SDBM kit
ext/SDBM_File/sdbm/tune.h SDBM kit
ext/SDBM_File/sdbm/util.c SDBM kit
+ext/SDBM_File/SDBM_File.pm SDBM extension Perl module
+ext/SDBM_File/SDBM_File.xs SDBM extension external subroutines
ext/SDBM_File/typemap SDBM extension interface types
-ext/Safe/safe1.t See if Safe works
-ext/Safe/safe2.t See if Safe works
ext/Socket/Makefile.PL Socket extension makefile writer
ext/Socket/Socket.pm Socket extension Perl module
ext/Socket/Socket.t See if Socket works
ext/Socket/Socket.xs Socket extension external subroutines
ext/Storable/ChangeLog Storable extension
-ext/Storable/MANIFEST Storable extension
ext/Storable/Makefile.PL Storable extension
+ext/Storable/MANIFEST Storable extension
ext/Storable/README Storable extension
ext/Storable/Storable.pm Storable extension
ext/Storable/Storable.xs Storable extension
ext/Sys/Hostname/Makefile.PL Sys::Hostname extension makefile writer
ext/Sys/Syslog/Makefile.PL Sys::Syslog extension makefile writer
ext/Sys/Syslog/Syslog.pm Sys::Syslog extension Perl module
-ext/Sys/Syslog/Syslog.xs Sys::Syslog extension external subroutines
ext/Sys/Syslog/syslog.t See if Sys::Syslog works
-ext/Thread/Makefile.PL Thread extension makefile writer
-ext/Thread/Notes Thread notes
-ext/Thread/README Thread README
-ext/Thread/Thread.pm Thread extension Perl module
-ext/Thread/Thread.xs Thread extension external subroutines
-ext/Thread/Thread/Queue.pm Thread synchronised queue objects
-ext/Thread/Thread/Semaphore.pm Thread semaphore objects
-ext/Thread/Thread/Signal.pm Start a thread to run signal handlers
-ext/Thread/Thread/Specific.pm Thread specific data access
+ext/Sys/Syslog/Syslog.xs Sys::Syslog extension external subroutines
ext/Thread/create.tx Test thread creation
ext/Thread/die.tx Test thread die()
ext/Thread/die2.tx Test thread die() differently
ext/Thread/join2.tx Test thread joining differently
ext/Thread/list.tx Test getting list of all threads
ext/Thread/lock.tx Test lock primitive
+ext/Thread/Makefile.PL Thread extension makefile writer
+ext/Thread/Notes Thread notes
ext/Thread/queue.tx Test Thread::Queue module
+ext/Thread/README Thread README
ext/Thread/specific.tx Test thread-specific user data
ext/Thread/sync.tx Test thread synchronisation
ext/Thread/sync2.tx Test thread synchronisation
ext/Thread/thr5005.t Test 5.005-style threading (skipped if no use5005threads)
+ext/Thread/Thread.pm Thread extension Perl module
+ext/Thread/Thread.xs Thread extension external subroutines
+ext/Thread/Thread/Queue.pm Thread synchronised queue objects
+ext/Thread/Thread/Semaphore.pm Thread semaphore objects
+ext/Thread/Thread/Signal.pm Start a thread to run signal handlers
+ext/Thread/Thread/Specific.pm Thread specific data access
ext/Thread/typemap Thread extension interface types
ext/Thread/unsync.tx Test thread implicit synchronisation
ext/Thread/unsync2.tx Test thread implicit synchronisation
ext/Time/Piece/Piece.xs Time::Piece extension
ext/Time/Piece/README Time::Piece extension
ext/Time/Piece/Seconds.pm Time::Piece extension
+ext/util/make_ext Used by Makefile to execute extension Makefiles
+ext/util/mkbootstrap Turns ext/*/*_BS into bootstrap info
ext/XS/Typemap/Makefile.PL XS::Typemap extension
ext/XS/Typemap/README XS::Typemap extension
+ext/XS/Typemap/stdio.c XS::Typemap extension
+ext/XS/Typemap/typemap XS::Typemap extension
ext/XS/Typemap/Typemap.pm XS::Typemap extension
ext/XS/Typemap/Typemap.t test that typemaps work
ext/XS/Typemap/Typemap.xs XS::Typemap extension
-ext/XS/Typemap/stdio.c XS::Typemap extension
-ext/XS/Typemap/typemap XS::Typemap extension
-ext/attrs.t See if attrs works with C<sub : attrs>
-ext/attrs/Makefile.PL attrs extension makefile writer
-ext/attrs/attrs.pm attrs extension Perl module
-ext/attrs/attrs.xs attrs extension external subroutines
-ext/re/Makefile.PL re extension makefile writer
-ext/re/hints/mpeix.pl Hints for re for named architecture
-ext/re/re.pm re extension Perl module
-ext/re/re.xs re extension external subroutines
-ext/util/make_ext Used by Makefile to execute extension Makefiles
-ext/util/mkbootstrap Turns ext/*/*_BS into bootstrap info
+EXTERN.h Included before foreign .h files
fakesdio.h stdio in terms of PerlIO
fakethr.h Fake threads header
form.h Public declarations for formats
globvar.sym Global variables that need hiding when embedded
gv.c Glob value code
gv.h Glob value header
-h2pl/README How to turn .ph files into .pl files
h2pl/cbreak.pl cbreak routines using .ph
h2pl/cbreak2.pl cbreak routines using .pl
h2pl/eg/sizeof.ph Sample sizeof array initialization
h2pl/getioctlsizes Program to extract types from ioctl.h
h2pl/mksizes Program to make %sizeof array
h2pl/mkvars Program to make .pl from .ph files
+h2pl/README How to turn .ph files into .pl files
h2pl/tcbreak cbreak test routine using .ph
h2pl/tcbreak2 cbreak test routine using .pl
handy.h Handy definitions
hints/3b1.sh Hints for named architecture
hints/3b1cc Hints for named architecture
-hints/README.hints Notes about hints
hints/aix.sh Hints for named architecture
hints/altos486.sh Hints for named architecture
hints/amigaos.sh Hints for named architecture
hints/posix-bc.sh Hints for named architecture
hints/powerux.sh Hints for named architecture
hints/qnx.sh Hints for named architecture
+hints/README.hints Notes about hints
hints/rhapsody.sh Hints for named architecture
hints/sco.sh Hints for named architecture
hints/sco_2_3_0.sh Hints for named architecture
hints/vmesa.sh Hints for named architecture
hv.c Hash value code
hv.h Hash value header
+INSTALL Detailed installation instructions
installhtml Perl script to install html files for pods
installman Perl script to install man pages for pods
installperl Perl script to do "make install" dirty work
+INTERN.h Included before domestic .h files
intrpvar.h Variables held in each interpreter instance
iperlsys.h Perl's interface to the system
+jpl/bin/jpl JPL compiler
jpl/ChangeLog Java/Perl Lingo change log
+jpl/docs/Tutorial.pod Perl and Java Tutorial
+jpl/get_jdk/get_jdk.pl JDK download tool
+jpl/get_jdk/jdk_hosts JDK availability list
+jpl/get_jdk/README Instructions for using get_jdk.pl
+jpl/install-jpl JPL install utility
jpl/JNI/Changes Java Native Interface changes
jpl/JNI/Closer.java Java Native Interface example
jpl/JNI/JNI.pm Java Native Interface module
jpl/JNI/JNI.xs Java Native Interface module
jpl/JNI/JNIConfig Java Native Interface config
-jpl/JNI/JNIConfig.Win32 Java Native Interface config
jpl/JNI/JNIConfig.kaffe Java Native Interface config
jpl/JNI/JNIConfig.noembed Java Native Interface config
jpl/JNI/JNIConfig.standard Java Native Interface config
+jpl/JNI/JNIConfig.Win32 Java Native Interface config
jpl/JNI/Makefile.PL Java Native Interface makefile generator
jpl/JNI/test.pl Java Native Interface tests
jpl/JNI/typemap Java/Perl interface typemap
jpl/JPL/Class.pm Java/Perl compiler module
jpl/JPL/Compile.pm Java/Perl compiler module
jpl/JPL/Makefile.PL Java/Perl makefile generator
+jpl/JPL_Rolo/cardfile Rolodex sample application
jpl/JPL_Rolo/JPL_Rolo.jpl Rolodex sample application
jpl/JPL_Rolo/Makefile.PL Makefile generator
jpl/JPL_Rolo/README Instructions
-jpl/JPL_Rolo/cardfile Rolodex sample application
jpl/PerlInterpreter/Makefile.PL Makefile generator
jpl/PerlInterpreter/PerlInterpreter.c Perl interpreter abstraction
jpl/PerlInterpreter/PerlInterpreter.h Perl interpreter abstraction
jpl/PerlInterpreter/PerlInterpreter.java Perl interpreter abstraction
jpl/README JPL instructions
jpl/README.JUST-JNI JPL instructions
-jpl/SETVARS.PL JPL setup
jpl/Sample/Makefile.PL JPL sample makefile generator
jpl/Sample/Sample.jpl JPL sample
+jpl/SETVARS.PL JPL setup
jpl/Test/Makefile.PL JPL tests makefile generator
jpl/Test/Test.jpl JPL tests
-jpl/bin/jpl JPL compiler
-jpl/docs/Tutorial.pod Perl and Java Tutorial
-jpl/get_jdk/README Instructions for using get_jdk.pl
-jpl/get_jdk/get_jdk.pl JDK download tool
-jpl/get_jdk/jdk_hosts JDK availability list
-jpl/install-jpl JPL install utility
keywords.h The keyword numbers
keywords.pl Program to write keywords.h
+lib/abbrev.pl An abbreviation table builder
lib/AnyDBM_File.pm Perl module to emulate dbmopen
lib/AnyDBM_File.t See if AnyDBM_File works
+lib/assert.pl assertion and panic with stack trace
lib/Attribute/Handlers.pm Attribute::Handlers
-lib/Attribute/Handlers.t See if Attribute::Handlers works
-lib/Attribute/Handlers/demo/Demo.pm Attribute::Handlers demo
-lib/Attribute/Handlers/demo/Descriptions.pm Attribute::Handlers demo
-lib/Attribute/Handlers/demo/MyClass.pm Attribute::Handlers demo
lib/Attribute/Handlers/demo/demo.pl Attribute::Handlers demo
+lib/Attribute/Handlers/demo/Demo.pm Attribute::Handlers demo
lib/Attribute/Handlers/demo/demo2.pl Attribute::Handlers demo
lib/Attribute/Handlers/demo/demo3.pl Attribute::Handlers demo
lib/Attribute/Handlers/demo/demo4.pl Attribute::Handlers demo
lib/Attribute/Handlers/demo/demo_phases.pl Attribute::Handlers demo
lib/Attribute/Handlers/demo/demo_range.pl Attribute::Handlers demo
lib/Attribute/Handlers/demo/demo_rawdata.pl Attribute::Handlers demo
+lib/Attribute/Handlers/demo/Descriptions.pm Attribute::Handlers demo
+lib/Attribute/Handlers/demo/MyClass.pm Attribute::Handlers demo
+lib/Attribute/Handlers/test.pl See if Attribute::Handlers works
+lib/attributes.pm For "sub foo : attrlist"
lib/AutoLoader.pm Autoloader base class
lib/AutoLoader.t See if AutoLoader works
lib/AutoSplit.pm Split up autoload functions
+lib/autouse.pm Load and call a function only when it's used
+lib/autouse.t See if autouse works
+lib/base.pm Establish IS-A relationship at compile time
lib/Benchmark.pm Measure execution time
lib/Benchmark.t Perl code profiler testsuite driver
+lib/bigfloat.pl An arbitrary precision floating point package
+lib/bigfloat.t See if bigfloat.pl works
+lib/bigint.pl An arbitrary precision integer arithmetic package
+lib/bigint.t See if bigint.pl works
+lib/bigrat.pl An arbitrary precision rational arithmetic package
+lib/blib.pm For "use blib"
+lib/bytes.pm Pragma to enable byte operations
+lib/bytes_heavy.pl Support routines for byte pragma
+lib/cacheout.pl Manages output filehandles when you need too many
+lib/Carp.pm Error message base class
+lib/Carp.t See if Carp works
+lib/Carp/Heavy.pm Error message workhorse
lib/CGI.pm Web server interface ("Common Gateway Interface")
lib/CGI/Apache.pm Support for Apache's Perl module
lib/CGI/Carp.pm Log server errors with helpful context
lib/CGI/Cookie.pm Interface to Netscape Cookies
-lib/CGI/Fast.pm Support for FastCGI (persistent server process)
-lib/CGI/Pretty.pm Output nicely formatted HTML
-lib/CGI/Push.pm Support for server push
-lib/CGI/Switch.pm Simple interface for multiple server types
-lib/CGI/Util.pm Utility functions
-lib/CGI/eg/RunMeFirst Setup script for CGI examples
lib/CGI/eg/caution.xbm CGI example
lib/CGI/eg/clickable_image.cgi CGI example
lib/CGI/eg/cookie.cgi CGI example
lib/CGI/eg/nph-clock.cgi CGI example
lib/CGI/eg/nph-multipart.cgi CGI example
lib/CGI/eg/popup.cgi CGI example
+lib/CGI/eg/RunMeFirst Setup script for CGI examples
lib/CGI/eg/save_state.cgi CGI example
lib/CGI/eg/tryit.cgi CGI example
lib/CGI/eg/wilogo_gif.uu CGI example
+lib/CGI/Fast.pm Support for FastCGI (persistent server process)
+lib/CGI/Pretty.pm Output nicely formatted HTML
+lib/CGI/Push.pm Support for server push
+lib/CGI/Switch.pm Simple interface for multiple server types
lib/CGI/t/form.t See if CGI.pm works
lib/CGI/t/function.t See if CGI.pm works
lib/CGI/t/html.t See if CGI.pm works
lib/CGI/t/pretty.t See if CGI.pm works
lib/CGI/t/request.t See if CGI.pm works
lib/CGI/t/util.t See if CGI.pm works
+lib/CGI/Util.pm Utility functions
+lib/charnames.pm Character names
+lib/charnames.t See if character names work
+lib/Class/ISA.pm Class::ISA
+lib/Class/ISA/test.pl See if Class::ISA works
+lib/Class/Struct.pm Declare struct-like datatypes as Perl classes
+lib/Class/Struct.t See if Class::Struct works
+lib/complete.pl A command completion subroutine
+lib/constant.pm For "use constant"
+lib/constant.t See if compile-time constants work
lib/CPAN.pm Interface to Comprehensive Perl Archive Network
lib/CPAN/FirstTime.pm Utility for creating CPAN config files
lib/CPAN/Nox.pm Runs CPAN while avoiding compiled extensions
lib/CPAN/t/loadme.t See if CPAN the module works
lib/CPAN/t/vcmp.t See if CPAN the module works
-lib/Carp.pm Error message base class
-lib/Carp.t See if Carp works
-lib/Carp/Heavy.pm Error message workhorse
-lib/Class/ISA.pm Class::ISA
-lib/Class/ISA/test.pl See if Class::ISA works
-lib/Class/Struct.pm Declare struct-like datatypes as Perl classes
-lib/Class/Struct.t See if Class::Struct works
+lib/ctime.pl A ctime workalike
lib/Cwd.pm Various cwd routines (getcwd, fastcwd, chdir)
lib/DB.pm Debugger API (draft)
lib/Devel/SelfStubber.pm Generate stubs for SelfLoader.pm
lib/Devel/SelfStubber.t See if Devel::SelfStubber works
+lib/diagnostics.pm Print verbose diagnostics
+lib/diagnostics.t See if diagnostics.pm works
lib/Digest.pm Digest extensions
lib/Digest.t See if Digest extensions work
lib/DirHandle.pm like FileHandle only for directories
lib/DirHandle.t See if DirHandle works
+lib/dotsh.pl Code to "dot" in a shell script
lib/Dumpvalue.pm Screen dump of perl values
+lib/dumpvar.pl A variable dumper
lib/English.pm Readable aliases for short variables
lib/English.t See if English works
lib/Env.pm Map environment into ordinary variables
lib/Env/array.t See if Env works
lib/Env/env.t See if Env works for arrays
+lib/exceptions.pl catch and throw routines
lib/Exporter.pm Exporter base class
lib/Exporter.t See if Exporter works
lib/Exporter/Heavy.pm Complicated routines for Exporter
lib/ExtUtils/Command.pm Utilities for Make on non-UNIX platforms
lib/ExtUtils/Constant.pm generate XS code to import C header constants
lib/ExtUtils/Embed.pm Utilities for embedding Perl in C programs
+lib/ExtUtils/inst Give information about installed extensions
lib/ExtUtils/Install.pm Handles 'make install' on extensions
lib/ExtUtils/Installed.pm Information on installed extensions
lib/ExtUtils/Liblist.pm Locates libraries
+lib/ExtUtils/MakeMaker.pm Write Makefiles for extensions
+lib/ExtUtils/Manifest.pm Utilities to write MANIFEST files
lib/ExtUtils/MANIFEST.SKIP The default MANIFEST.SKIP
+lib/ExtUtils/Mkbootstrap.pm Writes a bootstrap file (see MakeMaker)
+lib/ExtUtils/Mksymlists.pm Writes a linker options file for extensions
lib/ExtUtils/MM_Cygwin.pm MakeMaker methods for Cygwin
lib/ExtUtils/MM_NW5.pm MakeMaker methods for NetWare
lib/ExtUtils/MM_OS2.pm MakeMaker methods for OS/2
lib/ExtUtils/MM_Unix.pm MakeMaker base class for Unix
lib/ExtUtils/MM_VMS.pm MakeMaker methods for VMS
lib/ExtUtils/MM_Win32.pm MakeMaker methods for Win32
-lib/ExtUtils/MakeMaker.pm Write Makefiles for extensions
-lib/ExtUtils/Manifest.pm Utilities to write MANIFEST files
-lib/ExtUtils/Mkbootstrap.pm Writes a bootstrap file (see MakeMaker)
-lib/ExtUtils/Mksymlists.pm Writes a linker options file for extensions
lib/ExtUtils/Packlist.pm Manipulates .packlist files
-lib/ExtUtils/inst Give information about installed extensions
lib/ExtUtils/testlib.pm Fixes up @INC to use just-built extension
lib/ExtUtils/typemap Extension interface types
lib/ExtUtils/xsubpp External subroutine preprocessor
+lib/fastcwd.pl a faster but more dangerous getcwd
lib/Fatal.pm Make errors in functions/builtins fatal
lib/Fatal.t See if Fatal works
+lib/fields.pm Set up object field names for pseudo-hash-using classes
+lib/fields.t See if base/fields works
lib/File/Basename.pm Emulate the basename program
lib/File/Basename.t See if File::Basename works
lib/File/CheckTree.pm Perl module supporting wholesale file mode validation
lib/File/Find.pm Routines to do a find
lib/File/Find/find.t See if File::Find works
lib/File/Find/taint.t See if File::Find works with taint
-lib/File/Glob/basic.t See if File::Glob works
-lib/File/Glob/case.t See if File::Glob works
-lib/File/Glob/global.t See if File::Glob works
-lib/File/Glob/taint.t See if File::Glob works
lib/File/Path.pm Do things like `mkdir -p' and `rm -r'
lib/File/Path.t See if File::Path works
lib/File/Spec.pm portable operations on file names
lib/File/Spec/Unix.pm portable operations on Unix file names
lib/File/Spec/VMS.pm portable operations on VMS file names
lib/File/Spec/Win32.pm portable operations on Win32 file names
-lib/File/Temp.pm create safe temporary files and file handles
-lib/File/Temp/mktemp.t See if File::Temp works
-lib/File/Temp/posix.t See if File::Temp works
-lib/File/Temp/security.t See if File::Temp works
-lib/File/Temp/tempfile.t See if File::Temp works
lib/File/stat.pm By-name interface to Perl's builtin stat
lib/File/stat.t See if File::stat works
+lib/File/Temp.pm create safe temporary files and file handles
+lib/File/Temp/t/mktemp.t See if File::Temp works
+lib/File/Temp/t/posix.t See if File::Temp works
+lib/File/Temp/t/security.t See if File::Temp works
+lib/File/Temp/t/tempfile.t See if File::Temp works
lib/FileCache.pm Keep more files open than the system permits
lib/FileCache.t See if FileCache works
lib/FileHandle.pm Backward-compatible front end to IO extension
lib/FileHandle.t See if FileHandle works
+lib/filetest.pm For "use filetest"
lib/Filter/Simple.pm Simple frontend to Filter::Util::Call
lib/Filter/Simple/test.pl See if Filter::Simple works
+lib/find.pl A find emulator--used by find2perl
lib/FindBin.pm Find name of currently executing program
lib/FindBin.t See if FindBin works
+lib/finddepth.pl A depth-first find emulator--used by find2perl
+lib/flush.pl Routines to do single flush
+lib/ftp.pl FTP code (obsolete, use Net::FTP instead)
+lib/getcwd.pl A getcwd() emulator
+lib/getopt.pl Perl library supporting option parsing
lib/Getopt/Long.pm Fetch command options (GetOptions)
-lib/Getopt/Long/basic.t See if Getopt::Long works
-lib/Getopt/Long/compat.t See if Getopt::Long works
-lib/Getopt/Long/linkage.t See if Getopt::Long works
-lib/Getopt/Long/oo.t See if Getopt::Long works
+lib/Getopt/Long/t/basic.t See if Getopt::Long works
+lib/Getopt/Long/t/compat.t See if Getopt::Long works
+lib/Getopt/Long/t/linkage.t See if Getopt::Long works
+lib/Getopt/Long/t/oo.t See if Getopt::Long works
lib/Getopt/Std.pm Fetch command options (getopt, getopts)
lib/Getopt/Std.t See if Getopt::Std and Getopt::Long work
+lib/getopts.pl Perl library supporting option parsing
+lib/h2ph.t See if h2ph works like it should
+lib/hostname.pl Old hostname code
lib/I18N/Collate.pm Routines to do strxfrm-based collation
lib/I18N/Collate.t See if I18N::Collate works
lib/I18N/LangTags.pm I18N::LangTags
lib/I18N/LangTags/List.pm List of tags for human languages
lib/I18N/LangTags/README I18N::LangTags
lib/I18N/LangTags/test.pl See if I18N::LangTags works
+lib/importenv.pl Perl routine to get environment into variables
+lib/integer.pm For "use integer"
lib/IPC/Open2.pm Open a two-ended pipe
lib/IPC/Open2.t See if IPC::Open2 works
lib/IPC/Open3.pm Open a three-ended pipe!
lib/IPC/Open3.t See if IPC::Open3 works
lib/IPC/SysV.t See if IPC::SysV works
+lib/less.pm For "use less"
+lib/lib_pm.PL For "use lib", produces lib/lib.pm
+lib/locale.pm For "use locale"
+lib/locale.t See if locale support works
lib/Locale/Codes/t/all.t See if Locale::Codes work
lib/Locale/Codes/t/constants.t See if Locale::Codes work
lib/Locale/Codes/t/country.t See if Locale::Codes work
lib/Locale/Maketext/README Locale::Maketext
lib/Locale/Maketext/test.pl See if Locale::Maketext works
lib/Locale/Maketext/TPJ13.pod Locale::Maketext documentation article
+lib/look.pl A "look" equivalent
lib/Math/BigFloat.pm An arbitrary precision floating-point arithmetic package
lib/Math/BigInt.pm An arbitrary precision integer arithmetic package
lib/Math/BigInt/t/bigfltpm.t See if BigFloat.pm works
lib/Memoize/ExpireTest.pm Memoize
lib/Memoize/NDBM_File.pm Memoize
lib/Memoize/README Memoize
-lib/Memoize/SDBM_File.pm Memoize
lib/Memoize/Saves.pm Memoize
+lib/Memoize/SDBM_File.pm Memoize
lib/Memoize/Storable.pm Memoize
-lib/Memoize/TODO Memoize
lib/Memoize/t/array.t Memoize
lib/Memoize/t/correctness.t Memoize
lib/Memoize/t/errors.t Memoize
lib/Memoize/t/prototype.t Memoize
lib/Memoize/t/speed.t Memoize
lib/Memoize/t/tie.t Memoize
+lib/Memoize/t/tiefeatures.t Memoize
lib/Memoize/t/tie_gdbm.t Memoize
lib/Memoize/t/tie_ndbm.t Memoize
lib/Memoize/t/tie_sdbm.t Memoize
lib/Memoize/t/tie_storable.t Memoize
-lib/Memoize/t/tiefeatures.t Memoize
lib/Memoize/t/unmemoize.t Memoize
-lib/NEXT.pm Pseudo-class NEXT for method redispatch
-lib/NEXT/test.pl See if NEXT works
+lib/Memoize/TODO Memoize
lib/Net/ChangeLog.libnet libnet
lib/Net/Cmd.pm libnet
lib/Net/Config.eg libnet
lib/Net/Config.pm libnet
-lib/Net/Domain.pm libnet
-lib/Net/DummyInetd.pm libnet
-lib/Net/FTP.pm libnet
-lib/Net/FTP/A.pm libnet
-lib/Net/FTP/E.pm libnet
-lib/Net/FTP/I.pm libnet
-lib/Net/FTP/L.pm libnet
-lib/Net/FTP/dataconn.pm libnet
-lib/Net/Hostname.eg libnet
-lib/Net/NNTP.pm libnet
-lib/Net/Netrc.pm libnet
-lib/Net/PH.pm libnet
-lib/Net/POP3.pm libnet
-lib/Net/Ping.pm Hello, anybody home?
-lib/Net/README.config libnet
-lib/Net/README.libnet libnet
-lib/Net/SMTP.pm libnet
-lib/Net/SNPP.pm libnet
-lib/Net/Time.pm libnet
lib/Net/demos/ftp libnet
lib/Net/demos/inetd libnet
lib/Net/demos/nntp libnet
lib/Net/demos/smtp.self libnet
lib/Net/demos/snpp libnet
lib/Net/demos/time libnet
+lib/Net/Domain.pm libnet
+lib/Net/DummyInetd.pm libnet
+lib/Net/FTP.pm libnet
+lib/Net/FTP/A.pm libnet
+lib/Net/FTP/dataconn.pm libnet
+lib/Net/FTP/E.pm libnet
+lib/Net/FTP/I.pm libnet
+lib/Net/FTP/L.pm libnet
lib/Net/hostent.pm By-name interface to Perl's builtin gethost*
lib/Net/hostent.t See if Net::hostent works
+lib/Net/Hostname.eg libnet
lib/Net/libnet.ppd libnet
lib/Net/libnetFAQ.pod libnet
lib/Net/netent.pm By-name interface to Perl's builtin getnet*
lib/Net/netent.t See if Net::netent works
+lib/Net/Netrc.pm libnet
+lib/Net/NNTP.pm libnet
+lib/Net/PH.pm libnet
+lib/Net/Ping.pm Hello, anybody home?
+lib/Net/POP3.pm libnet
lib/Net/protoent.pm By-name interface to Perl's builtin getproto*
lib/Net/protoent.t See if Net::protoent works
+lib/Net/README.config libnet
+lib/Net/README.libnet libnet
lib/Net/servent.pm By-name interface to Perl's builtin getserv*
lib/Net/servent.t See if Net::servtent works
+lib/Net/SMTP.pm libnet
+lib/Net/SNPP.pm libnet
lib/Net/t/ftp.t libnet
lib/Net/t/hostname.t libnet
lib/Net/t/nntp.t libnet
lib/Net/t/ph.t libnet
lib/Net/t/require.t libnet
lib/Net/t/smtp.t libnet
+lib/Net/Time.pm libnet
+lib/newgetopt.pl A perl library supporting long option parsing
+lib/NEXT.pm Pseudo-class NEXT for method redispatch
+lib/NEXT/test.pl See if NEXT works
+lib/open.pm Pragma to specify default I/O disciplines
+lib/open2.pl Open a two-ended pipe (uses IPC::Open2)
+lib/open3.pl Open a three-ended pipe (uses IPC::Open3)
+lib/overload.pm Module for overloading perl operators
+lib/overload.t See if operator overloading works
+lib/perl5db.pl Perl debugging routines
lib/PerlIO.pm PerlIO support module
+lib/ph.t See if h2ph works
lib/Pod/Checker.pm Pod-Parser - check POD documents for syntax errors
lib/Pod/Find.pm used by pod/splitpod
lib/Pod/Functions.pm used by pod/splitpod
lib/Pod/InputObjects.pm Pod-Parser - define objects for input streams
lib/Pod/LaTeX.pm Convert POD data to LaTeX
lib/Pod/Man.pm Convert POD data to *roff
-lib/Pod/ParseUtils.pm Pod-Parser - pod utility functions
lib/Pod/Parser.pm Pod-Parser - define base class for parsing POD
+lib/Pod/ParseUtils.pm Pod-Parser - pod utility functions
lib/Pod/Plainer.pm Pod migration utility module
lib/Pod/Select.pm Pod-Parser - select portions of POD docs
lib/Pod/Text.pm Pod-Parser - convert POD data to formatted ASCII text
lib/Pod/Text/Color.pm Convert POD data to color ASCII text
-lib/Pod/Text/Overstrike.pm Convert POD data to formatted overstrike text
-lib/Pod/Text/Termcap.pm Convert POD data to ASCII text with format escapes
-lib/Pod/Usage.pm Pod-Parser - print usage messages
-lib/Search/Dict.pm Perform binary search on dictionaries
-lib/Search/Dict.t See if Search::Dict works
-lib/SelectSaver.pm Enforce proper select scoping
-lib/SelectSaver.t See if SelectSaver works
-lib/SelfLoader.pm Load functions only on demand
-lib/SelfLoader.t See if SelfLoader works
-lib/Shell.pm Make AUTOLOADed system() calls
-lib/Switch.pm Switch for Perl
-lib/Switch/test.pl Test whether switch works
-lib/Symbol.pm Symbol table manipulation routines
-lib/Symbol.t See if Symbol works
-lib/Term/ANSIColor.pm Perl module supporting termcap usage
-lib/Term/ANSIColor/test.pl See if Term::ANSIColor works
-lib/Term/Cap.pm Perl module supporting termcap usage
-lib/Term/Complete.pm A command completion subroutine
-lib/Term/ReadLine.pm Stub readline library
-lib/Test.pm A simple framework for writing test scripts
-lib/Test/Harness.pm A test harness
-lib/Test/Harness.t See if Test::Harness works
-lib/Test/t/fail.t See if Test works
-lib/Test/t/mix.t See if Test works
-lib/Test/t/onfail.t See if Test works
-lib/Test/t/qr.t See if Test works
-lib/Test/t/skip.t See if Test works
-lib/Test/t/success.t See if Test works
-lib/Test/t/todo.t See if Test works
-lib/Text/Abbrev.pm An abbreviation table builder
-lib/Text/Abbrev.t Test Text::Abbrev
-lib/Text/Balanced.pm Text::Balanced
-lib/Text/Balanced.pod Text::Balanced
-lib/Text/Balanced/t/genxt.t See if Text::Balanced works
-lib/Text/Balanced/t/xbrak.t See if Text::Balanced works
-lib/Text/Balanced/t/xcode.t See if Text::Balanced works
-lib/Text/Balanced/t/xdeli.t See if Text::Balanced works
-lib/Text/Balanced/t/xmult.t See if Text::Balanced works
-lib/Text/Balanced/t/xquot.t See if Text::Balanced works
-lib/Text/Balanced/t/xtagg.t See if Text::Balanced works
-lib/Text/Balanced/t/xvari.t See if Text::Balanced works
-lib/Text/ParseWords.pm Perl module to split words on arbitrary delimiter
-lib/Text/ParseWords.t See if Text::ParseWords works
-lib/Text/Soundex.pm Perl module to implement Soundex
-lib/Text/Soundex.t See if Soundex works
-lib/Text/Tabs.pm Do expand and unexpand
-lib/Text/Tabs.t See if Text::Tabs works
-lib/Text/Wrap.pm Paragraph formatter
-lib/Text/Wrap/fill.t See if Text::Wrap::fill works
-lib/Text/Wrap/wrap.t See if Text::Wrap::wrap works
-lib/Tie/Array.pm Base class for tied arrays
-lib/Tie/Array/push.t Test for Tie::Array
-lib/Tie/Array/splice.t Test for Tie::Array::SPLICE
-lib/Tie/Array/std.t Test for Tie::StdArray
-lib/Tie/Array/stdpush.t Test for Tie::StdArray
-lib/Tie/Handle.pm Base class for tied handles
-lib/Tie/Handle/stdhandle.t Test for Tie::StdHandle
-lib/Tie/Hash.pm Base class for tied hashes
-lib/Tie/RefHash.pm Base class for tied hashes with references as keys
-lib/Tie/RefHash.t Test for Tie::RefHash and Tie::RefHash::Nestable
-lib/Tie/Scalar.pm Base class for tied scalars
-lib/Tie/SubstrHash.pm Compact hash for known key, value and table size
-lib/Tie/SubstrHash.t Test for Tie::SubstrHash
-lib/Time/Local.pm Reverse translation of localtime, gmtime
-lib/Time/Local.t See if Time::Local works
-lib/Time/gmtime.pm By-name interface to Perl's builtin gmtime
-lib/Time/gmtime.t Test for Time::gmtime
-lib/Time/localtime.pm By-name interface to Perl's builtin localtime
-lib/Time/localtime.t Test for Time::localtime
-lib/Time/tm.pm Internal object for Time::{gm,local}time
-lib/UNIVERSAL.pm Base class for ALL classes
-lib/User/grent.pm By-name interface to Perl's builtin getgr*
-lib/User/grent.t See if User::grwent works
-lib/User/pwent.pm By-name interface to Perl's builtin getpw*
-lib/User/pwent.t See if User::pwent works
-lib/Win32.pod Documentation for Win32 extras
-lib/abbrev.pl An abbreviation table builder
-lib/assert.pl assertion and panic with stack trace
-lib/attributes.pm For "sub foo : attrlist"
-lib/autouse.pm Load and call a function only when it's used
-lib/autouse.t See if autouse works
-lib/base.pm Establish IS-A relationship at compile time
-lib/bigfloat.pl An arbitrary precision floating point package
-lib/bigfloat.t See if bigfloat.pl works
-lib/bigint.pl An arbitrary precision integer arithmetic package
-lib/bigint.t See if bigint.pl works
-lib/bigrat.pl An arbitrary precision rational arithmetic package
-lib/blib.pm For "use blib"
-lib/bytes.pm Pragma to enable byte operations
-lib/bytes_heavy.pl Support routines for byte pragma
-lib/cacheout.pl Manages output filehandles when you need too many
-lib/charnames.pm Character names
-lib/charnames.t See if character names work
-lib/complete.pl A command completion subroutine
-lib/constant.pm For "use constant"
-lib/constant.t See if compile-time constants work
-lib/ctime.pl A ctime workalike
-lib/diagnostics.pm Print verbose diagnostics
-lib/diagnostics.t See if diagnostics.pm works
-lib/dotsh.pl Code to "dot" in a shell script
-lib/dumpvar.pl A variable dumper
-lib/exceptions.pl catch and throw routines
-lib/fastcwd.pl a faster but more dangerous getcwd
-lib/fields.pm Set up object field names for pseudo-hash-using classes
-lib/fields.t See if base/fields works
-lib/filetest.pm For "use filetest"
-lib/find.pl A find emulator--used by find2perl
-lib/finddepth.pl A depth-first find emulator--used by find2perl
-lib/flush.pl Routines to do single flush
-lib/ftp.pl FTP code (obsolete, use Net::FTP instead)
-lib/getcwd.pl A getcwd() emulator
-lib/getopt.pl Perl library supporting option parsing
-lib/getopts.pl Perl library supporting option parsing
-lib/h2ph.t See if h2ph works like it should
-lib/hostname.pl Old hostname code
-lib/importenv.pl Perl routine to get environment into variables
-lib/integer.pm For "use integer"
-lib/less.pm For "use less"
-lib/lib_pm.PL For "use lib", produces lib/lib.pm
-lib/locale.pm For "use locale"
-lib/locale.t See if locale support works
-lib/look.pl A "look" equivalent
-lib/newgetopt.pl A perl library supporting long option parsing
-lib/open.pm Pragma to specify default I/O disciplines
-lib/open2.pl Open a two-ended pipe (uses IPC::Open2)
-lib/open3.pl Open a three-ended pipe (uses IPC::Open3)
-lib/overload.pm Module for overloading perl operators
-lib/overload.t See if operator overloading works
-lib/perl5db.pl Perl debugging routines
-lib/ph.t See if h2ph works
+lib/Pod/Text/Overstrike.pm Convert POD data to formatted overstrike text
+lib/Pod/Text/Termcap.pm Convert POD data to ASCII text with format escapes
+lib/Pod/Usage.pm Pod-Parser - print usage messages
lib/pwd.pl Routines to keep track of PWD environment variable
+lib/Search/Dict.pm Perform binary search on dictionaries
+lib/Search/Dict.t See if Search::Dict works
+lib/SelectSaver.pm Enforce proper select scoping
+lib/SelectSaver.t See if SelectSaver works
+lib/SelfLoader.pm Load functions only on demand
+lib/SelfLoader.t See if SelfLoader works
+lib/Shell.pm Make AUTOLOADed system() calls
lib/shellwords.pl Perl library to split into words with shell quoting
lib/sigtrap.pm For trapping an abort and giving traceback
lib/stat.pl Perl library supporting stat function
lib/strict.t See if strictures work
lib/subs.pm Declare overriding subs
lib/subs.t See if subroutine pseudo-importation works
+lib/Switch.pm Switch for Perl
+lib/Switch/test.pl Test whether switch works
+lib/Symbol.pm Symbol table manipulation routines
+lib/Symbol.t See if Symbol works
lib/syslog.pl Perl library supporting syslogging
lib/tainted.pl Old code for tainting
+lib/Term/ANSIColor.pm Perl module supporting termcap usage
+lib/Term/ANSIColor/test.pl See if Term::ANSIColor works
+lib/Term/Cap.pm Perl module supporting termcap usage
+lib/Term/Complete.pm A command completion subroutine
+lib/Term/ReadLine.pm Stub readline library
lib/termcap.pl Perl library supporting termcap usage
+lib/Test.pm A simple framework for writing test scripts
+lib/Test/Harness.pm A test harness
+lib/Test/Harness.t See if Test::Harness works
+lib/Test/t/fail.t See if Test works
+lib/Test/t/mix.t See if Test works
+lib/Test/t/onfail.t See if Test works
+lib/Test/t/qr.t See if Test works
+lib/Test/t/skip.t See if Test works
+lib/Test/t/success.t See if Test works
+lib/Test/t/todo.t See if Test works
+lib/Text/Abbrev.pm An abbreviation table builder
+lib/Text/Abbrev.t Test Text::Abbrev
+lib/Text/Balanced.pm Text::Balanced
+lib/Text/Balanced.pod Text::Balanced
+lib/Text/Balanced/t/genxt.t See if Text::Balanced works
+lib/Text/Balanced/t/xbrak.t See if Text::Balanced works
+lib/Text/Balanced/t/xcode.t See if Text::Balanced works
+lib/Text/Balanced/t/xdeli.t See if Text::Balanced works
+lib/Text/Balanced/t/xmult.t See if Text::Balanced works
+lib/Text/Balanced/t/xquot.t See if Text::Balanced works
+lib/Text/Balanced/t/xtagg.t See if Text::Balanced works
+lib/Text/Balanced/t/xvari.t See if Text::Balanced works
+lib/Text/ParseWords.pm Perl module to split words on arbitrary delimiter
+lib/Text/ParseWords.t See if Text::ParseWords works
+lib/Text/Soundex.pm Perl module to implement Soundex
+lib/Text/Soundex.t See if Soundex works
+lib/Text/Tabs.pm Do expand and unexpand
+lib/Text/TabsWrap/t/fill.t See if Text::Wrap::fill works
+lib/Text/TabsWrap/t/tabs.t See if Text::Tabs works
+lib/Text/TabsWrap/t/wrap.t See if Text::Wrap::wrap works
+lib/Text/Wrap.pm Paragraph formatter
+lib/Tie/Array.pm Base class for tied arrays
+lib/Tie/Array/push.t Test for Tie::Array
+lib/Tie/Array/splice.t Test for Tie::Array::SPLICE
+lib/Tie/Array/std.t Test for Tie::StdArray
+lib/Tie/Array/stdpush.t Test for Tie::StdArray
+lib/Tie/Handle.pm Base class for tied handles
+lib/Tie/Handle/stdhandle.t Test for Tie::StdHandle
+lib/Tie/Hash.pm Base class for tied hashes
+lib/Tie/RefHash.pm Base class for tied hashes with references as keys
+lib/Tie/RefHash.t Test for Tie::RefHash and Tie::RefHash::Nestable
+lib/Tie/Scalar.pm Base class for tied scalars
+lib/Tie/SubstrHash.pm Compact hash for known key, value and table size
+lib/Tie/SubstrHash.t Test for Tie::SubstrHash
+lib/Time/gmtime.pm By-name interface to Perl's builtin gmtime
+lib/Time/gmtime.t Test for Time::gmtime
+lib/Time/Local.pm Reverse translation of localtime, gmtime
+lib/Time/Local.t See if Time::Local works
+lib/Time/localtime.pm By-name interface to Perl's builtin localtime
+lib/Time/localtime.t Test for Time::localtime
+lib/Time/tm.pm Internal object for Time::{gm,local}time
lib/timelocal.pl Perl library supporting inverse of localtime, gmtime
lib/unicode/ArabLink.pl Unicode character database
lib/unicode/ArabLnkGrp.pl Unicode character database
lib/unicode/CombiningClass.pl Unicode character database
lib/unicode/CompExcl.txt Unicode character database
lib/unicode/Decomposition.pl Unicode character database
+lib/unicode/distinct.pm Perl pragma to strictly distinguish UTF8 data and non-UTF data
lib/unicode/EAWidth.txt Unicode character database
lib/unicode/In.pl Unicode character database
lib/unicode/In/0.pl Unicode character database
lib/unicode/In/94.pl Unicode character database
lib/unicode/In/95.pl Unicode character database
lib/unicode/Index.txt Unicode character database
-lib/unicode/Is/ASCII.pl Unicode character database
lib/unicode/Is/Alnum.pl Unicode character database
lib/unicode/Is/Alpha.pl Unicode character database
+lib/unicode/Is/ASCII.pl Unicode character database
lib/unicode/Is/BidiAL.pl Unicode character database
lib/unicode/Is/BidiAN.pl Unicode character database
lib/unicode/Is/BidiB.pl Unicode character database
lib/unicode/Is/SylEE.pl Unicode character database
lib/unicode/Is/SylI.pl Unicode character database
lib/unicode/Is/SylII.pl Unicode character database
+lib/unicode/Is/Syllable.pl Unicode character database
lib/unicode/Is/SylN.pl Unicode character database
lib/unicode/Is/SylO.pl Unicode character database
lib/unicode/Is/SylOO.pl Unicode character database
lib/unicode/Is/SylWOO.pl Unicode character database
lib/unicode/Is/SylWU.pl Unicode character database
lib/unicode/Is/SylWV.pl Unicode character database
-lib/unicode/Is/Syllable.pl Unicode character database
lib/unicode/Is/Upper.pl Unicode character database
lib/unicode/Is/Word.pl Unicode character database
lib/unicode/Is/XDigit.pl Unicode character database
lib/unicode/JamoShort.pl Unicode character database
lib/unicode/LineBrk.txt Unicode character database
lib/unicode/Makefile Unicode character database
+lib/unicode/mktables.PL Unicode character database generator
lib/unicode/Name.pl Unicode character database
lib/unicode/NamesList.html Unicode character database
lib/unicode/NamesList.txt Unicode character database
lib/unicode/PropList.txt Unicode character database
lib/unicode/README.perl Unicode character database
lib/unicode/ReadMe.txt Unicode character database info
+lib/unicode/rename Filename mappings used
lib/unicode/Scripts.txt Unicode character database
lib/unicode/SpecCase.txt Unicode character database
+lib/unicode/syllables.txt Unicode character database
lib/unicode/To/Digit.pl Unicode character database
lib/unicode/To/Lower.pl Unicode character database
lib/unicode/To/Title.pl Unicode character database
lib/unicode/UCD.html Unicode character database
lib/unicode/Unicode.html Unicode character database
lib/unicode/Unicode.txt Unicode character database
-lib/unicode/distinct.pm Perl pragma to strictly distinguish UTF8 data and non-UTF data
-lib/unicode/mktables.PL Unicode character database generator
-lib/unicode/rename Filename mappings used
-lib/unicode/syllables.txt Unicode character database
lib/unicode/version The version of the Unicode
+lib/UNIVERSAL.pm Base class for ALL classes
+lib/User/grent.pm By-name interface to Perl's builtin getgr*
+lib/User/grent.t See if User::grwent works
+lib/User/pwent.pm By-name interface to Perl's builtin getpw*
+lib/User/pwent.t See if User::pwent works
lib/utf8.pm Pragma to control Unicode support
lib/utf8.t See if utf8 operations work
lib/utf8_heavy.pl Support routines for utf8 pragma
lib/warnings.pm For "use warnings"
lib/warnings.t See if warning controls work
lib/warnings/register.pm For "use warnings::register"
+lib/Win32.pod Documentation for Win32 extras
locale.c locale-specific utility functions
makeaperl.SH perl script that produces a new perl binary
makedef.pl Create symbol export lists for linking
makedepend.SH Precursor to makedepend
makedir.SH Precursor to makedir
+Makefile.micro microperl Makefile
+Makefile.SH A script that generates Makefile
malloc.c A version of malloc you might not want
+MANIFEST This list of files
mg.c Magic code
mg.h Magic header
minimod.pl Writes lib/ExtUtils/Miniperl.pm
miniperlmain.c Basic perl w/o dynamic loading or extensions
-mint/Makefile MiNT port
-mint/README MiNT port
mint/errno.h MiNT port
+mint/Makefile MiNT port
mint/pwd.c MiNT port
+mint/README MiNT port
mint/stdio.h MiNT port
mint/sys/time.h MiNT port
mint/time.h MiNT port
mpeix/relink MPE/iX port
mv-if-diff Script to mv a file if it changed
myconfig.SH Prints summary of the current configuration
+NetWare/bat/BldNWExt.bat Netware port
+NetWare/bat/Buildtype.bat Netware port
+NetWare/bat/MPKBuild.bat Netware port
+NetWare/bat/Setmpksdk.bat Netware port
+NetWare/bat/Setnlmsdk.bat Netware port
+NetWare/bat/SetNWBld.bat Netware port
+NetWare/bat/Setwatcom.bat Netware port
+NetWare/bat/ToggleD2.bat Netware port
+NetWare/bat/ToggleXDC.bat Netware port
+NetWare/CLIBsdio.h Netware port
+NetWare/CLIBstr.h Netware port
+NetWare/CLIBstuf.c Netware port
+NetWare/CLIBstuf.h Netware port
+NetWare/config.wc Netware port
+NetWare/config_h.PL Netware port
+NetWare/config_H.wc Netware port
+NetWare/config_sh.PL Netware port
+NetWare/deb.h Netware port
+NetWare/dl_netware.xs Netware port
+NetWare/intdef.h Netware port
+NetWare/interface.c Netware port
+NetWare/interface.h Netware port
+NetWare/iperlhost.h Netware port
+NetWare/Main.c Netware port
+NetWare/Makefile Netware port
+NetWare/netware.h Netware port
+NetWare/nw5.c Netware port
+NetWare/nw5iop.h Netware port
+NetWare/nw5sck.c Netware port
+NetWare/nw5sck.h Netware port
+NetWare/nw5thread.c Netware port
+NetWare/nw5thread.h Netware port
+NetWare/Nwmain.c Netware port
+NetWare/nwperlsys.c Netware port
+NetWare/nwperlsys.h Netware port
+NetWare/Nwpipe.c Netware port
+NetWare/nwpipe.h Netware port
+NetWare/nwplglob.c Netware port
+NetWare/nwplglob.h Netware port
+NetWare/NWTInfo.c Netware port
+NetWare/nwtinfo.h Netware port
+NetWare/NWUtil.c Netware port
+NetWare/nwutil.h Netware port
+NetWare/t/NWModify.pl Netware port
+NetWare/t/NWScripts.pl Netware port
+NetWare/t/Readme.txt Netware port
+NetWare/testnlm/echo/echo.c Netware port
+NetWare/testnlm/type/type.c Netware port
+NetWare/win32ish.h Netware port
nostdio.h Cause compile error on stdio calls
numeric.c Miscellaneous numeric conversion routines
objXSUB.h Scoping macros for Perl Object in extensions
opcode.pl Opcode header generatore
opnames.h Automatically generated opcode header
os2/Changes Changelog for OS/2 port
+os2/diff.configure Patches to Configure
+os2/dlfcn.h Addon for dl_open
+os2/dl_os2.c Addon for dl_open
os2/Makefile.SHs Shared library generation for OS/2
+os2/os2.c Additional code for OS/2
+os2/os2.sym Additional symbols to export
os2/OS2/ExtAttr/Changes EA access module
os2/OS2/ExtAttr/ExtAttr.pm EA access module
os2/OS2/ExtAttr/ExtAttr.xs EA access module
-os2/OS2/ExtAttr/MANIFEST EA access module
os2/OS2/ExtAttr/Makefile.PL EA access module
+os2/OS2/ExtAttr/MANIFEST EA access module
os2/OS2/ExtAttr/myea.h EA access module
os2/OS2/ExtAttr/t/os2_ea.t EA access module
os2/OS2/ExtAttr/typemap EA access module
os2/OS2/PrfDB/Changes System database access module
-os2/OS2/PrfDB/MANIFEST System database access module
os2/OS2/PrfDB/Makefile.PL System database access module
+os2/OS2/PrfDB/MANIFEST System database access module
os2/OS2/PrfDB/PrfDB.pm System database access module
os2/OS2/PrfDB/PrfDB.xs System database access module
os2/OS2/PrfDB/t/os2_prfdb.t System database access module
os2/OS2/PrfDB/typemap System database access module
-os2/OS2/Process/MANIFEST system() constants in a module
os2/OS2/Process/Makefile.PL system() constants in a module
+os2/OS2/Process/MANIFEST system() constants in a module
os2/OS2/Process/Process.pm system() constants in a module
os2/OS2/Process/Process.xs system() constants in a module
os2/OS2/REXX/Changes DLL access module
os2/OS2/REXX/DLL/Changes DLL access module
os2/OS2/REXX/DLL/DLL.pm DLL access module
os2/OS2/REXX/DLL/DLL.xs DLL access module
-os2/OS2/REXX/DLL/MANIFEST DLL access module
os2/OS2/REXX/DLL/Makefile.PL DLL access module
-os2/OS2/REXX/MANIFEST DLL access module
+os2/OS2/REXX/DLL/MANIFEST DLL access module
os2/OS2/REXX/Makefile.PL DLL access module
+os2/OS2/REXX/MANIFEST DLL access module
os2/OS2/REXX/REXX.pm DLL access module
os2/OS2/REXX/REXX.xs DLL access module
os2/OS2/REXX/t/rx_cmprt.t DLL access module
os2/OS2/REXX/t/rx_tieydb.t DLL access module
os2/OS2/REXX/t/rx_varset.t DLL access module
os2/OS2/REXX/t/rx_vrexx.t DLL access module
-os2/diff.configure Patches to Configure
-os2/dl_os2.c Addon for dl_open
-os2/dlfcn.h Addon for dl_open
-os2/os2.c Additional code for OS/2
-os2/os2.sym Additional symbols to export
os2/os2add.sym Overriding symbols to export
os2/os2ish.h Header for OS/2
os2/os2thread.h pthread-like typedefs
perly.fixer A program to remove yacc stack limitations
perly.h The header file for perly.c
perly.y Yacc grammar for perl
-perly_c.diff Fixup perly.c to allow recursion
perlyline.pl Perl code to fix #line directives and gcc warnings in perly.c
+perly_c.diff Fixup perly.c to allow recursion
plan9/aperl Shell to make Perl error messages Acme-friendly
plan9/arpa/inet.h Plan9 port: replacement C header file
plan9/buildinfo Plan9 port: configuration information
plan9/plan9ish.h Plan9 port: Plan9-specific C header file
plan9/setup.rc Plan9 port: script for easy build+install
plan9/versnum Plan9 port: script to print version number
-pod/Makefile.SH generate Makefile whichs makes pods into something else
pod/buildtoc.PL generate buildtoc which generates perltoc.pod
pod/checkpods.PL Tool to check for common errors in pods
+pod/Makefile.SH generate Makefile whichs makes pods into something else
pod/perl.pod Top level perl documentation
pod/perl5004delta.pod Changes from 5.003 to 5.004
pod/perl5005delta.pod Changes from 5.004 to 5.005
pod/rofftoc Generate a table of contents in troff format
pod/splitman Splits perlfunc into multiple man pages
pod/splitpod Splits perlfunc into multiple pod pages
+Policy_sh.SH Hold site-wide preferences between Configure runs.
+Porting/config.sh Sample config.sh
+Porting/config_H Sample config.h
+Porting/Contract Social contract for contributed modules in Perl core
+Porting/findvars Find occurrences of words
+Porting/fixCORE Find and fix modules that generate warnings
+Porting/fixvars Find undeclared variables with C compiler and fix em
+Porting/genlog Generate formatted changelogs by querying p4d
+Porting/Glossary Glossary of config.sh variables
+Porting/makerel Release making utility
+Porting/p4d2p Generate standard patches from p4 diffs
+Porting/p4desc Smarter 'p4 describe', outputs diffs for new files
+Porting/patching.pod How to report changes made to Perl
+Porting/patchls Flexible patch file listing utility
+Porting/pumpkin.pod Guidelines and hints for Perl maintainers
+Porting/repository.pod How to use the Perl repository
+Porting/testall.atom Cumulative profile of the test suite with Third Degree
pp.c Push/Pop code
pp.h Push/Pop code defs
pp.sym Push/Pop code symbols
proto.h Prototypes
qnx/ar QNX implementation of "ar" utility
qnx/cpp QNX implementation of preprocessor filter
+README The Instructions
+README.aix Notes about AIX port
+README.amiga Notes about AmigaOS port
+README.apollo Notes about Apollo DomainOS port
+README.beos Notes about BeOS port
+README.bs2000 Notes about BS2000 POSIX port
+README.cygwin Notes about Cygwin port
+README.dgux Notes about DG/UX port
+README.dos Notes about DOS/DJGPP port
+README.epoc Notes about EPOC port
+README.hpux Notes about HP-UX port
+README.hurd Notes about GNU/Hurd port
+README.machten Notes about Power MachTen port
+README.macos Notes about Mac OS (Classic)
+README.micro Notes about microperl
+README.mint Notes about Atari MiNT port
+README.mpeix Notes about MPE/iX port
+README.netware Notes about Netware port
+README.os2 Notes about OS/2 port
+README.os390 Notes about OS/390 (nee MVS) port
+README.plan9 Notes about Plan9 port
+README.qnx Notes about QNX port
+README.solaris Notes about Solaris port
+README.threads Notes about multithreading
+README.tru64 Notes about Tru64
+README.vmesa Notes about VM/ESA port
+README.vms Notes about installing the VMS port
+README.vos Notes about Stratus VOS port
+README.win32 Notes about Win32 port
+README.Y2K Notes about Year 2000 concerns
regcomp.c Regular expression compiler
regcomp.h Private declarations for above
regcomp.pl Builder of regnodes.h
scope.h Scope entry and exit header
sv.c Scalar value code
sv.h Scalar value header
-t/README Instructions for regression tests
-t/TEST The regression tester
-t/TestInit.pm Preamble library for core tests
t/base/commonsense.t See if configuration meets basic needs
t/base/cond.t See if conditionals work
t/base/if.t See if if works
t/io/tell.t See if file seeking works
t/io/utf8.t See if file seeking works
t/lib/1_compile.t See if the various libraries and extensions compile
-t/lib/MyFilter.pm Helper file for t/lib/filter-simple.t
t/lib/compmod.pl Helper for 1_compile.t
-t/lib/dprof/V.pm Perl code profiler tests
t/lib/dprof/test1_t Perl code profiler tests
t/lib/dprof/test1_v Perl code profiler tests
t/lib/dprof/test2_t Perl code profiler tests
t/lib/dprof/test5_v Perl code profiler tests
t/lib/dprof/test6_t Perl code profiler tests
t/lib/dprof/test6_v Perl code profiler tests
+t/lib/dprof/V.pm Perl code profiler tests
t/lib/filter-util.pl See if Filter::Util::Call works
t/lib/h2ph.h Test header file for h2ph
t/lib/h2ph.pht Generated output from h2ph.h by h2ph, for comparison
t/lib/locale/latin1 Part of locale.t in Latin 1
t/lib/locale/utf8 Part of locale.t in UTF8
+t/lib/MyFilter.pm Helper file for t/lib/filter-simple.t
t/lib/sample-tests/bailout Test data for Test::Harness
t/lib/sample-tests/combined Test data for Test::Harness
t/lib/sample-tests/descriptive Test data for Test::Harness
t/op/quotemeta.t See if quotemeta works
t/op/rand.t See if rand works
t/op/range.t See if .. works
-t/op/re_tests Regular expressions for regexp.t
t/op/read.t See if read() works
t/op/readdir.t See if readdir() works
t/op/recurse.t See if deep recursion works
t/op/regmesg.t See if one can get regular expression errors
t/op/repeat.t See if x operator works
t/op/reverse.t See if reverse operator works
+t/op/re_tests Regular expressions for regexp.t
t/op/runlevel.t See if die() works from perl_call_*()
t/op/sleep.t See if sleep works
t/op/sort.t See if sort works
t/op/sprintf.t See if sprintf works
t/op/stat.t See if stat works
t/op/study.t See if study works
-t/op/sub_lval.t See if lvalue subroutines work
t/op/subst.t See if substitution works
+t/op/substr.t See if substr works
t/op/subst_amp.t See if $&-related substitution works
t/op/subst_wamp.t See if substitution works with $& present
-t/op/substr.t See if substr works
+t/op/sub_lval.t See if lvalue subroutines work
t/op/sysio.t See if sysread and syswrite work
t/op/taint.t See if tainting works
t/op/tie.t See if tie/untie functions work
t/pod/testp2pt.pl Module to test Pod::PlainText for a given file
t/pod/testpchk.pl Module to test Pod::Checker for a given file
t/pod/testpods/lib/Pod/Stuff.pm Sample data for find.t
+t/README Instructions for regression tests
t/run/runenv.t Test if perl honors its environment variables.
+t/TEST The regression tester
+t/TestInit.pm Preamble library for core tests
taint.c Tainting code
thrdvar.h Per-thread variables
thread.h Threading header
+Todo.micro The Wishlist for microperl
toke.c The tokener
uconfig.h Configuration header for microperl
uconfig.sh Configuration script for microperl
util.c Utility routines
util.h Dummy header
utils.lst Lists utilities bundled with Perl
-utils/Makefile Extract the utility scripts
utils/c2ph.PL program to translate dbx stabs to perl
utils/dprofpp.PL Perl code profile post-processor
utils/h2ph.PL A thing to turn C .h files into perl .ph files
utils/h2xs.PL Program to make .xs files from C header files
utils/libnetcfg.PL libnet
+utils/Makefile Extract the utility scripts
utils/perlbug.PL A simple tool to submit a bug report
utils/perlcc.PL Front-end for compiler
utils/perldoc.PL A simple tool to find & display perl's documentation
vms/ext/DCLsym/Makefile.PL MakeMaker driver for VMS::DCLsym
vms/ext/DCLsym/test.pl regression tests for VMS::DCLsym
vms/ext/Filespec.pm VMS-Unix file syntax interconversion
+vms/ext/filespec.t See if VMS::Filespec funtions work
vms/ext/Stdio/0README.txt ReadMe file for VMS::Stdio
vms/ext/Stdio/Makefile.PL MakeMaker driver for VMS::Stdio
vms/ext/Stdio/Stdio.pm VMS options to stdio routines
vms/ext/Stdio/Stdio.xs VMS options to stdio routines
vms/ext/Stdio/test.pl regression tests for VMS::Stdio
-vms/ext/XSSymSet.pm manage linker symbols when building extensions
-vms/ext/filespec.t See if VMS::Filespec funtions work
vms/ext/vmsish.pm Control VMS-specific behavior of Perl core
vms/ext/vmsish.t Tests for vmsish.pm
-vms/gen_shrfls.pl generate options files and glue for shareable image
+vms/ext/XSSymSet.pm manage linker symbols when building extensions
vms/genconfig.pl retcon config.sh from config.h
vms/genopt.com hack to write options files in case of broken makes
+vms/gen_shrfls.pl generate options files and glue for shareable image
vms/make_command.com record MM[SK] command used to build Perl
vms/mms2make.pl convert descrip.mms to make syntax
vms/munchconfig.c performs shell $var substitution for VMS
vms/sockadapt.h glue for SockshShr socket support
vms/test.com DCL driver for regression tests
vms/vms.c VMS-specific C code for Perl core
-vms/vms_yfix.pl convert Unix perly.[ch] to VMS perly_[ch].vms
vms/vmsish.h VMS-specific C header for Perl core
vms/vmspipe.com VMS-specific piped command helper script
+vms/vms_yfix.pl convert Unix perly.[ch] to VMS perly_[ch].vms
vms/writemain.pl Generate perlmain.c from miniperlmain.c+extensions
-vos/Changes Changes made to port Perl to the VOS operating system
vos/build.cm VOS command macro to build Perl
+vos/Changes Changes made to port Perl to the VOS operating system
vos/compile_perl.cm VOS command macro to build multiple version of Perl
vos/config.alpha.def definitions used by config.pl
vos/config.alpha.h config.h for use with alpha VOS POSIX.1 support
vos/Makefile A helper for maintaining the config.*.* in UNIX
vos/perl.bind VOS bind control file
vos/test_vos_dummies.c Test program for "vos_dummies.c"
-vos/vos_dummies.c Wrappers to soak up undefined functions
vos/vosish.h VOS-specific header file
+vos/vos_dummies.c Wrappers to soak up undefined functions
warnings.h The warning numbers
warnings.pl Program to write warnings.h and lib/warnings.pm
-win32/FindExt.pm Scan for extensions
-win32/Makefile Win32 makefile for NMAKE (Visual C++ build)
win32/bin/exetype.pl Set executable type to CONSOLE or WINDOWS
win32/bin/mdelete.bat multifile delete
win32/bin/perlglob.pl Win32 globbing
win32/config.vc Win32 base line config.sh (Visual C++ build)
win32/config_H.bc Win32 config header (Borland C++ build)
win32/config_H.gc Win32 config header (GNU build)?
-win32/config_H.vc Win32 config header (Visual C++ build)
win32/config_h.PL Perl code to convert Win32 config.sh to config.h
+win32/config_H.vc Win32 config header (Visual C++ build)
win32/config_sh.PL Perl code to update Win32 config.sh from Makefile
win32/des_fcrypt.patch Win32 port
win32/distclean.bat Remove _ALL_ files not listed here in MANIFEST
win32/dl_win32.xs Win32 port
+win32/FindExt.pm Scan for extensions
win32/genmk95.pl Perl code to generate command.com-usable makefile.95
win32/include/arpa/inet.h Win32 port
win32/include/dirent.h Win32 port
win32/include/netdb.h Win32 port
win32/include/sys/socket.h Win32 port
+win32/Makefile Win32 makefile for NMAKE (Visual C++ build)
win32/makefile.mk Win32 makefile for DMAKE (BC++, VC++ builds)
win32/perlglob.c Win32 port
win32/perlhost.h Perl "host" implementation
win32/win32thread.c Win32 functions for threads
win32/win32thread.h Win32 port mapping to threads
writemain.SH Generate perlmain.c from miniperlmain.c+extensions
-x2p/EXTERN.h Same as above
-x2p/INTERN.h Same as above
-x2p/Makefile.SH Precursor to Makefile
x2p/a2p.c Output of a2p.y run through byacc
x2p/a2p.h Global declarations
x2p/a2p.pod Pod for awk to perl translator
x2p/a2p.y A yacc grammer for awk
x2p/a2py.c Awk compiler, sort of
x2p/cflags.SH A script that emits C compilation flags per file
+x2p/EXTERN.h Same as above
x2p/find2perl.PL A find to perl translator
x2p/hash.c Hashes again
x2p/hash.h Public declarations for the above
+x2p/INTERN.h Same as above
+x2p/Makefile.SH Precursor to Makefile
x2p/proto.h Dummy header
x2p/s2p.PL Sed to perl translator
x2p/str.c String handling package
x2p/util.c Utility routines
x2p/util.h Public declarations for the above
x2p/walk.c Parse tree walker
+XSUB.h Include file for extension subroutines
xsutils.c Additional bundled package methods not in UNIVERSAL::
*)
$spitshell >>Makefile <<'!NO!SUBS!'
miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+ -@rm -f miniperl.xok
$(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \
miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
$(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
$spitshell >>Makefile <<'!NO!SUBS!'
perl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs $(PERLEXPORT)
+ -@rm -f miniperl.xok
$(SHRPENV) $(LDLIBPTH) $(CC) -o perl$(PERL_SUFFIX) $(PERL_PROFILING) $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
# Purify/Quantify Perls.
-rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap
-rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log
-rm -f perl.pixie lib*.so.perl.pixie lib*.so.Addrs
- -rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts
+ -rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts *perl.xok
rm -f perl suidperl miniperl $(LIBPERL) libperl.* microperl
# Do not 'make _tidy' directly.
## This file is created by using the makefile that creates Windows Perl as the reference
## Author: sgp
## Date Created: 13th July 2000
-## Date Modified: 19th June 2001
+## Date Modified: 03th April 2001
# Name of the NLM
NLM_NAME = perl.nlm
BYTELOADER_NLP = $(AUTODIR)\ByteLoader\ByteLoader.nlp
DPROF_NLP = $(AUTODIR)\Devel\DProf\DProf.nlp
GLOB_NLP = $(AUTODIR)\File\Glob\Glob.nlp
+CWD_NLP = $(AUTODIR)\Cwd\Cwd.nlp
+STORABLE_NLP = $(AUTODIR)\Storable\Storable.nlp
+LISTUTIL_NLP = $(AUTODIR)\List\Util\Util.nlp
+MIMEBASE64_NLP = $(AUTODIR)\MIME\Base64\Base64.nlp
+XSTYPEMAP_NLP = $(AUTODIR)\XS\Typemap\Typemap.nlp
EXTENSION_NLP = \
$(FCNTL_NLP) \
$(GLOB_NLP) \
$(PEEK_NLP) \
$(RE_NLP) \
- $(DPROF_NLP)
+ $(DPROF_NLP) \
+ $(STORABLE_NLP) \
+ $(LISTUTIL_NLP) \
+ $(MIMEBASE64_NLP) \
+ $(XSTYPEMAP_NLP) \
+# $(CWD_NLP) \
+# cwd.pm needs to be modifed for NetWare.
# Begin - Following is required to build NetWare specific extensions Perl2UCS & CGI2Perl
-C++ -prototypes
MICROCORE_SRC = \
- ..\av.c \
- ..\deb.c \
- ..\doio.c \
- ..\doop.c \
- ..\dump.c \
+ ..\av.c \
+ ..\deb.c \
+ ..\doio.c \
+ ..\doop.c \
+ ..\dump.c \
..\globals.c \
- ..\gv.c \
- ..\hv.c \
- ..\locale.c \
- ..\mg.c \
+ ..\gv.c \
+ ..\hv.c \
+ ..\locale.c \
+ ..\mg.c \
..\numeric.c \
- ..\op.c \
- ..\perl.c \
+ ..\op.c \
+ ..\perl.c \
..\perlapi.c \
- ..\perly.c \
- ..\pp.c \
- ..\pp_ctl.c \
- ..\pp_hot.c \
+ ..\perly.c \
+ ..\pp.c \
+ ..\pp_ctl.c \
+ ..\pp_hot.c \
..\pp_pack.c \
- ..\pp_sys.c \
+ ..\pp_sys.c \
..\regcomp.c \
..\regexec.c \
- ..\run.c \
- ..\scope.c \
- ..\sv.c \
- ..\taint.c \
- ..\toke.c \
+ ..\run.c \
+ ..\scope.c \
+ ..\sv.c \
+ ..\taint.c \
+ ..\toke.c \
..\universal.c \
- ..\utf8.c \
- ..\util.c \
+ ..\utf8.c \
+ ..\util.c \
..\xsutils.c
#EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c
BYTELOADER = $(EXTDIR)\ByteLoader\ByteLoader
DPROF = $(EXTDIR)\Devel\DProf\DProf
GLOB = $(EXTDIR)\File\Glob\Glob
+CWD = $(EXTDIR)\Cwd\Cwd
+STORABLE = $(EXTDIR)\Storable\Storable
+LISTUTIL = $(EXTDIR)\List\Util
+MIMEBASE64 = $(EXTDIR)\MIME\Base64\Base64
+XSTYPEMAP = $(EXTDIR)\XS\Typemap\Typemap
EXTENSION_C = \
$(SOCKET).c \
$(B).c \
$(BYTELOADER).c \
$(DPROF).c \
- $(GLOB).c
+ $(GLOB).c \
+ $(CWD).c \
+ $(STORABLE).c \
+ $(LISTUTIL).c \
+ $(MIMEBASE64).c \
+ $(XSTYPEMAP).c \
POD2HTML = $(PODDIR)\pod2html
POD2MAN = $(PODDIR)\pod2man
$(MAKE)
cd ..\..\netware
+$(CWD_NLP):
+ cd $(EXTDIR)\$(*B)
+ ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+ $(MAKE)
+ cd ..\..\netware
+
+$(STORABLE_NLP):
+ cd $(EXTDIR)\$(*B)
+ ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+ $(MAKE)
+ cd ..\..\netware
+
+$(LISTUTIL_NLP):
+ cd $(EXTDIR)\List\$(*B)
+ ..\..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+ $(MAKE)
+ cd ..\..\..\netware
+
+$(MIMEBASE64_NLP):
+ cd $(EXTDIR)\Mime\$(*B)
+ ..\..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+ $(MAKE)
+ cd ..\..\..\netware
+
+$(XSTYPEMAP_NLP):
+ cd $(EXTDIR)\XS\$(*B)
+ ..\..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+ $(MAKE)
+ cd ..\..\..\netware
+
$(ERRNO_PM_NW):
cd $(EXTDIR)\$(*B)
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
installnw:
$(MINIPERL) -I..\lib ..\installperl -netware
-nwinstall: utils installnw
+install_tests :
+ cd ..\t
+ xcopy /f /r /i /s /d *.* $(INST_NW_TOP2)\scripts\t
+ cd ..\lib
+ xcopy /f /r /i /s /d *.t $(INST_NW_TOP2)\scripts\t\lib
+ cd ..\ext
+ xcopy /f /r /i /s /d *.t $(INST_NW_TOP2)\scripts\t\ext
+ cd ..\netware
+
+nwinstall: utils installnw install_tests
inst_lib : $(CONFIGPM)
copy ..\win32\splittree.pl ..
nw_getenviron()
{
if (genviron)
- // This (and not the next line) is the correct operation since it matches with the return type.
- // But it is leaking memory upto 11736 bytes!! So it is commented.
-// return (&genviron);
- return genviron;
+ return (&genviron); // This might leak memory upto 11736 bytes on some versions of NetWare.
+// return genviron; // Abending on some versions of NetWare.
else
fnSetUpEnvBlock(&genviron);
i_sysfile='undef'
i_sysfilio='define'
i_sysin='undef'
-i_sysioctl='undef'
+i_sysioctl='define'
i_syslog='undef'
i_sysmman='undef'
i_sysmode='undef'
/*
* Package name : perl5
* Source directory :
- * Configuration time: Wed Jun 6 09:31:53 2001
+ * Configuration time: Thu Jun 21 17:44:02 2001
* Configured by : Administrator
* Target system :
*/
*/
#define HAS_DLERROR /**/
-/* SETUID_SCRIPTS_ARE_SECURE_NOW:
- * This symbol, if defined, indicates that the bug that prevents
- * setuid scripts from being secure is not present in this kernel.
- */
-/* DOSUID:
- * This symbol, if defined, indicates that the C program should
- * check the script that it is executing for setuid/setgid bits, and
- * attempt to emulate setuid/setgid on systems that have disabled
- * setuid #! scripts because the kernel can't do it securely.
- * It is up to the package designer to make sure that this emulation
- * is done securely. Among other things, it should do an fstat on
- * the script it just opened to make sure it really is a setuid/setgid
- * script, it should make sure the arguments passed correspond exactly
- * to the argument on the #! line, and it should not trust any
- * subprocesses to which it must pass the filename rather than the
- * file descriptor of the script to be executed.
- */
-/*#define SETUID_SCRIPTS_ARE_SECURE_NOW /**/
-/*#define DOSUID /**/
-
/* HAS_DUP2:
* This symbol, if defined, indicates that the dup2 routine is
* available to duplicate file descriptors.
* to get socket ioctl options, like SIOCATMARK.
*/
#define I_SYS_IOCTL /**/
-
+#define I_SYS_SOCKIO /**/
/* I_SYS_NDIR:
* This symbol, if defined, indicates to the C program that it should
*/
/*#define I_VALUES /**/
-/* I_STDARG:
- * This symbol, if defined, indicates that <stdarg.h> exists and should
- * be included.
- */
-/* I_VARARGS:
- * This symbol, if defined, indicates to the C program that it should
- * include <varargs.h>.
- */
-#define I_STDARG /**/
-/*#define I_VARARGS /**/
-
/* I_VFORK:
* This symbol, if defined, indicates to the C program that it should
* include vfork.h.
*/
#define SH_PATH "cmd /x /c" /**/
-/* CROSSCOMPILE:
- * This symbol, if defined, signifies that we our
- * build process is a cross-compilation.
- */
-/*#define CROSSCOMPILE /**/
-
/* INTSIZE:
* This symbol contains the value of sizeof(int) so that the C
* preprocessor can make decisions based on it.
* by Configure. You shouldn't rely on it too much; the specific
* feature tests from Configure are generally more reliable.
*/
+/* OSVERS:
+ * This symbol contains the version of the operating system, as determined
+ * by Configure. You shouldn't rely on it too much; the specific
+ * feature tests from Configure are generally more reliable.
+ */
#define OSNAME "NetWare" /**/
+#define OSVERS "5.x" /**/
/* MEM_ALIGNBYTES:
* This symbol contains the number of bytes required to align a
* double, or a long double when applicable. Usual values are 2,
* 4 and 8. The default is eight, for safety.
*/
-#if defined(CROSSCOMPILE) || defined(MULTIARCH)
+#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
# define MEM_ALIGNBYTES 8
#else
#define MEM_ALIGNBYTES 8
* so the default case (for NeXT) is big endian to catch them.
* This might matter for NeXT 3.0.
*/
-#if defined(CROSSCOMPILE) || defined(MULTIARCH)
+#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
# ifdef __LITTLE_ENDIAN__
# if LONGSIZE == 4
# define BYTEORDER 0x1234
* available to split a long double x into a fractional part f and
* an integer part i such that |f| < 1.0 and (f + i) = x.
*/
+/* HAS_MODFL_POW32_BUG:
+ * This symbol, if defined, indicates that the modfl routine is
+ * broken for long doubles >= pow(2, 32).
+ * For example from 4294967303.150000 one would get 4294967302.000000
+ * and 1.150000. The bug has been seen in certain versions of glibc,
+ * release 2.2.2 is known to be okay.
+ */
/*#define HAS_MODFL /**/
+/*#define HAS_MODFL_POW32_BUG /**/
/* HAS_MPROTECT:
* This symbol, if defined, indicates that the mprotect system call is
* in the <db.h> header file. In older versions of DB, it was
* int, while in newer ones it is size_t.
*/
+/* DB_VERSION_MAJOR_CFG:
+ * This symbol, if defined, defines the major version number of
+ * Berkeley DB found in the <db.h> header when Perl was configured.
+ */
+/* DB_VERSION_MINOR_CFG:
+ * This symbol, if defined, defines the minor version number of
+ * Berkeley DB found in the <db.h> header when Perl was configured.
+ * For DB version 1 this is always 0.
+ */
+/* DB_VERSION_PATCH_CFG:
+ * This symbol, if defined, defines the patch version number of
+ * Berkeley DB found in the <db.h> header when Perl was configured.
+ * For DB version 1 this is always 0.
+ */
#define DB_Hash_t int /**/
#define DB_Prefix_t int /**/
+#define DB_VERSION_MAJOR_CFG undef /**/
+#define DB_VERSION_MINOR_CFG undef /**/
+#define DB_VERSION_PATCH_CFG undef /**/
/* I_GRP:
* This symbol, if defined, indicates to the C program that it should
* This symbol, if defined, indicates that Perl should
* be built to use the old draft POSIX threads API.
*/
+/* USE_REENTRANT_API:
+ * This symbol, if defined, indicates that Perl should
+ * try to use the various _r versions of library functions.
+ * This is extremely experimental.
+ */
/*#define USE_5005THREADS /**/
#define USE_ITHREADS /**/
#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
#define USE_THREADS /* until src is revised*/
#endif
/*#define OLD_PTHREADS_API /**/
+/*#define USE_REENTRANT_API /**/
/* PERL_VENDORARCH:
* If defined, this symbol contains the name of a private library.
#define PERL_XS_APIVERSION "5.6.0"
#define PERL_PM_APIVERSION "5.005"
+/* SETUID_SCRIPTS_ARE_SECURE_NOW:
+ * This symbol, if defined, indicates that the bug that prevents
+ * setuid scripts from being secure is not present in this kernel.
+ */
+/* DOSUID:
+ * This symbol, if defined, indicates that the C program should
+ * check the script that it is executing for setuid/setgid bits, and
+ * attempt to emulate setuid/setgid on systems that have disabled
+ * setuid #! scripts because the kernel can't do it securely.
+ * It is up to the package designer to make sure that this emulation
+ * is done securely. Among other things, it should do an fstat on
+ * the script it just opened to make sure it really is a setuid/setgid
+ * script, it should make sure the arguments passed correspond exactly
+ * to the argument on the #! line, and it should not trust any
+ * subprocesses to which it must pass the filename rather than the
+ * file descriptor of the script to be executed.
+ */
+/*#define SETUID_SCRIPTS_ARE_SECURE_NOW /**/
+/*#define DOSUID /**/
+
+/* I_STDARG:
+ * This symbol, if defined, indicates that <stdarg.h> exists and should
+ * be included.
+ */
+/* I_VARARGS:
+ * This symbol, if defined, indicates to the C program that it should
+ * include <varargs.h>.
+ */
+#define I_STDARG /**/
+/*#define I_VARARGS /**/
+
+/* USE_CROSS_COMPILE:
+ * This symbol, if defined, indicates that Perl is being cross-compiled.
+ */
+/* PERL_TARGETARCH:
+ * This symbol, if defined, indicates the target architecture
+ * Perl has been cross-compiled to. Undefined if not a cross-compile.
+ */
+#ifndef USE_CROSS_COMPILE
+/*#define USE_CROSS_COMPILE /**/
+#define PERL_TARGETARCH "undef" /**/
+#endif
+
+/* HAS_DBMINIT_PROTO:
+ * This symbol, if defined, indicates that the system provides
+ * a prototype for the dbminit() function. Otherwise, it is up
+ * to the program to supply one. A good guess is
+ * extern int dbminit(char *);
+ */
+/*#define HAS_DBMINIT_PROTO /**/
+
+/* HAS_FLOCK_PROTO:
+ * This symbol, if defined, indicates that the system provides
+ * a prototype for the flock() function. Otherwise, it is up
+ * to the program to supply one. A good guess is
+ * extern int flock(int, int);
+ */
+/*#define HAS_FLOCK_PROTO /**/
+
+/* HAS_REALPATH:
+ * This symbol, if defined, indicates that the realpath routine is
+ * available to do resolve paths.
+ */
+/*#define HAS_REALPATH /**/
+
/* HAS_SIGPROCMASK:
* This symbol, if defined, indicates that the sigprocmask
* system call is available to examine or change the signal mask
*/
/*#define HAS_SOCKATMARK /**/
+/* HAS_SOCKATMARK_PROTO:
+ * This symbol, if defined, indicates that the system provides
+ * a prototype for the sockatmark() function. Otherwise, it is up
+ * to the program to supply one. A good guess is
+ * extern int sockatmark _((int));
+ */
+/*#define HAS_SOCKATMARK_PROTO /**/
+
+/* HAS_SETRESGID_PROTO:
+ * This symbol, if defined, indicates that the system provides
+ * a prototype for the setresgid() function. Otherwise, it is up
+ * to the program to supply one. Good guesses are
+ * extern int setresgid(uid_t ruid, uid_t euid, uid_t suid);
+ */
+/*#define HAS_SETRESGID_PROTO /**/
+
+/* HAS_SETRESUID_PROTO:
+ * This symbol, if defined, indicates that the system provides
+ * a prototype for the setresuid() function. Otherwise, it is up
+ * to the program to supply one. Good guesses are
+ * extern int setresuid(uid_t ruid, uid_t euid, uid_t suid);
+ */
+/*#define HAS_SETRESUID_PROTO /**/
+
+/* HAS_STRFTIME:
+ * This symbol, if defined, indicates that the strftime routine is
+ * available to do time formatting.
+ */
+/*#define HAS_STRFTIME /**/
+
+/* HAS_SYSCALL_PROTO:
+ * This symbol, if defined, indicates that the system provides
+ * a prototype for the syscall() function. Otherwise, it is up
+ * to the program to supply one. Good guesses are
+ * extern int syscall(int, ...);
+ * extern int syscall(long, ...);
+ */
+/*#define HAS_SYSCALL_PROTO /**/
+
/* U32_ALIGNMENT_REQUIRED:
* This symbol, if defined, indicates that you must access
* character data through U32-aligned pointers.
*/
/*#define U32_ALIGNMENT_REQUIRED /**/
+/* HAS_USLEEP_PROTO:
+ * This symbol, if defined, indicates that the system provides
+ * a prototype for the usleep() function. Otherwise, it is up
+ * to the program to supply one. A good guess is
+ * extern int usleep(useconds_t);
+ */
+/*#define HAS_USLEEP_PROTO /**/
+
#endif
setservent(stayopen);
}
+int
+nw_setsockopt(SOCKET s, int level, int optname, const char* optval, int optlen)
+{
+ return setsockopt(s, level, optname, optval, optlen);
+}
+
int
nw_getsockname(SOCKET s, struct sockaddr *addr, int *addrlen)
{
void nw_setnetent(int stayopen);
void nw_setprotoent(int stayopen);
void nw_setservent(int stayopen);
+int nw_setsockopt(SOCKET s, int level, int optname, const char* optval, int optlen);
int nw_getsockname(SOCKET s, struct sockaddr *addr, int *addrlen);
int nw_getsockopt(SOCKET s, int level, int optname, char *optval, int *optlen);
int
PerlLIOIOCtl(struct IPerlLIO* piPerl, int i, unsigned int u, char *data)
{
- return 0;
+ return ioctl(i, (int) u, (void *) data);
}
int
int
PerlSockSetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, const char* optval, int optlen)
{
- dTHXo;
- Perl_croak(aTHX_ "setsockopt not implemented!\n");
- return 0;
+ return nw_setsockopt(s, level, optname, optval, optlen);
}
int
use File::Basename;
use File::Copy;
-## Change the below line to the directory you want to process
+## Change the below line to the folder you want to process
$DirName = "/perl/scripts/t";
$FilesTotal = 0;
$FilesRead = 0;
$FilesModified = 0;
-opendir(DIR, $DirName) or die "Unable to open the directory, $DirName for reading.\n";
+opendir(DIR, $DirName);
@Dirs = readdir(DIR);
foreach $DirItem(@Dirs)
{
$DirItem = $DirName."/".$DirItem;
- push @DirNames, $DirItem; # All items under $DirName directory is copied into an array.
+ push @DirNames, $DirItem; # All items under $DirName folder is copied into an array.
}
foreach $FileName(@DirNames)
{
if(-d $FileName)
- { # If an item is a directory, then open it further.
+ { # If an item is a folder, then open it further.
- opendir(SUBDIR, $FileName) or die "Unable to open the directory, $FileName for reading.\n";
+ opendir(SUBDIR, $FileName);
@SubDirs = readdir(SUBDIR);
close(SUBDIR);
else
{
$SubFileName = $FileName."/".$SubFileName;
- push @DirNames, $SubFileName; # If sub-directory, push it into the array.
+ push @DirNames, $SubFileName; # If sub-folder, push it into the array.
}
}
}
local($FileToProcess) = @_; # File name.
local($Modified) = 0;
-
if(!(-w $FileToProcess)) {
# If the file is a read-only file, then change its mode to read-write.
chmod(0777, $FileToProcess);
}
-
- $base = basename($FileToProcess); # Get the base name
- $dir = dirname($FileToProcess); # Get the directory name
- ($base, $dir, $ext) = fileparse($FileToProcess, '\..*'); # Get the extension of the file passed.
-
+ ## For example:
## If the value of $FileToProcess is '/perl/scripts/t/pragma/warnings.t', then
## $dir = '/perl/scripts/t/pragma/'
## $base = 'warnings'
## $ext = '.t'
+ $dir = dirname($FileToProcess); # Get the folder name
+ $base = basename($FileToProcess); # Get the base name
+ ($base, $dir, $ext) = fileparse($FileToProcess, '\..*'); # Get the extension of the file passed.
# Do the processing only if the file has '.t' extension.
chdir '/perl/scripts/';
$DirName = "t";
-
# These scripts have problems (either abend or hang) as of now (11 May 2001).
# So, they are commented out in the corresponding auto scripts, io.pl and lib.pl
-@ScriptsNotUsed = ("t/io/argv.t", "t/io/openpid.t", "t/lib/filehand.t");
+@ScriptsNotUsed = ("t/io/argv.t", "t/io/openpid.t", "t/lib/filehandle.t");
+opendir(DIR, $DirName);
+@Dirs = readdir(DIR);
+close(DIR);
+foreach $DirItem(@Dirs)
+{
+ $DirItem1 = $DirName."/".$DirItem;
+ push @DirNames, $DirItem1; # All items under $DirName folder is copied into an array.
-print "Generating t/auto.pl ...\n\n\n";
+ if(-d $DirItem1)
+ { # If an item is a folder, then open it further.
-open(FHWA, "> t/auto.pl") or die "Unable to open the file, t/auto.pl for writing.\n";
-seek(FHWA, 0 ,0);
-flock(FHWA, LOCK_EX); # Lock the file for safety purposes.
+ # Intemediary automated script like base.pl, lib.pl, cmd.pl etc.
+ $IntAutoScript = "t/".$DirItem.".pl";
-$version = sprintf("%vd",$^V);
-print FHWA "\n\nprint \"Automated Unit Testing of Perl$version\\n\\n\\n\"\;\n\n\n";
+ # Open once in write mode since later files are opened in append mode,
+ # and if there already exists a file with the same name, all further opens
+ # will append to that file!!
+ open(FHW, "> $IntAutoScript") or die "Unable to open the file, $IntAutoScript for writing.\n";
+ seek(FHW, 0, 0); # seek to the beginning of the file.
+ close FHW; # close the file.
+ }
+}
-opendir(DIR, $DirName) or die "Unable to open the directory, $DirName for reading.\n";
-@Dirs = readdir(DIR);
+print "Generating t/nwauto.pl ...\n\n\n";
+
+open(FHWA, "> t/nwauto.pl") or die "Unable to open the file, t/nwauto.pl for writing.\n";
+seek(FHWA, 0, 0); # seek to the beginning of the file.
+flock(FHWA, LOCK_EX); # Lock the file for safety purposes.
+
+$version = sprintf("%vd",$^V);
+print FHWA "\n\nprint \"Automated Unit Testing of Perl$version for NetWare\\n\\n\\n\"\;\n\n\n";
-foreach $DirItem(@Dirs)
-{
- $DirItem = $DirName."/".$DirItem;
- push @DirNames, $DirItem; # All items under $DirName directory is copied into an array.
-}
foreach $FileName(@DirNames)
{
+ $index = 0;
if(-d $FileName)
- { # If an item is a directory, then open it further.
+ { # If an item is a folder, then open it further.
- opendir(SUBDIR, $FileName) or die "Unable to open the directory, $FileName for reading.\n";
- @SubDirs = readdir(SUBDIR);
- close(SUBDIR);
-
-
- $base = basename($FileName); # Get the base name
- $dir = dirname($FileName); # Get the directory name
- ($base, $dir, $ext) = fileparse($FileName, '\..*'); # Get the extension of the file passed.
-
- # Intemediary automated script like base.pl, lib.pl, cmd.pl etc.
- $IntAutoScript = "t/".$base.".pl";
+ $dir = dirname($FileName); # Get the folder name
+ foreach $DirItem1(@Dirs)
+ {
+ $DirItem2 = $DirItem1;
+ if($FileName =~ m/$DirItem2/)
+ {
+ $DirItem = $DirItem1;
- # Write into auto.pl
- print FHWA "print \`perl $IntAutoScript\`\;\n";
- print FHWA "print \"\\n\\n\\n\"\;\n\n";
+ # Intemediary automated script like base.pl, lib.pl, cmd.pl etc.
+ $IntAutoScript = "t/".$DirItem.".pl";
+ }
+ }
-
- print "Generating $IntAutoScript...\n";
# Write into the intermediary auto script.
- open(FHW, "> $IntAutoScript") or die "Unable to open the file, $IntAutoScript for writing.\n";
- seek(FHW, 0 ,0);
+ open(FHW, ">> $IntAutoScript") or die "Unable to open the file, $IntAutoScript for appending.\n";
+ seek(FHW, 0, 2); # seek to the end of the file.
flock(FHW, LOCK_EX); # Lock the file for safety purposes.
- print FHW "\n\nprint \"Testing $base directory:\\n\\n\\n\"\;\n\n\n";
-
+ $pos = tell(FHW);
+ if($pos <= 0)
+ {
+ print "Generating $IntAutoScript...\n";
+ print FHW "\n\nprint \"Testing $DirItem folder:\\n\\n\\n\"\;\n\n\n";
+ }
+ opendir(SUBDIR, $FileName);
+ @SubDirs = readdir(SUBDIR);
+ close(SUBDIR);
foreach $SubFileName(@SubDirs)
{
+ $SubFileName = $FileName."/".$SubFileName;
if(-d $SubFileName)
{
- $SubFileName = $FileName."/".$SubFileName;
- push @DirNames, $SubFileName; # If sub-directory, push it into the array.
+ push @DirNames, $SubFileName; # If sub-folder, push it into the array.
}
else
{
- $SubFileName = $FileName."/".$SubFileName;
&Process_File($SubFileName); # If file, process it.
}
- }
- # Write into the intermediary auto script.
- print FHW "\nprint \"Testing of $base directory done!\\n\\n\"\;\n\n";
+ $index++;
+ }
flock(FHW, LOCK_UN); # unlock the file.
close FHW; # close the file.
- print "$IntAutoScript Done!\n\n";
+
+ if($index <= 0)
+ {
+ # The folder is empty and delete the corresponding '.pl' file.
+ unlink($IntAutoScript);
+ print "Deleted $IntAutoScript since it corresponded to an empty folder.\n";
+ }
+ else
+ {
+ if($pos <= 0)
+ { # This logic to make sure that it is written only once.
+ # Only if something is written into the intermediary auto script,
+ # only then make an entry of the intermediary auto script in nwauto.pl
+ print FHWA "print \`perl $IntAutoScript\`\;\n";
+ print FHWA "print \"\\n\\n\\n\"\;\n\n";
+ }
+ }
+ }
+ else
+ {
+ if(-f $FileName)
+ {
+ $dir = dirname($FileName); # Get the folder name
+ $base = basename($FileName); # Get the base name
+ ($base, $dir, $ext) = fileparse($FileName, '\..*'); # Get the extension of the file passed.
+
+ # Do the processing only if the file has '.t' extension.
+ if($ext eq '.t')
+ {
+ print FHWA "print \`perl $FileName\`\;\n";
+ print FHWA "print \"\\n\\n\\n\"\;\n\n";
+ }
+ }
}
}
+
+## Below adds the ending comments into all the intermediary auto scripts:
+
+opendir(DIR, $DirName);
+@Dirs = readdir(DIR);
close(DIR);
+foreach $DirItem(@Dirs)
+{
+ $index = 0;
+
+ $FileName = $DirName."/".$DirItem;
+ if(-d $FileName)
+ { # If an item is a folder, then open it further.
+ opendir(SUBDIR, $FileName);
+ @SubDirs = readdir(SUBDIR);
+ close(SUBDIR);
-# Write into auto.pl
-print FHWA "\nprint \"Automated Unit Testing of Perl$version done!\\n\\n\"\;\n\n";
+ # To not to write into the file if the corresponding folder was empty.
+ foreach $SubDir(@SubDirs)
+ {
+ $index++;
+ }
+
+ if($index > 0)
+ {
+ # The folder not empty.
+
+ # Intemediary automated script like base.pl, lib.pl, cmd.pl etc.
+ $IntAutoScript = "t/".$DirItem.".pl";
+
+ # Write into the intermediary auto script.
+ open(FHW, ">> $IntAutoScript") or die "Unable to open the file, $IntAutoScript for appending.\n";
+ seek(FHW, 0, 2); # seek to the end of the file.
+ flock(FHW, LOCK_EX); # Lock the file for safety purposes.
+
+ # Write into the intermediary auto script.
+ print FHW "\nprint \"Testing of $DirItem folder done!\\n\\n\"\;\n\n";
+
+ flock(FHW, LOCK_UN); # unlock the file.
+ close FHW; # close the file.
+ }
+ }
+}
+
+
+# Write into nwauto.pl
+print FHWA "\nprint \"Automated Unit Testing of Perl$version for NetWare done!\\n\\n\"\;\n\n";
flock(FHWA, LOCK_UN); # unlock the file.
close FHWA; # close the file.
-print "\nt/auto.pl Done!\n\n";
+print "\n\nGeneration of t/nwauto.pl Done!\n\n";
+print "\nGeneration of automated scripts for NetWare DONE!\n";
-print "\nGeneration of automated scripts for NetWare DONE!\n";
local($Script) = 0;
local($HeadCut) = 0;
-
- $base1 = basename($FileToProcess); # Get the base name
- $dir1 = dirname($FileToProcess); # Get the directory name
- ($base1, $dir1, $ext1) = fileparse($FileToProcess, '\..*'); # Get the extension of the file passed.
-
+ ## For example:
## If the value of $FileToProcess is '/perl/scripts/t/pragma/warnings.t', then
## $dir1 = '/perl/scripts/t/pragma/'
## $base1 = 'warnings'
## $ext1 = '.t'
-
+ $dir1 = dirname($FileToProcess); # Get the folder name
+ $base1 = basename($FileToProcess); # Get the base name
+ ($base1, $dir1, $ext1) = fileparse($FileToProcess, '\..*'); # Get the extension of the file passed.
# Do the processing only if the file has '.t' extension.
if($ext1 eq '.t')
{
foreach $Script(@ScriptsNotUsed)
{
- if($Script eq $FileToProcess)
+ # The variables are converted to lower case before they are compared.
+ # This is done to remove the case-sensitive comparison done by 'eq'.
+ $Script1 = lc($Script);
+ $FileToProcess1 = lc($FileToProcess);
+ if($Script1 eq $FileToProcess1)
{
$HeadCut = 1;
}
- Automated Testing of Perl5.6.1 Interpreter for NetWare.
+ Automated Testing of Perl5 Interpreter for NetWare.
-A set of Standard Unit Test Scripts to test all the functionalities of Perl 5.6.1 Interpreter are available along with the CPAN download. They are all located under 't' folder. These include sub-folders under 't' folder: 'base', 'cmd', 'comp', 'io', lib', 'op', 'pod', 'pragma', 'run'. Each of these sub-folders contain few test scripts ('.t' files) under them.
+A set of Standard Unit Test Scripts to test all the functionalities of Perl5 Interpreter are available along with the CPAN download. They are all located under 't' folder. These include sub-folders under 't' such as: 'base', 'cmd', 'comp', 'io', lib', 'op', 'pod', 'pragma' and 'run'. Each of these sub-folders contain few test scripts ('.t' files) under them.
Executing these test scripts on NetWare can be automated as per the following:
-1. Automated scripts, 'base.pl', 'cmd.pl', 'comp.pl', 'io.pl', 'lib.pl', 'op.pl', 'pod.pl', 'pragma.pl', 'run.pl' can be generated that are used to execute all the test scripts ('.t' files) under the corresponding folder.
-For example, 'base.pl' tests all the test scripts under 'sys:\perl\scripts\t\base' folder, 'comp.pl' test all scripts under 'sys:\perl\scripts\t\comp' folder and so on.
+1. Generate automated scripts like 'base.pl', 'cmd.pl', 'comp.pl', 'io.pl', 'lib.pl', 'op.pl', 'pod.pl', 'pragma.pl', 'run.pl' that execute all the test scripts ('.t' files) under the corresponding folder.
+For example, 'base.pl' to test all the scripts under 'sys:\perl\scripts\t\base' folder,
+ 'comp.pl' to test all the scripts under 'sys:\perl\scripts\t\comp' folder and so on.
-2. An automated script, 'auto.pl' can also be generated that executes all the above mentioned '.pl' automated scripts, thus executing all the '.t' scripts.
+2. Generate an automated script, 'nwauto.pl' that executes all the above mentioned '.pl' automated scripts, thus in turn executing all the '.t' scripts.
-There is a script 'NWScripts.pl' available under the 'NetWare\t' folder of the CPAN download. This is written to generate these automated scripts when executed on a NetWare server. It generates the automated scripts, 'base.pl', 'cmd.pl', 'comp.pl', 'io.pl', 'lib.pl', 'op.pl', 'pod.pl', 'pragma.pl', 'run.pl' and also 'auto.pl' by including all the corresponding '.t' scripts in them. For example, all the scripts that are under 't\base' folder will be entered in 'base.pl' and so on. 'auto.pl will include all these '.pl' scripts like 'base.pl', 'comp.pl' etc.
+The script, 'NWScripts.pl' available under the 'NetWare\t' folder of the CPAN download, is written to generate these automated scripts when executed on a NetWare server. It generates 'base.pl', 'cmd.pl', 'comp.pl', 'io.pl', 'lib.pl', 'op.pl', 'pod.pl', 'pragma.pl', 'run.pl' and also 'nwauto.pl' by including all the corresponding '.t' scripts in them in backtick operators.
+For example, all the scripts that are under 't\base' folder will be entered in 'base.pl' and so on. 'nwauto.pl' includes all these '.pl' scripts like 'base.pl', 'comp.pl' etc.
The following steps elicits the procedure for executing the automated scripts:
-1. Copy the 't' folder from the CPAN download to 'sys:\perl\scripts' folder on the NetWare server.
+1. Make sure that your NetWare server is mapped to "i:".
-2. Copy all the files from 'NetWare\t' folder of the CPAN download into 'sys:\perl\scripts\t' folder.
+2. Execute "nmake nwinstall" (after complete build) in the 'NetWare' folder of the CPAN download. This installs all the library files, perl modules and all the 't' scripts in appropriate folders onto your server.
-3. Execute the command "perl t\NWModify.pl" on the console command prompt. This script replaces
+3. Copy all the files from 'NetWare\t' folder of the CPAN download into 'sys:\perl\scripts\t' folder.
+
+4. Execute the command "perl t\NWModify.pl" on the console command prompt of your server. This script replaces
"@INC = " with "unshift @INC, " and
"push @INC, " with "unshift @INC, "
from all the scripts under 'sys:\perl\scripts\t' folder.
This is done to include the correct path for libraries into the scripts when executed on NetWare. If this is not done, some of the scripts will not get executed since they cannot locate the corresponding libraries.
-4. Execute the command "perl t\NWScripts.pl" on the console command prompt to generate the automated scripts mentioned above under the 'sys:\perl\scripts\t' folder.
- (See above for details).
+5. Execute the command "perl t\NWScripts.pl" on the console command prompt to generate the automated scripts mentioned above under the 'sys:\perl\scripts\t' folder.
+
+6. Execute the command "perl t\nwauto.pl" on the server console command prompt. This runs all the standard test scripts. If you desire to redirect or save the results into a file, say 'nwauto.txt', then the console command to execute is: "perl t\nwauto.pl > nwauto.txt".
-5. Execute 'auto.pl' script using the server console command, "perl t\auto.pl" to run all the standard test scripts. If you want the results to be redirected into a file, say 'auto.txt', then the console command is: "perl t\auto.pl > auto.txt"
+7. If you wish to execute only a certain set of scripts, then run the corresponding '.pl' file.
+For example, if you wish to execute only the 'lib' scripts, then execute 'lib.pl' through the server console command, "perl t\lib.pl'. To redirect the results into a file, the console command is, "perl t\lib.pl > lib.txt".
-6. If you want to execute certain set of scripts, then run the corresponding '.pl' file. For example, if you want to execute only the 'lib' scripts, then execute 'run.pl' through the server console command, "perl t\run.pl'. To redirect the results into a file, the console command could be, "perl t\run.pl > run.txt".
Known Issues:
1. 'openpid.t' in 'sys:\perl\scripts\t\io.pl' script
Reason:
- This either hangs or abends the server when executing through auto scripts.
- When run individually, the script execution goes through fine.
+ This either hangs or abends the server when executing through auto scripts. When run individually, the script execution goes through fine.
2. 'argv.t' in 'sys:\perl\scripts\t\io.pl' script
Reason:
- This either hangs or abends the server when executing through auto scripts.
- When run individually, the script execution goes through fine.
+ This either hangs or abends the server when executing through auto scripts. When run individually, the script execution goes through fine.
-3. 'filehand.t' in 'sys:\perl\scripts\t\lib.pl' script
+3. 'filehandle.t' in 'sys:\perl\scripts\t\lib.pl' script
Reason:
- This hangs in the last test case where it uses FileHandle::Pipe whether run individually
- or through an auto script.
+ This hangs in the last test case where it uses FileHandle::Pipe whether run individually or through an auto script.
ch = '?';
else
ch = '/';
- if (pm->op_pmregexp)
+ if (PM_GETRE(pm))
Perl_dump_indent(aTHX_ level, file, "PMf_PRE %c%s%c%s\n",
- ch, pm->op_pmregexp->precomp, ch,
+ ch, PM_GETRE(pm)->precomp, ch,
(pm->op_private & OPpRUNTIME) ? " (RUNTIME)" : "");
else
Perl_dump_indent(aTHX_ level, file, "PMf_PRE (RUNTIME)\n");
Perl_dump_indent(aTHX_ level, file, "PMf_REPL = ");
op_dump(pm->op_pmreplroot);
}
- if (pm->op_pmflags || (pm->op_pmregexp && pm->op_pmregexp->check_substr)) {
+ if (pm->op_pmflags || (PM_GETRE(pm) && PM_GETRE(pm)->check_substr)) {
SV *tmpsv = newSVpvn("", 0);
if (pm->op_pmdynflags & PMdf_USED)
sv_catpv(tmpsv, ",USED");
sv_catpv(tmpsv, ",TAINTED");
if (pm->op_pmflags & PMf_ONCE)
sv_catpv(tmpsv, ",ONCE");
- if (pm->op_pmregexp && pm->op_pmregexp->check_substr
- && !(pm->op_pmregexp->reganch & ROPT_NOSCAN))
+ if (PM_GETRE(pm) && PM_GETRE(pm)->check_substr
+ && !(PM_GETRE(pm)->reganch & ROPT_NOSCAN))
sv_catpv(tmpsv, ",SCANFIRST");
- if (pm->op_pmregexp && pm->op_pmregexp->check_substr
- && pm->op_pmregexp->reganch & ROPT_CHECK_ALL)
+ if (PM_GETRE(pm) && PM_GETRE(pm)->check_substr
+ && PM_GETRE(pm)->reganch & ROPT_CHECK_ALL)
sv_catpv(tmpsv, ",ALL");
if (pm->op_pmflags & PMf_SKIPWHITE)
sv_catpv(tmpsv, ",SKIPWHITE");
#define PMOP_pmreplroot(o) o->op_pmreplroot
#define PMOP_pmreplstart(o) o->op_pmreplstart
#define PMOP_pmnext(o) o->op_pmnext
-#define PMOP_pmregexp(o) o->op_pmregexp
+#define PMOP_pmregexp(o) PM_GETRE(o)
#define PMOP_pmflags(o) o->op_pmflags
#define PMOP_pmpermflags(o) o->op_pmpermflags
REGEXP * rx = NO_INIT
CODE:
ST(0) = sv_newmortal();
- rx = o->op_pmregexp;
+ rx = PM_GETRE(o);
if (rx)
sv_setpvn(ST(0), rx->precomp, rx->prelen);
if (defined($re)) {
my $resym = sprintf("re%d", $re_index++);
$decl->add(sprintf("static char *$resym = %s;", cstring($re)));
- $init->add(sprintf("$pm.op_pmregexp = pregcomp($resym, $resym + %u, &$pm);",
+ $init->add(sprintf("PM_SETRE($pm,pregcomp($resym, $resym + %u, &$pm));",
length($re)));
}
if ($gvsym) {
hv_store((HV*)sv, bstate->bs_pv.xpv_pv, bstate->bs_pv.xpv_cur, arg, 0)
#define BSET_pv_free(pv) Safefree(pv.xpv_pv)
#define BSET_pregcomp(o, arg) \
- ((PMOP*)o)->op_pmregexp = arg ? \
- CALLREGCOMP(aTHX_ arg, arg + bstate->bs_pv.xpv_cur, ((PMOP*)o)) : 0
+ (PM_SETRE(((PMOP*)o), arg ? \
+ CALLREGCOMP(aTHX_ arg, arg + bstate->bs_pv.xpv_cur, ((PMOP*)o)) : 0))
#define BSET_newsv(sv, arg) \
STMT_START { \
sv = (arg == SVt_PVAV ? (SV*)newAV() : \
WriteMakefile(
'NAME' => 'Digest::MD5',
'VERSION_FROM' => 'MD5.pm',
+ MAN3PODS => {}, # Pods will be built by installman.
@extra,
'dist' => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
);
--- /dev/null
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ if ($^O eq 'MacOS') {
+ @INC = qw(: ::lib ::macos:lib);
+ } else {
+ @INC = '.';
+ push @INC, '../lib';
+ }
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
+ print "1..0\n";
+ exit 0;
+ }
+ print "1..11\n";
+}
+END {
+ print "not ok 1\n" unless $loaded;
+}
+use File::Glob ':glob';
+use Cwd ();
+$loaded = 1;
+print "ok 1\n";
+
+sub array {
+ return '(', join(", ", map {defined $_ ? "\"$_\"" : "undef"} @a), ")\n";
+}
+
+# look for the contents of the current directory
+$ENV{PATH} = "/bin";
+delete @ENV{BASH_ENV, CDPATH, ENV, IFS};
+@correct = ();
+if (opendir(D, $^O eq "MacOS" ? ":" : ".")) {
+ @correct = grep { !/^\./ } sort readdir(D);
+ closedir D;
+}
+@a = File::Glob::glob("*", 0);
+@a = sort @a;
+if ("@a" ne "@correct" || GLOB_ERROR) {
+ print "# |@a| ne |@correct|\nnot ";
+}
+print "ok 2\n";
+
+# look up the user's home directory
+# should return a list with one item, and not set ERROR
+if ($^O ne 'MSWin32' && $^O ne 'NetWare' && $^O ne 'VMS' && $^O ne 'os2') {
+ eval {
+ ($name, $home) = (getpwuid($>))[0,7];
+ 1;
+ } and do {
+ @a = bsd_glob("~$name", GLOB_TILDE);
+ if (scalar(@a) != 1 || $a[0] ne $home || GLOB_ERROR) {
+ print "not ";
+ }
+ };
+}
+print "ok 3\n";
+
+# check backslashing
+# should return a list with one item, and not set ERROR
+@a = bsd_glob('TEST', GLOB_QUOTE);
+if (scalar @a != 1 || $a[0] ne 'TEST' || GLOB_ERROR) {
+ local $/ = "][";
+ print "# [@a]\n";
+ print "not ";
+}
+print "ok 4\n";
+
+# check nonexistent checks
+# should return an empty list
+# XXX since errfunc is NULL on win32, this test is not valid there
+@a = bsd_glob("asdfasdf", 0);
+if (($^O ne 'MSWin32' && $^O ne 'NetWare') and scalar @a != 0) {
+ print "# |@a|\nnot ";
+}
+print "ok 5\n";
+
+# check bad protections
+# should return an empty list, and set ERROR
+if ($^O eq 'mpeix' or $^O eq 'MSWin32' or $^O eq 'NetWare' or $^O eq 'os2' or $^O eq 'VMS'
+ or $^O eq 'cygwin' or Cwd::cwd() =~ m#^$Config{'afsroot'}#s or not $>)
+{
+ print "ok 6 # skipped\n";
+}
+else {
+ $dir = "pteerslt";
+ mkdir $dir, 0;
+ @a = bsd_glob("$dir/*", GLOB_ERR);
+ #print "\@a = ", array(@a);
+ rmdir $dir;
+ if (scalar(@a) != 0 || GLOB_ERROR == 0) {
+ print "not ";
+ }
+ print "ok 6\n";
+}
+
+# check for csh style globbing
+@a = bsd_glob('{a,b}', GLOB_BRACE | GLOB_NOMAGIC);
+unless (@a == 2 and $a[0] eq 'a' and $a[1] eq 'b') {
+ print "not ";
+}
+print "ok 7\n";
+
+@a = bsd_glob(
+ '{TES*,doesntexist*,a,b}',
+ GLOB_BRACE | GLOB_NOMAGIC | ($^O eq 'VMS' ? GLOB_NOCASE : 0)
+);
+
+# Working on t/TEST often causes this test to fail because it sees Emacs temp
+# and RCS files. Filter them out, and .pm files too, and patch temp files.
+@a = grep !/(,v$|~$|\.(pm|ori?g|rej)$)/, @a;
+
+print "# @a\n";
+
+unless (@a == 3
+ and $a[0] eq ($^O eq 'VMS'? 'test.' : 'TEST')
+ and $a[1] eq 'a'
+ and $a[2] eq 'b')
+{
+ print "not ok 8 # @a";
+} else {
+ print "ok 8\n";
+}
+
+# "~" should expand to $ENV{HOME}
+$ENV{HOME} = "sweet home";
+@a = bsd_glob('~', GLOB_TILDE | GLOB_NOMAGIC);
+unless ($^O eq "MacOS" || (@a == 1 and $a[0] eq $ENV{HOME})) {
+ print "not ";
+}
+print "ok 9\n";
+
+# GLOB_ALPHASORT (default) should sort alphabetically regardless of case
+mkdir "pteerslt", 0777;
+chdir "pteerslt";
+
+@f_names = qw(Ax.pl Bx.pl Cx.pl aY.pl bY.pl cY.pl);
+@f_alpha = qw(Ax.pl aY.pl Bx.pl bY.pl Cx.pl cY.pl);
+if ('a' lt 'A') { # EBCDIC char sets sort lower case before UPPER
+ @f_names = sort(@f_names);
+}
+if ($^O eq 'VMS') { # VMS is happily caseignorant
+ @f_alpha = qw(ax.pl ay.pl bx.pl by.pl cx.pl cy.pl);
+ @f_names = @f_alpha;
+}
+
+for (@f_names) {
+ open T, "> $_";
+ close T;
+}
+
+$pat = "*.pl";
+
+$ok = 1;
+@g_names = bsd_glob($pat, 0);
+print "# f_names = @f_names\n";
+print "# g_names = @g_names\n";
+for (@f_names) {
+ $ok = 0 unless $_ eq shift @g_names;
+}
+print $ok ? "ok 10\n" : "not ok 10\n";
+
+$ok = 1;
+@g_alpha = bsd_glob($pat);
+print "# f_alpha = @f_alpha\n";
+print "# g_alpha = @g_alpha\n";
+for (@f_alpha) {
+ $ok = 0 unless $_ eq shift @g_alpha;
+}
+print $ok ? "ok 11\n" : "not ok 11\n";
+
+unlink @f_names;
+chdir "..";
+rmdir "pteerslt";
--- /dev/null
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ if ($^O eq 'MacOS') {
+ @INC = qw(: ::lib ::macos:lib);
+ } else {
+ @INC = '.';
+ push @INC, '../lib';
+ }
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
+ print "1..0\n";
+ exit 0;
+ }
+ print "1..7\n";
+}
+END {
+ print "not ok 1\n" unless $loaded;
+}
+use File::Glob qw(:glob csh_glob);
+$loaded = 1;
+print "ok 1\n";
+
+my $pat = $^O eq "MacOS" ? ":op:G*.t" : "op/G*.t";
+
+# Test the actual use of the case sensitivity tags, via csh_glob()
+import File::Glob ':nocase';
+@a = csh_glob($pat);
+print "not " unless @a >= 8;
+print "ok 2\n";
+
+# This may fail on systems which are not case-PRESERVING
+import File::Glob ':case';
+@a = csh_glob($pat); # None should be uppercase
+print "not " unless @a == 0;
+print "ok 3\n";
+
+# Test the explicit use of the GLOB_NOCASE flag
+@a = bsd_glob($pat, GLOB_NOCASE);
+print "not " unless @a >= 3;
+print "ok 4\n";
+
+# Test Win32 backslash nastiness...
+if ($^O ne 'MSWin32' && $^O ne 'NetWare') {
+ print "ok 5\nok 6\nok 7\n";
+}
+else {
+ @a = File::Glob::glob("op\\g*.t");
+ print "not " unless @a >= 8;
+ print "ok 5\n";
+ mkdir "[]", 0;
+ @a = File::Glob::glob("\\[\\]", GLOB_QUOTE);
+ rmdir "[]";
+ print "# returned @a\nnot " unless @a == 1;
+ print "ok 6\n";
+ @a = bsd_glob("op\\*", GLOB_QUOTE);
+ print "not " if @a == 0;
+ print "ok 7\n";
+}
--- /dev/null
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ if ($^O eq 'MacOS') {
+ @INC = qw(: ::lib ::macos:lib);
+ } else {
+ @INC = '.';
+ push @INC, '../lib';
+ }
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
+ print "1..0\n";
+ exit 0;
+ }
+ print "1..10\n";
+}
+END {
+ print "not ok 1\n" unless $loaded;
+}
+
+BEGIN {
+ *CORE::GLOBAL::glob = sub { "Just another Perl hacker," };
+}
+
+BEGIN {
+ if ("Just another Perl hacker," ne (<*>)[0]) {
+ die <<EOMessage;
+Your version of perl ($]) doesn't seem to allow extensions to override
+the core glob operator.
+EOMessage
+ }
+}
+
+use File::Glob ':globally';
+$loaded = 1;
+print "ok 1\n";
+
+$_ = $^O eq "MacOS" ? ":op:*.t" : "op/*.t";
+my @r = glob;
+print "not " if $_ ne ($^O eq "MacOS" ? ":op:*.t" : "op/*.t");
+print "ok 2\n";
+
+print "# |@r|\nnot " if @r < 3;
+print "ok 3\n";
+
+# check if <*/*> works
+if ($^O eq "MacOS") {
+ @r = <:*:*.t>;
+} else {
+ @r = <*/*.t>;
+}
+# at least t/global.t t/basic.t, t/taint.t
+print "not " if @r < 3;
+print "ok 4\n";
+my $r = scalar @r;
+
+# check if scalar context works
+@r = ();
+if ($^O eq "MacOS") {
+ while (defined($_ = <:*:*.t>)) {
+ #print "# $_\n";
+ push @r, $_;
+ }
+} else {
+ while (defined($_ = <*/*.t>)) {
+ #print "# $_\n";
+ push @r, $_;
+ }
+}
+print "not " if @r != $r;
+print "ok 5\n";
+
+# check if list context works
+@r = ();
+if ($^O eq "MacOS") {
+ for (<:*:*.t>) {
+ #print "# $_\n";
+ push @r, $_;
+ }
+} else {
+ for (<*/*.t>) {
+ #print "# $_\n";
+ push @r, $_;
+ }
+}
+print "not " if @r != $r;
+print "ok 6\n";
+
+# test if implicit assign to $_ in while() works
+@r = ();
+if ($^O eq "MacOS") {
+ while (<:*:*.t>) {
+ #print "# $_\n";
+ push @r, $_;
+ }
+} else {
+ while (<*/*.t>) {
+ #print "# $_\n";
+ push @r, $_;
+ }
+}
+print "not " if @r != $r;
+print "ok 7\n";
+
+# test if explicit glob() gets assign magic too
+my @s = ();
+while (glob($^O eq 'MacOS' ? ':*:*.t' : '*/*.t')) {
+ #print "# $_\n";
+ push @s, $_;
+}
+print "not " if "@r" ne "@s";
+print "ok 8\n";
+
+# how about in a different package, like?
+package Foo;
+use File::Glob ':globally';
+@s = ();
+while (glob($^O eq 'MacOS' ? ':*:*.t' : '*/*.t')) {
+ #print "# $_\n";
+ push @s, $_;
+}
+print "not " if "@r" ne "@s";
+print "ok 9\n";
+
+# test if different glob ops maintain independent contexts
+@s = ();
+my $i = 0;
+if ($^O eq "MacOS") {
+ while (<:*:*.t>) {
+ #print "# $_ <";
+ push @s, $_;
+ while (<:bas*:*.t>) {
+ #print " $_";
+ $i++;
+ }
+ #print " >\n";
+ }
+} else {
+ while (<*/*.t>) {
+ #print "# $_ <";
+ push @s, $_;
+ while (<bas*/*.t>) {
+ #print " $_";
+ $i++;
+ }
+ #print " >\n";
+ }
+}
+print "not " if "@r" ne "@s" or not $i;
+print "ok 10\n";
--- /dev/null
+#!./perl -T
+
+BEGIN {
+ chdir 't' if -d 't';
+ if ($^O eq 'MacOS') {
+ @INC = qw(: ::lib ::macos:lib);
+ } else {
+ @INC = '.';
+ push @INC, '../lib';
+ }
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
+ print "1..0\n";
+ exit 0;
+ }
+ print "1..2\n";
+}
+END {
+ print "not ok 1\n" unless $loaded;
+}
+use File::Glob;
+$loaded = 1;
+print "ok 1\n";
+
+# all filenames should be tainted
+@a = File::Glob::bsd_glob("*");
+eval { $a = join("",@a), kill 0; 1 };
+unless ($@ =~ /Insecure dependency/) {
+ print "not ";
+}
+print "ok 2\n";
WriteMakefile(
VERSION_FROM => "lib/List/Util.pm",
+ MAN3PODS => {}, # Pods will be built by installman.
NAME => "List::Util",
);
WriteMakefile(
NAME => 'MIME::Base64',
+ MAN3PODS => {}, # Pods will be built by installman.
VERSION_FROM => 'Base64.pm',
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
);
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => "PerlIO::Scalar",
+ MAN3PODS => {}, # Pods will be built by installman.
VERSION_FROM => 'Scalar.pm',
);
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => "PerlIO::Via",
+ MAN3PODS => {}, # Pods will be built by installman.
VERSION_FROM => 'Via.pm',
);
WriteMakefile(
'NAME' => 'Time::HiRes',
+ MAN3PODS => {}, # Pods will be built by installman.
'VERSION_FROM' => 'HiRes.pm',
);
WriteMakefile(
'NAME' => 'Time::Piece',
+ MAN3PODS => {}, # Pods will be built by installman.
'VERSION_FROM' => 'Piece.pm',
);
WriteMakefile(
'NAME' => 'XS::Typemap',
+ MAN3PODS => {}, # Pods will be built by installman.
'VERSION_FROM' => 'Typemap.pm',
'dist' => { COMPRESS => "gzip -9f"},
OBJECT => 'stdio.o Typemap.o',
use vars qw($packlist @modpods);
require Cwd;
+if ($Config{d_umask}) {
+ umask(022); # umasks like 077 aren't that useful for installations
+}
+
$ENV{SHELL} = 'sh' if $^O eq 'os2';
my $ver = $Config{version}; # Not used presently.
use Config;
use subs qw(unlink link chmod);
+if ($Config{d_umask}) {
+ umask(022); # umasks like 077 aren't that useful for installations
+}
+
$Is_NetWare = $Config{osname} eq 'NetWare';
if ($Is_NetWare) {
$Is_W32 = 0;
+++ /dev/null
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl test.pl'
-
-######################### We start with some black magic to print on failure.
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
-}
-
-# Change 1..1 below to 1..last_test_to_print .
-# (It may become useful if the test is moved to ./t subdirectory.)
-
-END {print "not ok 1\n" unless $loaded;}
-use v5.6.0;
-use Attribute::Handlers;
-$loaded = 1;
-
-######################### End of black magic.
-
-# Insert your test code below (better if it prints "ok 13"
-# (correspondingly "not ok 13") depending on the success of chunk 13
-# of the test code):
-
-sub ok { $::count++; push @::results, [$_[1], $_[0]?"":"not "]; }
-
-END { print "1..$::count\n";
- print map "$_->[1]ok $_->[0]\n", sort {$a->[0]<=>$b->[0]} @::results }
-
-package Test;
-use warnings;
-no warnings 'redefine';
-
-sub UNIVERSAL::Okay :ATTR { ::ok @{$_[4]} }
-
-sub Dokay :ATTR(SCALAR) { ::ok @{$_[4]} }
-sub Dokay :ATTR(HASH) { ::ok @{$_[4]} }
-sub Dokay :ATTR(ARRAY) { ::ok @{$_[4]} }
-sub Dokay :ATTR(CODE) { ::ok @{$_[4]} }
-
-sub Vokay :ATTR(VAR) { ::ok @{$_[4]} }
-
-sub Aokay :ATTR(ANY) { ::ok @{$_[4]} }
-
-package main;
-use warnings;
-
-my $x1 :Okay(1,1);
-my @x1 :Okay(1=>2);
-my %x1 :Okay(1,3);
-sub x1 :Okay(1,4) {}
-
-my Test $x2 :Dokay(1,5);
-
-package Test;
-my $x3 :Dokay(1,6);
-my Test $x4 :Dokay(1,7);
-sub x3 :Dokay(1,8) {}
-
-my $y1 :Okay(1,9);
-my @y1 :Okay(1,10);
-my %y1 :Okay(1,11);
-sub y1 :Okay(1,12) {}
-
-my $y2 :Vokay(1,13);
-my @y2 :Vokay(1,14);
-my %y2 :Vokay(1,15);
-# BEGIN {eval 'sub y2 :Vokay(0,16) {}; 1' or
-::ok(1,16);
-# }
-
-my $z :Aokay(1,17);
-my @z :Aokay(1,18);
-my %z :Aokay(1,19);
-sub z :Aokay(1,20) {};
-
-package DerTest;
-use base 'Test';
-use warnings;
-
-my $x5 :Dokay(1,21);
-my Test $x6 :Dokay(1,22);
-sub x5 :Dokay(1,23);
-
-my $y3 :Okay(1,24);
-my @y3 :Okay(1,25);
-my %y3 :Okay(1,26);
-sub y3 :Okay(1,27) {}
-
-package Unrelated;
-
-BEGIN { eval 'my $x7 :Dokay(0,28)' or ::ok(1,28); }
-my Test $x8 :Dokay(1,29);
-eval 'sub x7 :Dokay(0,30) {}' or ::ok(1,30);
-
-
-package Tie::Loud;
-
-sub TIESCALAR { ::ok(1,31); bless {}, $_[0] }
-sub FETCH { ::ok(1,32); return 1 }
-sub STORE { ::ok(1,33); return 1 }
-
-package Tie::Noisy;
-
-sub TIEARRAY { ::ok(1,$_[1]); bless {}, $_[0] }
-sub FETCH { ::ok(1,35); return 1 }
-sub STORE { ::ok(1,36); return 1 }
-sub FETCHSIZE { 100 }
-
-package Tie::Rowdy;
-
-sub TIEHASH { ::ok(1,$_[1]); bless {}, $_[0] }
-sub FETCH { ::ok(1,38); return 1 }
-sub STORE { ::ok(1,39); return 1 }
-
-package main;
-
-use Attribute::Handlers autotie => { Other::Loud => Tie::Loud,
- Noisy => Tie::Noisy,
- UNIVERSAL::Rowdy => Tie::Rowdy,
- };
-
-my Other $loud : Loud;
-$loud++;
-
-my @noisy : Noisy(34);
-$noisy[0]++;
-
-my %rowdy : Rowdy(37);
-$rowdy{key}++;
--- /dev/null
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+######################### We start with some black magic to print on failure.
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+# Change 1..1 below to 1..last_test_to_print .
+# (It may become useful if the test is moved to ./t subdirectory.)
+
+END {print "not ok 1\n" unless $loaded;}
+use v5.6.0;
+use Attribute::Handlers;
+$loaded = 1;
+
+######################### End of black magic.
+
+# Insert your test code below (better if it prints "ok 13"
+# (correspondingly "not ok 13") depending on the success of chunk 13
+# of the test code):
+
+sub ok { $::count++; push @::results, [$_[1], $_[0]?"":"not "]; }
+
+END { print "1..$::count\n";
+ print map "$_->[1]ok $_->[0]\n", sort {$a->[0]<=>$b->[0]} @::results }
+
+package Test;
+use warnings;
+no warnings 'redefine';
+
+sub UNIVERSAL::Okay :ATTR { ::ok @{$_[4]} }
+
+sub Dokay :ATTR(SCALAR) { ::ok @{$_[4]} }
+sub Dokay :ATTR(HASH) { ::ok @{$_[4]} }
+sub Dokay :ATTR(ARRAY) { ::ok @{$_[4]} }
+sub Dokay :ATTR(CODE) { ::ok @{$_[4]} }
+
+sub Vokay :ATTR(VAR) { ::ok @{$_[4]} }
+
+sub Aokay :ATTR(ANY) { ::ok @{$_[4]} }
+
+package main;
+use warnings;
+
+my $x1 :Okay(1,1);
+my @x1 :Okay(1=>2);
+my %x1 :Okay(1,3);
+sub x1 :Okay(1,4) {}
+
+my Test $x2 :Dokay(1,5);
+
+package Test;
+my $x3 :Dokay(1,6);
+my Test $x4 :Dokay(1,7);
+sub x3 :Dokay(1,8) {}
+
+my $y1 :Okay(1,9);
+my @y1 :Okay(1,10);
+my %y1 :Okay(1,11);
+sub y1 :Okay(1,12) {}
+
+my $y2 :Vokay(1,13);
+my @y2 :Vokay(1,14);
+my %y2 :Vokay(1,15);
+# BEGIN {eval 'sub y2 :Vokay(0,16) {}; 1' or
+::ok(1,16);
+# }
+
+my $z :Aokay(1,17);
+my @z :Aokay(1,18);
+my %z :Aokay(1,19);
+sub z :Aokay(1,20) {};
+
+package DerTest;
+use base 'Test';
+use warnings;
+
+my $x5 :Dokay(1,21);
+my Test $x6 :Dokay(1,22);
+sub x5 :Dokay(1,23);
+
+my $y3 :Okay(1,24);
+my @y3 :Okay(1,25);
+my %y3 :Okay(1,26);
+sub y3 :Okay(1,27) {}
+
+package Unrelated;
+
+BEGIN { eval 'my $x7 :Dokay(0,28)' or ::ok(1,28); }
+my Test $x8 :Dokay(1,29);
+eval 'sub x7 :Dokay(0,30) {}' or ::ok(1,30);
+
+
+package Tie::Loud;
+
+sub TIESCALAR { ::ok(1,31); bless {}, $_[0] }
+sub FETCH { ::ok(1,32); return 1 }
+sub STORE { ::ok(1,33); return 1 }
+
+package Tie::Noisy;
+
+sub TIEARRAY { ::ok(1,$_[1]); bless {}, $_[0] }
+sub FETCH { ::ok(1,35); return 1 }
+sub STORE { ::ok(1,36); return 1 }
+sub FETCHSIZE { 100 }
+
+package Tie::Rowdy;
+
+sub TIEHASH { ::ok(1,$_[1]); bless {}, $_[0] }
+sub FETCH { ::ok(1,38); return 1 }
+sub STORE { ::ok(1,39); return 1 }
+
+package main;
+
+use Attribute::Handlers autotie => { Other::Loud => Tie::Loud,
+ Noisy => Tie::Noisy,
+ UNIVERSAL::Rowdy => Tie::Rowdy,
+ };
+
+my Other $loud : Loud;
+$loud++;
+
+my @noisy : Noisy(34);
+$noisy[0]++;
+
+my %rowdy : Rowdy(37);
+$rowdy{key}++;
use File::Find;
use File::Spec;
-if ($^O eq 'MSWin32')
+if ($^O eq 'MSWin32' || $^O eq 'cygwin')
{
# This is a hack - at present File::Find does not produce native names on Win32
# So force File::Spec to use Unix names.
+++ /dev/null
-#!./perl
-
-BEGIN {
- chdir 't' if -d 't';
- if ($^O eq 'MacOS') {
- @INC = qw(: ::lib ::macos:lib);
- } else {
- @INC = '.';
- push @INC, '../lib';
- }
- require Config; import Config;
- if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
- print "1..0\n";
- exit 0;
- }
- print "1..11\n";
-}
-END {
- print "not ok 1\n" unless $loaded;
-}
-use File::Glob ':glob';
-use Cwd ();
-$loaded = 1;
-print "ok 1\n";
-
-sub array {
- return '(', join(", ", map {defined $_ ? "\"$_\"" : "undef"} @a), ")\n";
-}
-
-# look for the contents of the current directory
-$ENV{PATH} = "/bin";
-delete @ENV{BASH_ENV, CDPATH, ENV, IFS};
-@correct = ();
-if (opendir(D, $^O eq "MacOS" ? ":" : ".")) {
- @correct = grep { !/^\./ } sort readdir(D);
- closedir D;
-}
-@a = File::Glob::glob("*", 0);
-@a = sort @a;
-if ("@a" ne "@correct" || GLOB_ERROR) {
- print "# |@a| ne |@correct|\nnot ";
-}
-print "ok 2\n";
-
-# look up the user's home directory
-# should return a list with one item, and not set ERROR
-if ($^O ne 'MSWin32' && $^O ne 'NetWare' && $^O ne 'VMS' && $^O ne 'os2') {
- eval {
- ($name, $home) = (getpwuid($>))[0,7];
- 1;
- } and do {
- @a = bsd_glob("~$name", GLOB_TILDE);
- if (scalar(@a) != 1 || $a[0] ne $home || GLOB_ERROR) {
- print "not ";
- }
- };
-}
-print "ok 3\n";
-
-# check backslashing
-# should return a list with one item, and not set ERROR
-@a = bsd_glob('TEST', GLOB_QUOTE);
-if (scalar @a != 1 || $a[0] ne 'TEST' || GLOB_ERROR) {
- local $/ = "][";
- print "# [@a]\n";
- print "not ";
-}
-print "ok 4\n";
-
-# check nonexistent checks
-# should return an empty list
-# XXX since errfunc is NULL on win32, this test is not valid there
-@a = bsd_glob("asdfasdf", 0);
-if (($^O ne 'MSWin32' && $^O ne 'NetWare') and scalar @a != 0) {
- print "# |@a|\nnot ";
-}
-print "ok 5\n";
-
-# check bad protections
-# should return an empty list, and set ERROR
-if ($^O eq 'mpeix' or $^O eq 'MSWin32' or $^O eq 'NetWare' or $^O eq 'os2' or $^O eq 'VMS'
- or $^O eq 'cygwin' or Cwd::cwd() =~ m#^$Config{'afsroot'}#s or not $>)
-{
- print "ok 6 # skipped\n";
-}
-else {
- $dir = "pteerslt";
- mkdir $dir, 0;
- @a = bsd_glob("$dir/*", GLOB_ERR);
- #print "\@a = ", array(@a);
- rmdir $dir;
- if (scalar(@a) != 0 || GLOB_ERROR == 0) {
- print "not ";
- }
- print "ok 6\n";
-}
-
-# check for csh style globbing
-@a = bsd_glob('{a,b}', GLOB_BRACE | GLOB_NOMAGIC);
-unless (@a == 2 and $a[0] eq 'a' and $a[1] eq 'b') {
- print "not ";
-}
-print "ok 7\n";
-
-@a = bsd_glob(
- '{TES*,doesntexist*,a,b}',
- GLOB_BRACE | GLOB_NOMAGIC | ($^O eq 'VMS' ? GLOB_NOCASE : 0)
-);
-
-# Working on t/TEST often causes this test to fail because it sees Emacs temp
-# and RCS files. Filter them out, and .pm files too, and patch temp files.
-@a = grep !/(,v$|~$|\.(pm|ori?g|rej)$)/, @a;
-
-print "# @a\n";
-
-unless (@a == 3
- and $a[0] eq ($^O eq 'VMS'? 'test.' : 'TEST')
- and $a[1] eq 'a'
- and $a[2] eq 'b')
-{
- print "not ok 8 # @a";
-} else {
- print "ok 8\n";
-}
-
-# "~" should expand to $ENV{HOME}
-$ENV{HOME} = "sweet home";
-@a = bsd_glob('~', GLOB_TILDE | GLOB_NOMAGIC);
-unless ($^O eq "MacOS" || (@a == 1 and $a[0] eq $ENV{HOME})) {
- print "not ";
-}
-print "ok 9\n";
-
-# GLOB_ALPHASORT (default) should sort alphabetically regardless of case
-mkdir "pteerslt", 0777;
-chdir "pteerslt";
-
-@f_names = qw(Ax.pl Bx.pl Cx.pl aY.pl bY.pl cY.pl);
-@f_alpha = qw(Ax.pl aY.pl Bx.pl bY.pl Cx.pl cY.pl);
-if ('a' lt 'A') { # EBCDIC char sets sort lower case before UPPER
- @f_names = sort(@f_names);
-}
-if ($^O eq 'VMS') { # VMS is happily caseignorant
- @f_alpha = qw(ax.pl ay.pl bx.pl by.pl cx.pl cy.pl);
- @f_names = @f_alpha;
-}
-
-for (@f_names) {
- open T, "> $_";
- close T;
-}
-
-$pat = "*.pl";
-
-$ok = 1;
-@g_names = bsd_glob($pat, 0);
-print "# f_names = @f_names\n";
-print "# g_names = @g_names\n";
-for (@f_names) {
- $ok = 0 unless $_ eq shift @g_names;
-}
-print $ok ? "ok 10\n" : "not ok 10\n";
-
-$ok = 1;
-@g_alpha = bsd_glob($pat);
-print "# f_alpha = @f_alpha\n";
-print "# g_alpha = @g_alpha\n";
-for (@f_alpha) {
- $ok = 0 unless $_ eq shift @g_alpha;
-}
-print $ok ? "ok 11\n" : "not ok 11\n";
-
-unlink @f_names;
-chdir "..";
-rmdir "pteerslt";
+++ /dev/null
-#!./perl
-
-BEGIN {
- chdir 't' if -d 't';
- if ($^O eq 'MacOS') {
- @INC = qw(: ::lib ::macos:lib);
- } else {
- @INC = '.';
- push @INC, '../lib';
- }
- require Config; import Config;
- if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
- print "1..0\n";
- exit 0;
- }
- print "1..7\n";
-}
-END {
- print "not ok 1\n" unless $loaded;
-}
-use File::Glob qw(:glob csh_glob);
-$loaded = 1;
-print "ok 1\n";
-
-my $pat = $^O eq "MacOS" ? ":op:G*.t" : "op/G*.t";
-
-# Test the actual use of the case sensitivity tags, via csh_glob()
-import File::Glob ':nocase';
-@a = csh_glob($pat);
-print "not " unless @a >= 8;
-print "ok 2\n";
-
-# This may fail on systems which are not case-PRESERVING
-import File::Glob ':case';
-@a = csh_glob($pat); # None should be uppercase
-print "not " unless @a == 0;
-print "ok 3\n";
-
-# Test the explicit use of the GLOB_NOCASE flag
-@a = bsd_glob($pat, GLOB_NOCASE);
-print "not " unless @a >= 3;
-print "ok 4\n";
-
-# Test Win32 backslash nastiness...
-if ($^O ne 'MSWin32' && $^O ne 'NetWare') {
- print "ok 5\nok 6\nok 7\n";
-}
-else {
- @a = File::Glob::glob("op\\g*.t");
- print "not " unless @a >= 8;
- print "ok 5\n";
- mkdir "[]", 0;
- @a = File::Glob::glob("\\[\\]", GLOB_QUOTE);
- rmdir "[]";
- print "# returned @a\nnot " unless @a == 1;
- print "ok 6\n";
- @a = bsd_glob("op\\*", GLOB_QUOTE);
- print "not " if @a == 0;
- print "ok 7\n";
-}
+++ /dev/null
-#!./perl
-
-BEGIN {
- chdir 't' if -d 't';
- if ($^O eq 'MacOS') {
- @INC = qw(: ::lib ::macos:lib);
- } else {
- @INC = '.';
- push @INC, '../lib';
- }
- require Config; import Config;
- if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
- print "1..0\n";
- exit 0;
- }
- print "1..10\n";
-}
-END {
- print "not ok 1\n" unless $loaded;
-}
-
-BEGIN {
- *CORE::GLOBAL::glob = sub { "Just another Perl hacker," };
-}
-
-BEGIN {
- if ("Just another Perl hacker," ne (<*>)[0]) {
- die <<EOMessage;
-Your version of perl ($]) doesn't seem to allow extensions to override
-the core glob operator.
-EOMessage
- }
-}
-
-use File::Glob ':globally';
-$loaded = 1;
-print "ok 1\n";
-
-$_ = $^O eq "MacOS" ? ":op:*.t" : "op/*.t";
-my @r = glob;
-print "not " if $_ ne ($^O eq "MacOS" ? ":op:*.t" : "op/*.t");
-print "ok 2\n";
-
-print "# |@r|\nnot " if @r < 3;
-print "ok 3\n";
-
-# check if <*/*> works
-if ($^O eq "MacOS") {
- @r = <:*:*.t>;
-} else {
- @r = <*/*.t>;
-}
-# at least t/global.t t/basic.t, t/taint.t
-print "not " if @r < 3;
-print "ok 4\n";
-my $r = scalar @r;
-
-# check if scalar context works
-@r = ();
-if ($^O eq "MacOS") {
- while (defined($_ = <:*:*.t>)) {
- #print "# $_\n";
- push @r, $_;
- }
-} else {
- while (defined($_ = <*/*.t>)) {
- #print "# $_\n";
- push @r, $_;
- }
-}
-print "not " if @r != $r;
-print "ok 5\n";
-
-# check if list context works
-@r = ();
-if ($^O eq "MacOS") {
- for (<:*:*.t>) {
- #print "# $_\n";
- push @r, $_;
- }
-} else {
- for (<*/*.t>) {
- #print "# $_\n";
- push @r, $_;
- }
-}
-print "not " if @r != $r;
-print "ok 6\n";
-
-# test if implicit assign to $_ in while() works
-@r = ();
-if ($^O eq "MacOS") {
- while (<:*:*.t>) {
- #print "# $_\n";
- push @r, $_;
- }
-} else {
- while (<*/*.t>) {
- #print "# $_\n";
- push @r, $_;
- }
-}
-print "not " if @r != $r;
-print "ok 7\n";
-
-# test if explicit glob() gets assign magic too
-my @s = ();
-while (glob($^O eq 'MacOS' ? ':*:*.t' : '*/*.t')) {
- #print "# $_\n";
- push @s, $_;
-}
-print "not " if "@r" ne "@s";
-print "ok 8\n";
-
-# how about in a different package, like?
-package Foo;
-use File::Glob ':globally';
-@s = ();
-while (glob($^O eq 'MacOS' ? ':*:*.t' : '*/*.t')) {
- #print "# $_\n";
- push @s, $_;
-}
-print "not " if "@r" ne "@s";
-print "ok 9\n";
-
-# test if different glob ops maintain independent contexts
-@s = ();
-my $i = 0;
-if ($^O eq "MacOS") {
- while (<:*:*.t>) {
- #print "# $_ <";
- push @s, $_;
- while (<:bas*:*.t>) {
- #print " $_";
- $i++;
- }
- #print " >\n";
- }
-} else {
- while (<*/*.t>) {
- #print "# $_ <";
- push @s, $_;
- while (<bas*/*.t>) {
- #print " $_";
- $i++;
- }
- #print " >\n";
- }
-}
-print "not " if "@r" ne "@s" or not $i;
-print "ok 10\n";
+++ /dev/null
-#!./perl -T
-
-BEGIN {
- chdir 't' if -d 't';
- if ($^O eq 'MacOS') {
- @INC = qw(: ::lib ::macos:lib);
- } else {
- @INC = '.';
- push @INC, '../lib';
- }
- require Config; import Config;
- if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
- print "1..0\n";
- exit 0;
- }
- print "1..2\n";
-}
-END {
- print "not ok 1\n" unless $loaded;
-}
-use File::Glob;
-$loaded = 1;
-print "ok 1\n";
-
-# all filenames should be tainted
-@a = File::Glob::bsd_glob("*");
-eval { $a = join("",@a), kill 0; 1 };
-unless ($@ =~ /Insecure dependency/) {
- print "not ";
-}
-print "ok 2\n";
+++ /dev/null
-#!/usr/bin/perl -w
-
-# Test for mktemp family of commands in File::Temp
-# Use STANDARD safe level for these tests
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
- require Test; import Test;
- plan(tests => 9);
-}
-
-use strict;
-
-use File::Spec;
-use File::Path;
-use File::Temp qw/ :mktemp unlink0 /;
-use FileHandle;
-
-ok(1);
-
-# MKSTEMP - test
-
-# Create file in temp directory
-my $template = File::Spec->catfile(File::Spec->tmpdir, 'wowserXXXX');
-
-(my $fh, $template) = mkstemp($template);
-
-print "# MKSTEMP: FH is $fh File is $template fileno=".fileno($fh)."\n";
-# Check if the file exists
-ok( (-e $template) );
-
-# Autoflush
-$fh->autoflush(1) if $] >= 5.006;
-
-# Try printing something to the file
-my $string = "woohoo\n";
-print $fh $string;
-
-# rewind the file
-ok(seek( $fh, 0, 0));
-
-# Read from the file
-my $line = <$fh>;
-
-# compare with previous string
-ok($string, $line);
-
-# Tidy up
-# This test fails on Windows NT since it seems that the size returned by
-# stat(filehandle) does not always equal the size of the stat(filename)
-# This must be due to caching. In particular this test writes 7 bytes
-# to the file which are not recognised by stat(filename)
-# Simply waiting 3 seconds seems to be enough for the system to update
-
-if ($^O eq 'MSWin32') {
- sleep 3;
-}
-my $status = unlink0($fh, $template);
-if ($status) {
- ok( $status );
-} else {
- skip("Skip test failed probably due to \$TMPDIR being on NFS",1);
-}
-
-# MKSTEMPS
-# File with suffix. This is created in the current directory so
-# may be problematic on NFS
-
-$template = "suffixXXXXXX";
-my $suffix = ".dat";
-
-($fh, my $fname) = mkstemps($template, $suffix);
-
-print "# MKSTEMPS: File is $template -> $fname fileno=".fileno($fh)."\n";
-# Check if the file exists
-ok( (-e $fname) );
-
-# This fails if you are running on NFS
-# If this test fails simply skip it rather than doing a hard failure
-$status = unlink0($fh, $fname);
-
-if ($status) {
- ok($status);
-} else {
- skip("Skip test failed probably due to cwd being on NFS",1)
-}
-
-# MKDTEMP
-# Temp directory
-
-$template = File::Spec->catdir(File::Spec->tmpdir, 'tmpdirXXXXXX');
-
-my $tmpdir = mkdtemp($template);
-
-print "# MKDTEMP: Name is $tmpdir from template $template\n";
-
-ok( (-d $tmpdir ) );
-
-# Need to tidy up after myself
-rmtree($tmpdir);
-
-# MKTEMP
-# Just a filename, not opened
-
-$template = File::Spec->catfile(File::Spec->tmpdir, 'mytestXXXXXX');
-
-my $tmpfile = mktemp($template);
-
-print "# MKTEMP: Tempfile is $template -> $tmpfile\n";
-
-# Okay if template no longer has XXXXX in
-
-
-ok( ($tmpfile !~ /XXXXX$/) );
+++ /dev/null
-#!/usr/bin/perl -w
-# Test for File::Temp - POSIX functions
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
- require Test; import Test;
- plan(tests => 7);
-}
-
-use strict;
-
-use File::Temp qw/ :POSIX unlink0 /;
-use FileHandle;
-
-ok(1);
-
-# TMPNAM - scalar
-
-print "# TMPNAM: in a scalar context: \n";
-my $tmpnam = tmpnam();
-
-# simply check that the file does not exist
-# Not a 100% water tight test though if another program
-# has managed to create one in the meantime.
-ok( !(-e $tmpnam ));
-
-print "# TMPNAM file name: $tmpnam\n";
-
-# TMPNAM list context
-# Not strict posix behaviour
-(my $fh, $tmpnam) = tmpnam();
-
-print "# TMPNAM: in list context: $fh $tmpnam\n";
-
-# File is opened - make sure it exists
-ok( (-e $tmpnam ));
-
-# Unlink it - a possible NFS issue again if TMPDIR is not a local disk
-my $status = unlink0($fh, $tmpnam);
-if ($status) {
- ok( $status );
-} else {
- skip("Skip test failed probably due to \$TMPDIR being on NFS",1);
-}
-
-# TMPFILE
-
-$fh = tmpfile();
-
-if (defined $fh) {
- ok( $fh );
- print "# TMPFILE: tmpfile got FH $fh\n";
-
- $fh->autoflush(1) if $] >= 5.006;
-
- # print something to it
- my $original = "Hello a test\n";
- print "# TMPFILE: Wrote line: $original";
- print $fh $original
- or die "Error printing to tempfile\n";
-
- # rewind it
- ok( seek($fh,0,0) );
-
- # Read from it
- my $line = <$fh>;
-
- print "# TMPFILE: Read line: $line";
- ok( $original, $line);
-
- close($fh);
-
-} else {
- # Skip all the remaining tests
- foreach (1..3) {
- skip("Skip test failed probably due to \$TMPDIR being on NFS",1);
- }
-}
-
-
-
-
+++ /dev/null
-#!/usr/bin/perl -w
-# Test for File::Temp - Security levels
-
-# Some of the security checking will not work on all platforms
-# Test a simple open in the cwd and tmpdir foreach of the
-# security levels
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
- require Test; import Test;
- plan(tests => 13);
-}
-
-use strict;
-use File::Spec;
-
-# Set up END block - this needs to happen before we load
-# File::Temp since this END block must be evaluated after the
-# END block configured by File::Temp
-my @files; # list of files to remove
-END { foreach (@files) { ok( !(-e $_) )} }
-
-use File::Temp qw/ tempfile unlink0 /;
-ok(1);
-
-# The high security tests must currently be skipped on some platforms
-my $skipplat = ( (
- # No sticky bits.
- $^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'os2' || $^O eq 'dos' || $^O eq 'mpeix'
- ) ? 1 : 0 );
-
-# Can not run high security tests in perls before 5.6.0
-my $skipperl = ($] < 5.006 ? 1 : 0 );
-
-# Determine whether we need to skip things and why
-my $skip = 0;
-if ($skipplat) {
- $skip = "Skip Not supported on this platform";
-} elsif ($skipperl) {
- $skip = "Skip Perl version must be v5.6.0 for these tests";
-
-}
-
-print "# We will be skipping some tests : $skip\n" if $skip;
-
-# start off with basic checking
-
-File::Temp->safe_level( File::Temp::STANDARD );
-
-print "# Testing with STANDARD security...\n";
-
-&test_security(0);
-
-# Try medium
-
-File::Temp->safe_level( File::Temp::MEDIUM )
- unless $skip;
-
-print "# Testing with MEDIUM security...\n";
-
-# Now we need to start skipping tests
-&test_security($skip);
-
-# Try HIGH
-
-File::Temp->safe_level( File::Temp::HIGH )
- unless $skip;
-
-print "# Testing with HIGH security...\n";
-
-&test_security($skip);
-
-exit;
-
-# Subroutine to open two temporary files.
-# one is opened in the current dir and the other in the temp dir
-
-sub test_security {
-
- # Read in the skip flag
- my $skip = shift;
-
- # If we are skipping we need to simply fake the correct number
- # of tests -- we dont use skip since the tempfile() commands will
- # fail with MEDIUM/HIGH security before the skip() command would be run
- if ($skip) {
-
- skip($skip,1);
- skip($skip,1);
-
- # plus we need an end block so the tests come out in the right order
- eval q{ END { skip($skip,1); skip($skip,1) } 1; } || die;
-
- return;
- }
-
- # Create the tempfile
- my $template = "tmpXXXXX";
- my ($fh1, $fname1) = eval { tempfile ( $template,
- DIR => File::Spec->tmpdir,
- UNLINK => 1,
- );
- };
-
- if (defined $fname1) {
- print "# fname1 = $fname1\n";
- ok( (-e $fname1) );
- push(@files, $fname1); # store for end block
- } elsif (File::Temp->safe_level() != File::Temp::STANDARD) {
- my $skip2 = "Skip system possibly insecure, see INSTALL, section 'make test'";
- skip($skip2, 1);
- # plus we need an end block so the tests come out in the right order
- eval q{ END { skip($skip2,1); } 1; } || die;
- } else {
- ok(0);
- }
-
- # Explicitly
- if ( $< < File::Temp->top_system_uid() ){
- skip("Skip Test inappropriate for root", 1);
- eval q{ END { skip($skip,1); } 1; } || die;
- return;
- }
- my ($fh2, $fname2) = eval { tempfile ($template, UNLINK => 1 ); };
- if (defined $fname2) {
- print "# fname2 = $fname2\n";
- ok( (-e $fname2) );
- push(@files, $fname2); # store for end block
- close($fh2);
- } elsif (File::Temp->safe_level() != File::Temp::STANDARD) {
- my $skip2 = "Skip system possibly insecure, see INSTALL, section 'make test'";
- skip($skip2, 1);
- # plus we need an end block so the tests come out in the right order
- eval q{ END { skip($skip2,1); } 1; } || die;
- } else {
- ok(0);
- }
-
-}
--- /dev/null
+#!/usr/bin/perl -w
+
+# Test for mktemp family of commands in File::Temp
+# Use STANDARD safe level for these tests
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require Test; import Test;
+ plan(tests => 9);
+}
+
+use strict;
+
+use File::Spec;
+use File::Path;
+use File::Temp qw/ :mktemp unlink0 /;
+use FileHandle;
+
+ok(1);
+
+# MKSTEMP - test
+
+# Create file in temp directory
+my $template = File::Spec->catfile(File::Spec->tmpdir, 'wowserXXXX');
+
+(my $fh, $template) = mkstemp($template);
+
+print "# MKSTEMP: FH is $fh File is $template fileno=".fileno($fh)."\n";
+# Check if the file exists
+ok( (-e $template) );
+
+# Autoflush
+$fh->autoflush(1) if $] >= 5.006;
+
+# Try printing something to the file
+my $string = "woohoo\n";
+print $fh $string;
+
+# rewind the file
+ok(seek( $fh, 0, 0));
+
+# Read from the file
+my $line = <$fh>;
+
+# compare with previous string
+ok($string, $line);
+
+# Tidy up
+# This test fails on Windows NT since it seems that the size returned by
+# stat(filehandle) does not always equal the size of the stat(filename)
+# This must be due to caching. In particular this test writes 7 bytes
+# to the file which are not recognised by stat(filename)
+# Simply waiting 3 seconds seems to be enough for the system to update
+
+if ($^O eq 'MSWin32') {
+ sleep 3;
+}
+my $status = unlink0($fh, $template);
+if ($status) {
+ ok( $status );
+} else {
+ skip("Skip test failed probably due to \$TMPDIR being on NFS",1);
+}
+
+# MKSTEMPS
+# File with suffix. This is created in the current directory so
+# may be problematic on NFS
+
+$template = "suffixXXXXXX";
+my $suffix = ".dat";
+
+($fh, my $fname) = mkstemps($template, $suffix);
+
+print "# MKSTEMPS: File is $template -> $fname fileno=".fileno($fh)."\n";
+# Check if the file exists
+ok( (-e $fname) );
+
+# This fails if you are running on NFS
+# If this test fails simply skip it rather than doing a hard failure
+$status = unlink0($fh, $fname);
+
+if ($status) {
+ ok($status);
+} else {
+ skip("Skip test failed probably due to cwd being on NFS",1)
+}
+
+# MKDTEMP
+# Temp directory
+
+$template = File::Spec->catdir(File::Spec->tmpdir, 'tmpdirXXXXXX');
+
+my $tmpdir = mkdtemp($template);
+
+print "# MKDTEMP: Name is $tmpdir from template $template\n";
+
+ok( (-d $tmpdir ) );
+
+# Need to tidy up after myself
+rmtree($tmpdir);
+
+# MKTEMP
+# Just a filename, not opened
+
+$template = File::Spec->catfile(File::Spec->tmpdir, 'mytestXXXXXX');
+
+my $tmpfile = mktemp($template);
+
+print "# MKTEMP: Tempfile is $template -> $tmpfile\n";
+
+# Okay if template no longer has XXXXX in
+
+
+ok( ($tmpfile !~ /XXXXX$/) );
--- /dev/null
+#!/usr/bin/perl -w
+# Test for File::Temp - POSIX functions
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require Test; import Test;
+ plan(tests => 7);
+}
+
+use strict;
+
+use File::Temp qw/ :POSIX unlink0 /;
+use FileHandle;
+
+ok(1);
+
+# TMPNAM - scalar
+
+print "# TMPNAM: in a scalar context: \n";
+my $tmpnam = tmpnam();
+
+# simply check that the file does not exist
+# Not a 100% water tight test though if another program
+# has managed to create one in the meantime.
+ok( !(-e $tmpnam ));
+
+print "# TMPNAM file name: $tmpnam\n";
+
+# TMPNAM list context
+# Not strict posix behaviour
+(my $fh, $tmpnam) = tmpnam();
+
+print "# TMPNAM: in list context: $fh $tmpnam\n";
+
+# File is opened - make sure it exists
+ok( (-e $tmpnam ));
+
+# Unlink it - a possible NFS issue again if TMPDIR is not a local disk
+my $status = unlink0($fh, $tmpnam);
+if ($status) {
+ ok( $status );
+} else {
+ skip("Skip test failed probably due to \$TMPDIR being on NFS",1);
+}
+
+# TMPFILE
+
+$fh = tmpfile();
+
+if (defined $fh) {
+ ok( $fh );
+ print "# TMPFILE: tmpfile got FH $fh\n";
+
+ $fh->autoflush(1) if $] >= 5.006;
+
+ # print something to it
+ my $original = "Hello a test\n";
+ print "# TMPFILE: Wrote line: $original";
+ print $fh $original
+ or die "Error printing to tempfile\n";
+
+ # rewind it
+ ok( seek($fh,0,0) );
+
+ # Read from it
+ my $line = <$fh>;
+
+ print "# TMPFILE: Read line: $line";
+ ok( $original, $line);
+
+ close($fh);
+
+} else {
+ # Skip all the remaining tests
+ foreach (1..3) {
+ skip("Skip test failed probably due to \$TMPDIR being on NFS",1);
+ }
+}
+
+
+
+
--- /dev/null
+#!/usr/bin/perl -w
+# Test for File::Temp - Security levels
+
+# Some of the security checking will not work on all platforms
+# Test a simple open in the cwd and tmpdir foreach of the
+# security levels
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require Test; import Test;
+ plan(tests => 13);
+}
+
+use strict;
+use File::Spec;
+
+# Set up END block - this needs to happen before we load
+# File::Temp since this END block must be evaluated after the
+# END block configured by File::Temp
+my @files; # list of files to remove
+END { foreach (@files) { ok( !(-e $_) )} }
+
+use File::Temp qw/ tempfile unlink0 /;
+ok(1);
+
+# The high security tests must currently be skipped on some platforms
+my $skipplat = ( (
+ # No sticky bits.
+ $^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'os2' || $^O eq 'dos' || $^O eq 'mpeix'
+ ) ? 1 : 0 );
+
+# Can not run high security tests in perls before 5.6.0
+my $skipperl = ($] < 5.006 ? 1 : 0 );
+
+# Determine whether we need to skip things and why
+my $skip = 0;
+if ($skipplat) {
+ $skip = "Skip Not supported on this platform";
+} elsif ($skipperl) {
+ $skip = "Skip Perl version must be v5.6.0 for these tests";
+
+}
+
+print "# We will be skipping some tests : $skip\n" if $skip;
+
+# start off with basic checking
+
+File::Temp->safe_level( File::Temp::STANDARD );
+
+print "# Testing with STANDARD security...\n";
+
+&test_security(0);
+
+# Try medium
+
+File::Temp->safe_level( File::Temp::MEDIUM )
+ unless $skip;
+
+print "# Testing with MEDIUM security...\n";
+
+# Now we need to start skipping tests
+&test_security($skip);
+
+# Try HIGH
+
+File::Temp->safe_level( File::Temp::HIGH )
+ unless $skip;
+
+print "# Testing with HIGH security...\n";
+
+&test_security($skip);
+
+exit;
+
+# Subroutine to open two temporary files.
+# one is opened in the current dir and the other in the temp dir
+
+sub test_security {
+
+ # Read in the skip flag
+ my $skip = shift;
+
+ # If we are skipping we need to simply fake the correct number
+ # of tests -- we dont use skip since the tempfile() commands will
+ # fail with MEDIUM/HIGH security before the skip() command would be run
+ if ($skip) {
+
+ skip($skip,1);
+ skip($skip,1);
+
+ # plus we need an end block so the tests come out in the right order
+ eval q{ END { skip($skip,1); skip($skip,1) } 1; } || die;
+
+ return;
+ }
+
+ # Create the tempfile
+ my $template = "tmpXXXXX";
+ my ($fh1, $fname1) = eval { tempfile ( $template,
+ DIR => File::Spec->tmpdir,
+ UNLINK => 1,
+ );
+ };
+
+ if (defined $fname1) {
+ print "# fname1 = $fname1\n";
+ ok( (-e $fname1) );
+ push(@files, $fname1); # store for end block
+ } elsif (File::Temp->safe_level() != File::Temp::STANDARD) {
+ my $skip2 = "Skip system possibly insecure, see INSTALL, section 'make test'";
+ skip($skip2, 1);
+ # plus we need an end block so the tests come out in the right order
+ eval q{ END { skip($skip2,1); } 1; } || die;
+ } else {
+ ok(0);
+ }
+
+ # Explicitly
+ if ( $< < File::Temp->top_system_uid() ){
+ skip("Skip Test inappropriate for root", 1);
+ eval q{ END { skip($skip,1); } 1; } || die;
+ return;
+ }
+ my ($fh2, $fname2) = eval { tempfile ($template, UNLINK => 1 ); };
+ if (defined $fname2) {
+ print "# fname2 = $fname2\n";
+ ok( (-e $fname2) );
+ push(@files, $fname2); # store for end block
+ close($fh2);
+ } elsif (File::Temp->safe_level() != File::Temp::STANDARD) {
+ my $skip2 = "Skip system possibly insecure, see INSTALL, section 'make test'";
+ skip($skip2, 1);
+ # plus we need an end block so the tests come out in the right order
+ eval q{ END { skip($skip2,1); } 1; } || die;
+ } else {
+ ok(0);
+ }
+
+}
--- /dev/null
+#!/usr/local/bin/perl -w
+# Test for File::Temp - tempfile function
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require Test; import Test;
+ plan(tests => 20);
+}
+
+use strict;
+use File::Spec;
+
+# Will need to check that all files were unlinked correctly
+# Set up an END block here to do it
+
+# Arrays containing list of dirs/files to test
+my (@files, @dirs, @still_there);
+
+# And a test for files that should still be around
+# These are tidied up
+END {
+ foreach (@still_there) {
+ ok( -f $_ );
+ ok( unlink( $_ ) );
+ ok( !(-f $_) );
+ }
+}
+
+# Loop over an array hoping that the files dont exist
+END { foreach (@files) { ok( !(-e $_) )} }
+
+# And a test for directories
+END { foreach (@dirs) { ok( !(-d $_) )} }
+
+# Need to make sure that the END blocks are setup before
+# the ones that File::Temp configures since END blocks are evaluated
+# in revers order and we need to check the files *after* File::Temp
+# removes them
+use File::Temp qw/ tempfile tempdir/;
+
+# Now we start the tests properly
+ok(1);
+
+
+# Tempfile
+# Open tempfile in some directory, unlink at end
+my ($fh, $tempfile) = tempfile(
+ UNLINK => 1,
+ SUFFIX => '.txt',
+ );
+
+ok( (-f $tempfile) );
+# Should still be around after closing
+ok( close( $fh ) );
+ok( (-f $tempfile) );
+# Check again at exit
+push(@files, $tempfile);
+
+# TEMPDIR test
+# Create temp directory in current dir
+my $template = 'tmpdirXXXXXX';
+print "# Template: $template\n";
+my $tempdir = tempdir( $template ,
+ DIR => File::Spec->curdir,
+ CLEANUP => 1,
+ );
+
+print "# TEMPDIR: $tempdir\n";
+
+ok( (-d $tempdir) );
+push(@dirs, $tempdir);
+
+# Create file in the temp dir
+($fh, $tempfile) = tempfile(
+ DIR => $tempdir,
+ UNLINK => 1,
+ SUFFIX => '.dat',
+ );
+
+print "# TEMPFILE: Created $tempfile\n";
+
+ok( (-f $tempfile));
+push(@files, $tempfile);
+
+# Test tempfile
+# ..and again
+($fh, $tempfile) = tempfile(
+ DIR => $tempdir,
+ );
+
+
+ok( (-f $tempfile ));
+push(@files, $tempfile);
+
+print "# TEMPFILE: Created $tempfile\n";
+
+# and another (with template)
+
+($fh, $tempfile) = tempfile( 'helloXXXXXXX',
+ DIR => $tempdir,
+ UNLINK => 1,
+ SUFFIX => '.dat',
+ );
+
+print "# TEMPFILE: Created $tempfile\n";
+
+ok( (-f $tempfile) );
+push(@files, $tempfile);
+
+
+# Create a temporary file that should stay around after
+# it has been closed
+($fh, $tempfile) = tempfile( 'permXXXXXXX', UNLINK => 0 );
+print "# TEMPFILE: Created $tempfile\n";
+ok( -f $tempfile );
+ok( close( $fh ) );
+push( @still_there, $tempfile); # check at END
+
+# Would like to create a temp file and just retrieve the handle
+# but the test is problematic since:
+# - We dont know the filename so we cant check that it is tidied
+# correctly
+# - The unlink0 required on unix for tempfile creation will fail
+# on NFS
+# Try to do what we can.
+# Tempfile croaks on error so we need an eval
+$fh = eval { tempfile( 'ftmpXXXXX', DIR => File::Spec->tmpdir ) };
+
+if ($fh) {
+
+ # print something to it to make sure something is there
+ ok( print $fh "Test\n" );
+
+ # Close it - can not check it is gone since we dont know the name
+ ok( close($fh) );
+
+} else {
+ skip "Skip Failed probably due to NFS", 1;
+ skip "Skip Failed probably due to NFS", 1;
+}
+
+# Now END block will execute to test the removal of directories
+print "# End of tests. Execute END blocks\n";
+
+++ /dev/null
-#!/usr/local/bin/perl -w
-# Test for File::Temp - tempfile function
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
- require Test; import Test;
- plan(tests => 20);
-}
-
-use strict;
-use File::Spec;
-
-# Will need to check that all files were unlinked correctly
-# Set up an END block here to do it
-
-# Arrays containing list of dirs/files to test
-my (@files, @dirs, @still_there);
-
-# And a test for files that should still be around
-# These are tidied up
-END {
- foreach (@still_there) {
- ok( -f $_ );
- ok( unlink( $_ ) );
- ok( !(-f $_) );
- }
-}
-
-# Loop over an array hoping that the files dont exist
-END { foreach (@files) { ok( !(-e $_) )} }
-
-# And a test for directories
-END { foreach (@dirs) { ok( !(-d $_) )} }
-
-# Need to make sure that the END blocks are setup before
-# the ones that File::Temp configures since END blocks are evaluated
-# in revers order and we need to check the files *after* File::Temp
-# removes them
-use File::Temp qw/ tempfile tempdir/;
-
-# Now we start the tests properly
-ok(1);
-
-
-# Tempfile
-# Open tempfile in some directory, unlink at end
-my ($fh, $tempfile) = tempfile(
- UNLINK => 1,
- SUFFIX => '.txt',
- );
-
-ok( (-f $tempfile) );
-# Should still be around after closing
-ok( close( $fh ) );
-ok( (-f $tempfile) );
-# Check again at exit
-push(@files, $tempfile);
-
-# TEMPDIR test
-# Create temp directory in current dir
-my $template = 'tmpdirXXXXXX';
-print "# Template: $template\n";
-my $tempdir = tempdir( $template ,
- DIR => File::Spec->curdir,
- CLEANUP => 1,
- );
-
-print "# TEMPDIR: $tempdir\n";
-
-ok( (-d $tempdir) );
-push(@dirs, $tempdir);
-
-# Create file in the temp dir
-($fh, $tempfile) = tempfile(
- DIR => $tempdir,
- UNLINK => 1,
- SUFFIX => '.dat',
- );
-
-print "# TEMPFILE: Created $tempfile\n";
-
-ok( (-f $tempfile));
-push(@files, $tempfile);
-
-# Test tempfile
-# ..and again
-($fh, $tempfile) = tempfile(
- DIR => $tempdir,
- );
-
-
-ok( (-f $tempfile ));
-push(@files, $tempfile);
-
-print "# TEMPFILE: Created $tempfile\n";
-
-# and another (with template)
-
-($fh, $tempfile) = tempfile( 'helloXXXXXXX',
- DIR => $tempdir,
- UNLINK => 1,
- SUFFIX => '.dat',
- );
-
-print "# TEMPFILE: Created $tempfile\n";
-
-ok( (-f $tempfile) );
-push(@files, $tempfile);
-
-
-# Create a temporary file that should stay around after
-# it has been closed
-($fh, $tempfile) = tempfile( 'permXXXXXXX', UNLINK => 0 );
-print "# TEMPFILE: Created $tempfile\n";
-ok( -f $tempfile );
-ok( close( $fh ) );
-push( @still_there, $tempfile); # check at END
-
-# Would like to create a temp file and just retrieve the handle
-# but the test is problematic since:
-# - We dont know the filename so we cant check that it is tidied
-# correctly
-# - The unlink0 required on unix for tempfile creation will fail
-# on NFS
-# Try to do what we can.
-# Tempfile croaks on error so we need an eval
-$fh = eval { tempfile( 'ftmpXXXXX', DIR => File::Spec->tmpdir ) };
-
-if ($fh) {
-
- # print something to it to make sure something is there
- ok( print $fh "Test\n" );
-
- # Close it - can not check it is gone since we dont know the name
- ok( close($fh) );
-
-} else {
- skip "Skip Failed probably due to NFS", 1;
- skip "Skip Failed probably due to NFS", 1;
-}
-
-# Now END block will execute to test the removal of directories
-print "# End of tests. Execute END blocks\n";
-
+++ /dev/null
-#!./perl -w
-
-BEGIN {
- chdir('t') if -d 't';
- @INC = '../lib';
-}
-
-use Getopt::Long qw(:config no_ignore_case);
-die("Getopt::Long version 2.24 required--this is only version ".
- $Getopt::Long::VERSION)
- unless $Getopt::Long::VERSION >= 2.24;
-
-print "1..9\n";
-
-@ARGV = qw(-Foo -baR --foo bar);
-undef $opt_baR;
-undef $opt_bar;
-print "ok 1\n" if GetOptions ("foo", "Foo=s");
-print ((defined $opt_foo) ? "" : "not ", "ok 2\n");
-print (($opt_foo == 1) ? "" : "not ", "ok 3\n");
-print ((defined $opt_Foo) ? "" : "not ", "ok 4\n");
-print (($opt_Foo eq "-baR") ? "" : "not ", "ok 5\n");
-print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
-print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
-print (!(defined $opt_baR) ? "" : "not ", "ok 8\n");
-print (!(defined $opt_bar) ? "" : "not ", "ok 9\n");
+++ /dev/null
-#!./perl -w
-
-BEGIN {
- chdir('t') if -d 't';
- @INC = '../lib';
-}
-
-require "newgetopt.pl";
-
-print "1..9\n";
-
-@ARGV = qw(-Foo -baR --foo bar);
-$newgetopt::ignorecase = 0;
-$newgetopt::ignorecase = 0;
-undef $opt_baR;
-undef $opt_bar;
-print "ok 1\n" if NGetOpt ("foo", "Foo=s");
-print ((defined $opt_foo) ? "" : "not ", "ok 2\n");
-print (($opt_foo == 1) ? "" : "not ", "ok 3\n");
-print ((defined $opt_Foo) ? "" : "not ", "ok 4\n");
-print (($opt_Foo eq "-baR") ? "" : "not ", "ok 5\n");
-print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
-print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
-print (!(defined $opt_baR) ? "" : "not ", "ok 8\n");
-print (!(defined $opt_bar) ? "" : "not ", "ok 9\n");
+++ /dev/null
-#!./perl -w
-
-BEGIN {
- chdir('t') if -d 't';
- @INC = '../lib';
-}
-
-use Getopt::Long;
-
-print "1..18\n";
-
-@ARGV = qw(-Foo -baR --foo bar);
-Getopt::Long::Configure ("no_ignore_case");
-%lnk = ();
-print "ok 1\n" if GetOptions (\%lnk, "foo", "Foo=s");
-print ((defined $lnk{foo}) ? "" : "not ", "ok 2\n");
-print (($lnk{foo} == 1) ? "" : "not ", "ok 3\n");
-print ((defined $lnk{Foo}) ? "" : "not ", "ok 4\n");
-print (($lnk{Foo} eq "-baR") ? "" : "not ", "ok 5\n");
-print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
-print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
-print (!(exists $lnk{baR}) ? "" : "not ", "ok 8\n");
-
-@ARGV = qw(-Foo -baR --foo bar);
-Getopt::Long::Configure ("default","no_ignore_case");
-%lnk = ();
-my $foo;
-print "ok 9\n" if GetOptions (\%lnk, "foo" => \$foo, "Foo=s");
-print ((defined $foo) ? "" : "not ", "ok 10\n");
-print (($foo == 1) ? "" : "not ", "ok 11\n");
-print ((defined $lnk{Foo}) ? "" : "not ", "ok 12\n");
-print (($lnk{Foo} eq "-baR") ? "" : "not ", "ok 13\n");
-print ((@ARGV == 1) ? "" : "not ", "ok 14\n");
-print (($ARGV[0] eq "bar") ? "" : "not ", "ok 15\n");
-print (!(exists $lnk{foo}) ? "" : "not ", "ok 16\n");
-print (!(exists $lnk{baR}) ? "" : "not ", "ok 17\n");
-print (!(exists $lnk{bar}) ? "" : "not ", "ok 18\n");
+++ /dev/null
-#!./perl -w
-
-BEGIN {
- chdir('t') if -d 't';
- @INC = '../lib';
-}
-
-use Getopt::Long;
-die("Getopt::Long version 2.24 required--this is only version ".
- $Getopt::Long::VERSION)
- unless $Getopt::Long::VERSION >= 2.24;
-print "1..9\n";
-
-@ARGV = qw(-Foo -baR --foo bar);
-my $p = new Getopt::Long::Parser (config => ["no_ignore_case"]);
-undef $opt_baR;
-undef $opt_bar;
-print "ok 1\n" if $p->getoptions ("foo", "Foo=s");
-print ((defined $opt_foo) ? "" : "not ", "ok 2\n");
-print (($opt_foo == 1) ? "" : "not ", "ok 3\n");
-print ((defined $opt_Foo) ? "" : "not ", "ok 4\n");
-print (($opt_Foo eq "-baR") ? "" : "not ", "ok 5\n");
-print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
-print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
-print (!(defined $opt_baR) ? "" : "not ", "ok 8\n");
-print (!(defined $opt_bar) ? "" : "not ", "ok 9\n");
--- /dev/null
+#!./perl -w
+
+BEGIN {
+ chdir('t') if -d 't';
+ @INC = '../lib';
+}
+
+use Getopt::Long qw(:config no_ignore_case);
+die("Getopt::Long version 2.24 required--this is only version ".
+ $Getopt::Long::VERSION)
+ unless $Getopt::Long::VERSION >= 2.24;
+
+print "1..9\n";
+
+@ARGV = qw(-Foo -baR --foo bar);
+undef $opt_baR;
+undef $opt_bar;
+print "ok 1\n" if GetOptions ("foo", "Foo=s");
+print ((defined $opt_foo) ? "" : "not ", "ok 2\n");
+print (($opt_foo == 1) ? "" : "not ", "ok 3\n");
+print ((defined $opt_Foo) ? "" : "not ", "ok 4\n");
+print (($opt_Foo eq "-baR") ? "" : "not ", "ok 5\n");
+print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
+print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
+print (!(defined $opt_baR) ? "" : "not ", "ok 8\n");
+print (!(defined $opt_bar) ? "" : "not ", "ok 9\n");
--- /dev/null
+#!./perl -w
+
+BEGIN {
+ chdir('t') if -d 't';
+ @INC = '../lib';
+}
+
+require "newgetopt.pl";
+
+print "1..9\n";
+
+@ARGV = qw(-Foo -baR --foo bar);
+$newgetopt::ignorecase = 0;
+$newgetopt::ignorecase = 0;
+undef $opt_baR;
+undef $opt_bar;
+print "ok 1\n" if NGetOpt ("foo", "Foo=s");
+print ((defined $opt_foo) ? "" : "not ", "ok 2\n");
+print (($opt_foo == 1) ? "" : "not ", "ok 3\n");
+print ((defined $opt_Foo) ? "" : "not ", "ok 4\n");
+print (($opt_Foo eq "-baR") ? "" : "not ", "ok 5\n");
+print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
+print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
+print (!(defined $opt_baR) ? "" : "not ", "ok 8\n");
+print (!(defined $opt_bar) ? "" : "not ", "ok 9\n");
--- /dev/null
+#!./perl -w
+
+BEGIN {
+ chdir('t') if -d 't';
+ @INC = '../lib';
+}
+
+use Getopt::Long;
+
+print "1..18\n";
+
+@ARGV = qw(-Foo -baR --foo bar);
+Getopt::Long::Configure ("no_ignore_case");
+%lnk = ();
+print "ok 1\n" if GetOptions (\%lnk, "foo", "Foo=s");
+print ((defined $lnk{foo}) ? "" : "not ", "ok 2\n");
+print (($lnk{foo} == 1) ? "" : "not ", "ok 3\n");
+print ((defined $lnk{Foo}) ? "" : "not ", "ok 4\n");
+print (($lnk{Foo} eq "-baR") ? "" : "not ", "ok 5\n");
+print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
+print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
+print (!(exists $lnk{baR}) ? "" : "not ", "ok 8\n");
+
+@ARGV = qw(-Foo -baR --foo bar);
+Getopt::Long::Configure ("default","no_ignore_case");
+%lnk = ();
+my $foo;
+print "ok 9\n" if GetOptions (\%lnk, "foo" => \$foo, "Foo=s");
+print ((defined $foo) ? "" : "not ", "ok 10\n");
+print (($foo == 1) ? "" : "not ", "ok 11\n");
+print ((defined $lnk{Foo}) ? "" : "not ", "ok 12\n");
+print (($lnk{Foo} eq "-baR") ? "" : "not ", "ok 13\n");
+print ((@ARGV == 1) ? "" : "not ", "ok 14\n");
+print (($ARGV[0] eq "bar") ? "" : "not ", "ok 15\n");
+print (!(exists $lnk{foo}) ? "" : "not ", "ok 16\n");
+print (!(exists $lnk{baR}) ? "" : "not ", "ok 17\n");
+print (!(exists $lnk{bar}) ? "" : "not ", "ok 18\n");
--- /dev/null
+#!./perl -w
+
+BEGIN {
+ chdir('t') if -d 't';
+ @INC = '../lib';
+}
+
+use Getopt::Long;
+die("Getopt::Long version 2.24 required--this is only version ".
+ $Getopt::Long::VERSION)
+ unless $Getopt::Long::VERSION >= 2.24;
+print "1..9\n";
+
+@ARGV = qw(-Foo -baR --foo bar);
+my $p = new Getopt::Long::Parser (config => ["no_ignore_case"]);
+undef $opt_baR;
+undef $opt_bar;
+print "ok 1\n" if $p->getoptions ("foo", "Foo=s");
+print ((defined $opt_foo) ? "" : "not ", "ok 2\n");
+print (($opt_foo == 1) ? "" : "not ", "ok 3\n");
+print ((defined $opt_Foo) ? "" : "not ", "ok 4\n");
+print (($opt_Foo eq "-baR") ? "" : "not ", "ok 5\n");
+print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
+print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
+print (!(defined $opt_baR) ? "" : "not ", "ok 8\n");
+print (!(defined $opt_bar) ? "" : "not ", "ok 9\n");
-# Time-stamp: "2001-06-20 01:28:32 MDT"
+# Time-stamp: "2001-06-20 14:59:28 MDT"
# Sean M. Burke <sburke@cpan.org>
require 5.000;
);
%EXPORT_TAGS = ('ALL' => \@EXPORT_OK);
-$VERSION = "0.24";
+$VERSION = "0.25";
=head1 NAME
# you. Because if I start trying to add "little languages" in
# here, I'll just go crazy.
- # In a pinch, consider Scandinavian languages (minus
- # Icelandic?) to be mutually intelligible.
- ([qw(no nn nb se da fo)]) x 2,
+ # Scandinavian lgs. All based on opinion and hearsay.
+ 'sv' => [qw(nb no da nn)],
+ 'da' => [qw(nb no sv nn)], # I guess
+ [qw(no nn nb)], [qw(no nn nb sv da)],
+ 'is' => [qw(da sv no nb nn)],
+ 'fo' => [qw(da is no nb nn sv)], # I guess
# I think this is about the extent of tolerable intelligibility
# among large modern Romance languages.
Revision history for Perl module I18N::LangTags.
- Time-stamp: "2001-06-20 01:52:29 MDT"
+ Time-stamp: "2001-06-20 15:05:23 MDT"
+2001-06-20 Sean M. Burke sburke@cpan.org
+
+ * Release 0.25 -- just tweaking panic_languages behavior
+ for Scandinavian languages. Much better now.
+ Slight tweak to ::List's entries for Greek.
+
2001-06-20 Sean M. Burke sburke@cpan.org
* Release 0.24
require 5;
package I18N::LangTags::List;
-# Time-stamp: "2001-05-27 19:55:19 MDT"
+# Time-stamp: "2001-06-20 12:01:15 MDT"
use strict;
use vars qw(%Name $Debug $VERSION);
$VERSION = '0.24';
=item {grb} : Grebo
-=item {grc} : Ancient Greek (to 1453)
+=item {grc} : Ancient Greek
-(Historical)
+(Historical) (Until 15th century or so.)
+
+=item {el} : Modern Greek
-=item {el} : Modern Greek (1453-)
+(Since 15th century or so.)
=item {gn} : Guarani
+++ /dev/null
-#!./perl -w
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
-}
-
-@tests = (split(/\nEND\n/s, <<DONE));
-TEST 1 u
- x
-END
- x
-END
-TEST 2 e
- x
-END
- x
-END
-TEST 3 e
- x
- y
- z
-END
- x
- y
- z
-END
-TEST 4 u
- x
- y
- z
-END
- x
- y
- z
-END
-TEST 5 u
-This Is a test of a line with many embedded tabs
-END
-This Is a test of a line with many embedded tabs
-END
-TEST 6 e
-This Is a test of a line with many embedded tabs
-END
-This Is a test of a line with many embedded tabs
-END
-TEST 7 u
- x
-END
- x
-END
-TEST 8 e
-
-
-
-
-
-END
-
-
-
-
-
-END
-TEST 9 u
-
-END
-
-END
-TEST 10 u
-
-
-
-
-
-END
-
-
-
-
-
-END
-TEST 11 u
-foobar IN A 140.174.82.12
-
-END
-foobar IN A 140.174.82.12
-
-END
-DONE
-
-$| = 1;
-
-my $testcount = "1..";
-$testcount .= @tests/2;
-print "$testcount\n";
-
-use Text::Tabs;
-
-$rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
-
-$tn = 1;
-while (@tests) {
- my $in = shift(@tests);
- my $out = shift(@tests);
-
- $in =~ s/^TEST\s*(\d+)?\s*(\S+)?\n//;
-
- if ($2 eq 'e') {
- $f = \&expand;
- $fn = 'expand';
- } else {
- $f = \&unexpand;
- $fn = 'unexpand';
- }
-
- my $back = &$f($in);
-
- if ($back eq $out) {
- print "ok $tn\n";
- } elsif ($rerun) {
- my $oi = $in;
- foreach ($in, $back, $out) {
- s/\t/^I\t/gs;
- s/\n/\$\n/gs;
- }
- print "------------ input ------------\n";
- print $in;
- print "\$\n------------ $fn -----------\n";
- print $back;
- print "\$\n------------ expected ---------\n";
- print $out;
- print "\$\n-------------------------------\n";
- $Text::Tabs::debug = 1;
- my $back = &$f($in);
- exit(1);
- } else {
- print "not ok $tn\n";
- }
- $tn++;
-}
--- /dev/null
+#!./perl -w
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+use Text::Wrap qw(&fill);
+
+@tests = (split(/\nEND\n/s, <<DONE));
+TEST1
+Cyberdog Information
+
+Cyberdog & Netscape in the news
+Important Press Release regarding Cyberdog and Netscape. Check it out!
+
+Cyberdog Plug-in Support!
+Cyberdog support for Netscape Plug-ins is now available to download! Go
+to the Cyberdog Beta Download page and download it now!
+
+Cyberdog Book
+Check out Jesse Feiler's way-cool book about Cyberdog. You can find
+details out about the book as well as ordering information at Philmont
+Software Mill site.
+
+Java!
+Looking to view Java applets in Cyberdog 1.1 Beta 3? Download and install
+the Mac OS Runtime for Java and try it out!
+
+Cyberdog 1.1 Beta 3
+We hope that Cyberdog and OpenDoc 1.1 will be available within the next
+two weeks. In the meantime, we have released another version of
+Cyberdog, Cyberdog 1.1 Beta 3. This version fixes several bugs that were
+reported to us during out public beta period. You can check out our release
+notes to see what we fixed!
+END
+ Cyberdog Information
+ Cyberdog & Netscape in the news Important Press Release regarding
+ Cyberdog and Netscape. Check it out!
+ Cyberdog Plug-in Support! Cyberdog support for Netscape Plug-ins is now
+ available to download! Go to the Cyberdog Beta Download page and download
+ it now!
+ Cyberdog Book Check out Jesse Feiler's way-cool book about Cyberdog.
+ You can find details out about the book as well as ordering information at
+ Philmont Software Mill site.
+ Java! Looking to view Java applets in Cyberdog 1.1 Beta 3? Download and
+ install the Mac OS Runtime for Java and try it out!
+ Cyberdog 1.1 Beta 3 We hope that Cyberdog and OpenDoc 1.1 will be
+ available within the next two weeks. In the meantime, we have released
+ another version of Cyberdog, Cyberdog 1.1 Beta 3. This version fixes
+ several bugs that were reported to us during out public beta period. You
+ can check out our release notes to see what we fixed!
+END
+DONE
+
+
+$| = 1;
+
+print "1..", @tests/2, "\n";
+
+use Text::Wrap;
+
+$rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
+
+$tn = 1;
+while (@tests) {
+ my $in = shift(@tests);
+ my $out = shift(@tests);
+
+ $in =~ s/^TEST(\d+)?\n//;
+
+ my $back = fill(' ', ' ', $in);
+
+ if ($back eq $out) {
+ print "ok $tn\n";
+ } elsif ($rerun) {
+ my $oi = $in;
+ open(F,">#o") and do { print F $back; close(F) };
+ open(F,">#e") and do { print F $out; close(F) };
+ foreach ($in, $back, $out) {
+ s/\t/^I\t/gs;
+ s/\n/\$\n/gs;
+ }
+ print "------------ input ------------\n";
+ print $in;
+ print "\n------------ output -----------\n";
+ print $back;
+ print "\n------------ expected ---------\n";
+ print $out;
+ print "\n-------------------------------\n";
+ $Text::Wrap::debug = 1;
+ fill(' ', ' ', $oi);
+ exit(1);
+ } else {
+ print "not ok $tn\n";
+ }
+ $tn++;
+}
--- /dev/null
+#!./perl -w
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+@tests = (split(/\nEND\n/s, <<DONE));
+TEST 1 u
+ x
+END
+ x
+END
+TEST 2 e
+ x
+END
+ x
+END
+TEST 3 e
+ x
+ y
+ z
+END
+ x
+ y
+ z
+END
+TEST 4 u
+ x
+ y
+ z
+END
+ x
+ y
+ z
+END
+TEST 5 u
+This Is a test of a line with many embedded tabs
+END
+This Is a test of a line with many embedded tabs
+END
+TEST 6 e
+This Is a test of a line with many embedded tabs
+END
+This Is a test of a line with many embedded tabs
+END
+TEST 7 u
+ x
+END
+ x
+END
+TEST 8 e
+
+
+
+
+
+END
+
+
+
+
+
+END
+TEST 9 u
+
+END
+
+END
+TEST 10 u
+
+
+
+
+
+END
+
+
+
+
+
+END
+TEST 11 u
+foobar IN A 140.174.82.12
+
+END
+foobar IN A 140.174.82.12
+
+END
+DONE
+
+$| = 1;
+
+my $testcount = "1..";
+$testcount .= @tests/2;
+print "$testcount\n";
+
+use Text::Tabs;
+
+$rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
+
+$tn = 1;
+while (@tests) {
+ my $in = shift(@tests);
+ my $out = shift(@tests);
+
+ $in =~ s/^TEST\s*(\d+)?\s*(\S+)?\n//;
+
+ if ($2 eq 'e') {
+ $f = \&expand;
+ $fn = 'expand';
+ } else {
+ $f = \&unexpand;
+ $fn = 'unexpand';
+ }
+
+ my $back = &$f($in);
+
+ if ($back eq $out) {
+ print "ok $tn\n";
+ } elsif ($rerun) {
+ my $oi = $in;
+ foreach ($in, $back, $out) {
+ s/\t/^I\t/gs;
+ s/\n/\$\n/gs;
+ }
+ print "------------ input ------------\n";
+ print $in;
+ print "\$\n------------ $fn -----------\n";
+ print $back;
+ print "\$\n------------ expected ---------\n";
+ print $out;
+ print "\$\n-------------------------------\n";
+ $Text::Tabs::debug = 1;
+ my $back = &$f($in);
+ exit(1);
+ } else {
+ print "not ok $tn\n";
+ }
+ $tn++;
+}
--- /dev/null
+#!./perl -w
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+@tests = (split(/\nEND\n/s, <<DONE));
+TEST1
+This
+is
+a
+test
+END
+ This
+ is
+ a
+ test
+END
+TEST2
+This is a test of a very long line. It should be broken up and put onto multiple lines.
+This is a test of a very long line. It should be broken up and put onto multiple lines.
+
+This is a test of a very long line. It should be broken up and put onto multiple lines.
+END
+ This is a test of a very long line. It should be broken up and put onto
+ multiple lines.
+ This is a test of a very long line. It should be broken up and put onto
+ multiple lines.
+
+ This is a test of a very long line. It should be broken up and put onto
+ multiple lines.
+END
+TEST3
+This is a test of a very long line. It should be broken up and put onto multiple lines.
+END
+ This is a test of a very long line. It should be broken up and put onto
+ multiple lines.
+END
+TEST4
+This is a test of a very long line. It should be broken up and put onto multiple lines.
+
+END
+ This is a test of a very long line. It should be broken up and put onto
+ multiple lines.
+
+END
+TEST5
+This is a test of a very long line. It should be broken up and put onto multiple This is a test of a very long line. It should be broken up and put
+END
+ This is a test of a very long line. It should be broken up and put onto
+ multiple This is a test of a very long line. It should be broken up and
+ put
+END
+TEST6
+11111111 22222222 33333333 44444444 55555555 66666666 77777777 888888888 999999999 aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ffffffff gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmmm nnnnnnnnn ooooooooo ppppppppp qqqqqqqqq rrrrrrrrr sssssssss
+END
+ 11111111 22222222 33333333 44444444 55555555 66666666 77777777 888888888
+ 999999999 aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ffffffff
+ gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmmm nnnnnnnnn
+ ooooooooo ppppppppp qqqqqqqqq rrrrrrrrr sssssssss
+END
+TEST7
+c3t1d0s6 c4t1d0s6 c5t1d0s6 c6t1d0s6 c7t1d0s6 c8t1d0s6 c9t1d0s6 c10t1d0s6 c11t1d0s6 c12t1d0s6 c13t1d0s6 c14t1d0s6 c15t1d0s6 c16t1d0s6 c3t1d0s0 c4t1d0s0 c5t1d0s0 c6t1d0s0 c7t1d0s0 c8t1d0s0 c9t1d0s0 c10t1d0s0 c11t1d0s0 c12t1d0s0 c13t1d0s0 c14t1d0s0 c15t1d0s0 c16t1d0s0
+END
+ c3t1d0s6 c4t1d0s6 c5t1d0s6 c6t1d0s6 c7t1d0s6 c8t1d0s6 c9t1d0s6 c10t1d0s6
+ c11t1d0s6 c12t1d0s6 c13t1d0s6 c14t1d0s6 c15t1d0s6 c16t1d0s6 c3t1d0s0
+ c4t1d0s0 c5t1d0s0 c6t1d0s0 c7t1d0s0 c8t1d0s0 c9t1d0s0 c10t1d0s0 c11t1d0s0
+ c12t1d0s0 c13t1d0s0 c14t1d0s0 c15t1d0s0 c16t1d0s0
+END
+TEST8
+A test of a very very long word.
+a123456789b123456789c123456789d123456789e123456789f123456789g123456789g1234567
+END
+ A test of a very very long word.
+ a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123
+ 4567
+END
+TEST9
+A test of a very very long word. a123456789b123456789c123456789d123456789e123456789f123456789g123456789g1234567
+END
+ A test of a very very long word.
+ a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123
+ 4567
+END
+TEST10
+my mother once said
+"never eat paste my darling"
+would that I heeded
+END
+ my mother once said
+ "never eat paste my darling"
+ would that I heeded
+END
+TEST11
+This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_program_does_not_crash_and_burn
+END
+ This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_pr
+ ogram_does_not_crash_and_burn
+END
+TEST12
+This
+
+Has
+
+Blank
+
+Lines
+
+END
+ This
+
+ Has
+
+ Blank
+
+ Lines
+
+END
+DONE
+
+
+$| = 1;
+
+print "1..", 1 +@tests, "\n";
+
+use Text::Wrap;
+
+$rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
+
+$tn = 1;
+
+@st = @tests;
+while (@st) {
+ my $in = shift(@st);
+ my $out = shift(@st);
+
+ $in =~ s/^TEST(\d+)?\n//;
+
+ my $back = wrap(' ', ' ', $in);
+
+ if ($back eq $out) {
+ print "ok $tn\n";
+ } elsif ($rerun) {
+ my $oi = $in;
+ foreach ($in, $back, $out) {
+ s/\t/^I\t/gs;
+ s/\n/\$\n/gs;
+ }
+ print "------------ input ------------\n";
+ print $in;
+ print "\n------------ output -----------\n";
+ print $back;
+ print "\n------------ expected ---------\n";
+ print $out;
+ print "\n-------------------------------\n";
+ $Text::Wrap::debug = 1;
+ wrap(' ', ' ', $oi);
+ exit(1);
+ } else {
+ print "not ok $tn\n";
+ }
+ $tn++;
+
+}
+
+@st = @tests;
+while(@st) {
+ my $in = shift(@st);
+ my $out = shift(@st);
+
+ $in =~ s/^TEST(\d+)?\n//;
+
+ my @in = split("\n", $in, -1);
+ @in = ((map { "$_\n" } @in[0..$#in-1]), $in[-1]);
+
+ my $back = wrap(' ', ' ', @in);
+
+ if ($back eq $out) {
+ print "ok $tn\n";
+ } elsif ($rerun) {
+ my $oi = $in;
+ foreach ($in, $back, $out) {
+ s/\t/^I\t/gs;
+ s/\n/\$\n/gs;
+ }
+ print "------------ input2 ------------\n";
+ print $in;
+ print "\n------------ output2 -----------\n";
+ print $back;
+ print "\n------------ expected2 ---------\n";
+ print $out;
+ print "\n-------------------------------\n";
+ $Text::Wrap::debug = 1;
+ wrap(' ', ' ', $oi);
+ exit(1);
+ } else {
+ print "not ok $tn\n";
+ }
+ $tn++;
+}
+
+$Text::Wrap::huge = 'overflow';
+
+my $tw = 'This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_program_does_not_crash_and_burn';
+my $w = wrap('zzz','yyy',$tw);
+print (($w eq "zzz$tw") ? "ok $tn\n" : "not ok $tn");
+$tn++;
+
+++ /dev/null
-#!./perl -w
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
-}
-
-use Text::Wrap qw(&fill);
-
-@tests = (split(/\nEND\n/s, <<DONE));
-TEST1
-Cyberdog Information
-
-Cyberdog & Netscape in the news
-Important Press Release regarding Cyberdog and Netscape. Check it out!
-
-Cyberdog Plug-in Support!
-Cyberdog support for Netscape Plug-ins is now available to download! Go
-to the Cyberdog Beta Download page and download it now!
-
-Cyberdog Book
-Check out Jesse Feiler's way-cool book about Cyberdog. You can find
-details out about the book as well as ordering information at Philmont
-Software Mill site.
-
-Java!
-Looking to view Java applets in Cyberdog 1.1 Beta 3? Download and install
-the Mac OS Runtime for Java and try it out!
-
-Cyberdog 1.1 Beta 3
-We hope that Cyberdog and OpenDoc 1.1 will be available within the next
-two weeks. In the meantime, we have released another version of
-Cyberdog, Cyberdog 1.1 Beta 3. This version fixes several bugs that were
-reported to us during out public beta period. You can check out our release
-notes to see what we fixed!
-END
- Cyberdog Information
- Cyberdog & Netscape in the news Important Press Release regarding
- Cyberdog and Netscape. Check it out!
- Cyberdog Plug-in Support! Cyberdog support for Netscape Plug-ins is now
- available to download! Go to the Cyberdog Beta Download page and download
- it now!
- Cyberdog Book Check out Jesse Feiler's way-cool book about Cyberdog.
- You can find details out about the book as well as ordering information at
- Philmont Software Mill site.
- Java! Looking to view Java applets in Cyberdog 1.1 Beta 3? Download and
- install the Mac OS Runtime for Java and try it out!
- Cyberdog 1.1 Beta 3 We hope that Cyberdog and OpenDoc 1.1 will be
- available within the next two weeks. In the meantime, we have released
- another version of Cyberdog, Cyberdog 1.1 Beta 3. This version fixes
- several bugs that were reported to us during out public beta period. You
- can check out our release notes to see what we fixed!
-END
-DONE
-
-
-$| = 1;
-
-print "1..", @tests/2, "\n";
-
-use Text::Wrap;
-
-$rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
-
-$tn = 1;
-while (@tests) {
- my $in = shift(@tests);
- my $out = shift(@tests);
-
- $in =~ s/^TEST(\d+)?\n//;
-
- my $back = fill(' ', ' ', $in);
-
- if ($back eq $out) {
- print "ok $tn\n";
- } elsif ($rerun) {
- my $oi = $in;
- open(F,">#o") and do { print F $back; close(F) };
- open(F,">#e") and do { print F $out; close(F) };
- foreach ($in, $back, $out) {
- s/\t/^I\t/gs;
- s/\n/\$\n/gs;
- }
- print "------------ input ------------\n";
- print $in;
- print "\n------------ output -----------\n";
- print $back;
- print "\n------------ expected ---------\n";
- print $out;
- print "\n-------------------------------\n";
- $Text::Wrap::debug = 1;
- fill(' ', ' ', $oi);
- exit(1);
- } else {
- print "not ok $tn\n";
- }
- $tn++;
-}
+++ /dev/null
-#!./perl -w
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
-}
-
-@tests = (split(/\nEND\n/s, <<DONE));
-TEST1
-This
-is
-a
-test
-END
- This
- is
- a
- test
-END
-TEST2
-This is a test of a very long line. It should be broken up and put onto multiple lines.
-This is a test of a very long line. It should be broken up and put onto multiple lines.
-
-This is a test of a very long line. It should be broken up and put onto multiple lines.
-END
- This is a test of a very long line. It should be broken up and put onto
- multiple lines.
- This is a test of a very long line. It should be broken up and put onto
- multiple lines.
-
- This is a test of a very long line. It should be broken up and put onto
- multiple lines.
-END
-TEST3
-This is a test of a very long line. It should be broken up and put onto multiple lines.
-END
- This is a test of a very long line. It should be broken up and put onto
- multiple lines.
-END
-TEST4
-This is a test of a very long line. It should be broken up and put onto multiple lines.
-
-END
- This is a test of a very long line. It should be broken up and put onto
- multiple lines.
-
-END
-TEST5
-This is a test of a very long line. It should be broken up and put onto multiple This is a test of a very long line. It should be broken up and put
-END
- This is a test of a very long line. It should be broken up and put onto
- multiple This is a test of a very long line. It should be broken up and
- put
-END
-TEST6
-11111111 22222222 33333333 44444444 55555555 66666666 77777777 888888888 999999999 aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ffffffff gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmmm nnnnnnnnn ooooooooo ppppppppp qqqqqqqqq rrrrrrrrr sssssssss
-END
- 11111111 22222222 33333333 44444444 55555555 66666666 77777777 888888888
- 999999999 aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ffffffff
- gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmmm nnnnnnnnn
- ooooooooo ppppppppp qqqqqqqqq rrrrrrrrr sssssssss
-END
-TEST7
-c3t1d0s6 c4t1d0s6 c5t1d0s6 c6t1d0s6 c7t1d0s6 c8t1d0s6 c9t1d0s6 c10t1d0s6 c11t1d0s6 c12t1d0s6 c13t1d0s6 c14t1d0s6 c15t1d0s6 c16t1d0s6 c3t1d0s0 c4t1d0s0 c5t1d0s0 c6t1d0s0 c7t1d0s0 c8t1d0s0 c9t1d0s0 c10t1d0s0 c11t1d0s0 c12t1d0s0 c13t1d0s0 c14t1d0s0 c15t1d0s0 c16t1d0s0
-END
- c3t1d0s6 c4t1d0s6 c5t1d0s6 c6t1d0s6 c7t1d0s6 c8t1d0s6 c9t1d0s6 c10t1d0s6
- c11t1d0s6 c12t1d0s6 c13t1d0s6 c14t1d0s6 c15t1d0s6 c16t1d0s6 c3t1d0s0
- c4t1d0s0 c5t1d0s0 c6t1d0s0 c7t1d0s0 c8t1d0s0 c9t1d0s0 c10t1d0s0 c11t1d0s0
- c12t1d0s0 c13t1d0s0 c14t1d0s0 c15t1d0s0 c16t1d0s0
-END
-TEST8
-A test of a very very long word.
-a123456789b123456789c123456789d123456789e123456789f123456789g123456789g1234567
-END
- A test of a very very long word.
- a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123
- 4567
-END
-TEST9
-A test of a very very long word. a123456789b123456789c123456789d123456789e123456789f123456789g123456789g1234567
-END
- A test of a very very long word.
- a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123
- 4567
-END
-TEST10
-my mother once said
-"never eat paste my darling"
-would that I heeded
-END
- my mother once said
- "never eat paste my darling"
- would that I heeded
-END
-TEST11
-This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_program_does_not_crash_and_burn
-END
- This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_pr
- ogram_does_not_crash_and_burn
-END
-TEST12
-This
-
-Has
-
-Blank
-
-Lines
-
-END
- This
-
- Has
-
- Blank
-
- Lines
-
-END
-DONE
-
-
-$| = 1;
-
-print "1..", 1 +@tests, "\n";
-
-use Text::Wrap;
-
-$rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
-
-$tn = 1;
-
-@st = @tests;
-while (@st) {
- my $in = shift(@st);
- my $out = shift(@st);
-
- $in =~ s/^TEST(\d+)?\n//;
-
- my $back = wrap(' ', ' ', $in);
-
- if ($back eq $out) {
- print "ok $tn\n";
- } elsif ($rerun) {
- my $oi = $in;
- foreach ($in, $back, $out) {
- s/\t/^I\t/gs;
- s/\n/\$\n/gs;
- }
- print "------------ input ------------\n";
- print $in;
- print "\n------------ output -----------\n";
- print $back;
- print "\n------------ expected ---------\n";
- print $out;
- print "\n-------------------------------\n";
- $Text::Wrap::debug = 1;
- wrap(' ', ' ', $oi);
- exit(1);
- } else {
- print "not ok $tn\n";
- }
- $tn++;
-
-}
-
-@st = @tests;
-while(@st) {
- my $in = shift(@st);
- my $out = shift(@st);
-
- $in =~ s/^TEST(\d+)?\n//;
-
- my @in = split("\n", $in, -1);
- @in = ((map { "$_\n" } @in[0..$#in-1]), $in[-1]);
-
- my $back = wrap(' ', ' ', @in);
-
- if ($back eq $out) {
- print "ok $tn\n";
- } elsif ($rerun) {
- my $oi = $in;
- foreach ($in, $back, $out) {
- s/\t/^I\t/gs;
- s/\n/\$\n/gs;
- }
- print "------------ input2 ------------\n";
- print $in;
- print "\n------------ output2 -----------\n";
- print $back;
- print "\n------------ expected2 ---------\n";
- print $out;
- print "\n-------------------------------\n";
- $Text::Wrap::debug = 1;
- wrap(' ', ' ', $oi);
- exit(1);
- } else {
- print "not ok $tn\n";
- }
- $tn++;
-}
-
-$Text::Wrap::huge = 'overflow';
-
-my $tw = 'This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_program_does_not_crash_and_burn';
-my $w = wrap('zzz','yyy',$tw);
-print (($w eq "zzz$tw") ? "ok $tn\n" : "not ok $tn");
-$tn++;
-
{
register REGEXP *rx;
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
if (mg->mg_obj) /* @+ */
return rx->nparens;
else /* @- */
register REGEXP *rx;
I32 t;
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
paren = mg->mg_len;
if (paren < 0)
return 0;
switch (*mg->mg_ptr) {
case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9': case '&':
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
paren = atoi(mg->mg_ptr); /* $& is in [0] */
getparen:
}
return 0;
case '+':
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
paren = rx->lastparen;
if (paren)
goto getparen;
}
return 0;
case '`':
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
if (rx->startp[0] != -1) {
i = rx->startp[0];
if (i > 0) {
}
return 0;
case '\'':
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
if (rx->endp[0] != -1) {
i = rx->sublen - rx->endp[0];
if (i > 0) {
break;
case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9': case '&':
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
I32 s1, t1;
/*
sv_setsv(sv,&PL_sv_undef);
break;
case '+':
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
paren = rx->lastparen;
if (paren)
goto getparen;
sv_setsv(sv,&PL_sv_undef);
break;
case '`':
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
if ((s = rx->subbeg) && rx->startp[0] != -1) {
i = rx->startp[0];
goto getrx;
sv_setsv(sv,&PL_sv_undef);
break;
case '\'':
- if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
+ if (PL_curpm && (rx = PM_GETRE(PL_curpm))) {
if (rx->subbeg && rx->endp[0] != -1) {
s = rx->subbeg + rx->endp[0];
i = rx->sublen - rx->endp[0];
}
}
cPMOPo->op_pmreplroot = Nullop;
- ReREFCNT_dec(cPMOPo->op_pmregexp);
- cPMOPo->op_pmregexp = (REGEXP*)NULL;
+ ReREFCNT_dec(PM_GETRE(cPMOPo));
+ PM_SETRE(cPMOPo, (REGEXP*)NULL);
break;
}
}
if ((PL_hints & HINT_UTF8) || DO_UTF8(pat))
pm->op_pmdynflags |= PMdf_UTF8;
- pm->op_pmregexp = CALLREGCOMP(aTHX_ p, p + plen, pm);
- if (strEQ("\\s+", pm->op_pmregexp->precomp))
+ PM_SETRE(pm, CALLREGCOMP(aTHX_ p, p + plen, pm));
+ if (strEQ("\\s+", PM_GETRE(pm)->precomp))
pm->op_pmflags |= PMf_WHITE;
op_free(expr);
}
}
if (curop == repl
&& !(repl_has_vars
- && (!pm->op_pmregexp
- || pm->op_pmregexp->reganch & ROPT_EVAL_SEEN))) {
+ && (!PM_GETRE(pm)
+ || PM_GETRE(pm)->reganch & ROPT_EVAL_SEEN))) {
pm->op_pmflags |= PMf_CONST; /* const for long enough */
pm->op_pmpermflags |= PMf_CONST; /* const for long enough */
prepend_elem(o->op_type, scalar(repl), o);
}
else {
- if (curop == repl && !pm->op_pmregexp) { /* Has variables. */
+ if (curop == repl && !PM_GETRE(pm)) { /* Has variables. */
pm->op_pmflags |= PMf_MAYBE_CONST;
pm->op_pmpermflags |= PMf_MAYBE_CONST;
}
OP *kid = cLISTOPo->op_first->op_sibling;
if (kid && kid->op_type == OP_MATCH) {
char *pmstr = "STRING";
- if (kPMOP->op_pmregexp)
- pmstr = kPMOP->op_pmregexp->precomp;
+ if (PM_GETRE(kPMOP))
+ pmstr = PM_GETRE(kPMOP)->precomp;
Perl_warner(aTHX_ WARN_SYNTAX,
"/%s/ should probably be written as \"%s\"",
pmstr, pmstr);
#endif
};
-#define PM_GETRE(o) o->pmregexp
-#define PM_SETRE(o,r) o->pmregexp = r
+#define PM_GETRE(o) ((o)->op_pmregexp)
+#define PM_SETRE(o,r) ((o)->op_pmregexp = (r))
#define PMdf_USED 0x01 /* pm has been used once already */
#define PMdf_TAINTED 0x02 /* pm compiled from tainted pattern */
#endif
if (!pm || !s)
DIE(aTHX_ "panic: pp_split");
- rx = pm->op_pmregexp;
+ rx = PM_GETRE(pm);
TAINT_IF((pm->op_pmflags & PMf_LOCALE) &&
(pm->op_pmflags & (PMf_WHITE | PMf_SKIPWHITE)));
MAGIC *mg = Null(MAGIC*);
tmpstr = POPs;
-
- /* prevent recompiling under /o and ithreads. */
-#if defined(USE_ITHREADS) || defined(USE_THREADS)
- if (pm->op_pmflags & PMf_KEEP && PM_GETRE(pm))
- RETURN;
-#endif
-
if (SvROK(tmpstr)) {
SV *sv = SvRV(tmpstr);
if(SvMAGICAL(sv))
}
if (mg) {
regexp *re = (regexp *)mg->mg_obj;
- ReREFCNT_dec(pm->op_pmregexp);
- pm->op_pmregexp = ReREFCNT_inc(re);
+ ReREFCNT_dec(PM_GETRE(pm));
+ PM_SETRE(pm, ReREFCNT_inc(re));
}
else {
t = SvPV(tmpstr, len);
/* Check against the last compiled regexp. */
- if (!pm->op_pmregexp || !pm->op_pmregexp->precomp ||
- pm->op_pmregexp->prelen != len ||
- memNE(pm->op_pmregexp->precomp, t, len))
+ if (!PM_GETRE(pm) || !PM_GETRE(pm)->precomp ||
+ PM_GETRE(pm)->prelen != len ||
+ memNE(PM_GETRE(pm)->precomp, t, len))
{
- if (pm->op_pmregexp) {
- ReREFCNT_dec(pm->op_pmregexp);
- pm->op_pmregexp = Null(REGEXP*); /* crucial if regcomp aborts */
+ if (PM_GETRE(pm)) {
+ ReREFCNT_dec(PM_GETRE(pm));
+ PM_SETRE(pm, Null(REGEXP*)); /* crucial if regcomp aborts */
}
if (PL_op->op_flags & OPf_SPECIAL)
PL_reginterp_cnt = I32_MAX; /* Mark as safe. */
if (pm->op_pmdynflags & PMdf_UTF8)
t = (char*)bytes_to_utf8((U8*)t, &len);
}
- pm->op_pmregexp = CALLREGCOMP(aTHX_ t, t + len, pm);
+ PM_SETRE(pm, CALLREGCOMP(aTHX_ t, t + len, pm));
if (!DO_UTF8(tmpstr) && (pm->op_pmdynflags & PMdf_UTF8))
Safefree(t);
PL_reginterp_cnt = 0; /* XXXX Be extra paranoid - needed
}
#endif
- if (!pm->op_pmregexp->prelen && PL_curpm)
+ if (!PM_GETRE(pm)->prelen && PL_curpm)
pm = PL_curpm;
- else if (strEQ("\\s+", pm->op_pmregexp->precomp))
+ else if (strEQ("\\s+", PM_GETRE(pm)->precomp))
pm->op_pmflags |= PMf_WHITE;
/* XXX runtime compiled output needs to move to the pad */
register PMOP *pm = cPMOP;
SV *rv = sv_newmortal();
SV *sv = newSVrv(rv, "Regexp");
- sv_magic(sv,(SV*)ReREFCNT_inc(pm->op_pmregexp), PERL_MAGIC_qr,0,0);
+ sv_magic(sv,(SV*)ReREFCNT_inc(PM_GETRE(pm)), PERL_MAGIC_qr,0,0);
RETURNX(PUSHs(rv));
}
I32 global;
I32 r_flags = REXEC_CHECKED;
char *truebase; /* Start of string */
- register REGEXP *rx = pm->op_pmregexp;
+ register REGEXP *rx = PM_GETRE(pm);
bool rxtainted;
I32 gimme = GIMME;
STRLEN len;
if (!rx->prelen && PL_curpm) {
pm = PL_curpm;
- rx = pm->op_pmregexp;
+ rx = PM_GETRE(pm);
}
if (rx->minlen > len) goto failure;
bool rxtainted;
char *orig;
I32 r_flags;
- register REGEXP *rx = pm->op_pmregexp;
+ register REGEXP *rx = PM_GETRE(pm);
STRLEN len;
int force_on_match = 0;
I32 oldsave = PL_savestack_ix;
if (!rx->prelen && PL_curpm) {
pm = PL_curpm;
- rx = pm->op_pmregexp;
+ rx = PM_GETRE(pm);
}
r_flags = (rx->nparens || SvTEMP(TARG) || PL_sawampersand)
? REXEC_COPY_STR : 0;
else if (gimme == G_ARRAY) {
EXTEND_MORTAL(SP - newsp);
for (mark = newsp + 1; mark <= SP; mark++) {
- if (SvFLAGS(*mark) & (SVs_TEMP | SVs_PADTMP | SVf_READONLY)) {
+ if (*mark != &PL_sv_undef
+ && SvFLAGS(*mark) & (SVs_TEMP | SVs_PADTMP | SVf_READONLY)) {
/* Might be flattened array after $#array = */
PUTBACK;
POPSUB(cx,sv);
PL_curpm = newpm;
LEAVE;
LEAVESUB(sv);
- DIE(aTHX_ "Can't return %s from lvalue subroutine",
- (*mark != &PL_sv_undef)
- ? (SvREADONLY(TOPs)
- ? "a readonly value" : "a temporary")
- : "an uninitialized value");
+ DIE(aTHX_ "Can't return a %s from lvalue subroutine",
+ SvREADONLY(TOPs) ? "readonly value" : "temporary");
}
else {
/* Can be a localized value subject to deletion. */
}
if (!scan) /* It was not CURLYX, but CURLY. */
scan = next;
- if (ckWARN(WARN_REGEXP) && (minnext + deltanext == 0)
+ if (ckWARN(WARN_REGEXP)
+ && (minnext == 0) && (deltanext == 0)
&& data && !(data->flags & (SF_HAS_PAR|SF_IN_PAR))
&& maxcount <= REG_INFTY/3) /* Complement check for big count */
{
}
if (!PL_reg_curpm)
Newz(22,PL_reg_curpm, 1, PMOP);
- PL_reg_curpm->op_pmregexp = prog;
+ PM_SETRE(PL_reg_curpm, prog);
PL_reg_oldcurpm = PL_curpm;
PL_curpm = PL_reg_curpm;
if (RX_MATCH_COPIED(prog)) {
$| = 1;
-print "1..632\n";
+print "1..634\n";
BEGIN {
chdir 't' if -d 't';
/x && print "ok 632\n";
EOT
+#test /o feature
+sub test_o { $_[0] =~/$_[1]/o; return $1}
+if(test_o('abc','(.)..') eq 'a') {
+ print "ok 633\n";
+} else {
+ print "not ok 633\n";
+}
+if(test_o('abc','..(.)') eq 'a') {
+ print "ok 634\n";
+} else {
+ print "not ok 634\n";
+}
+
1;
EOE
-print "# '$_'.\nnot "
- unless /Can\'t return an uninitialized value from lvalue subroutine/;
-print "ok 34\n";
+# Fixed by change @10777
+#print "# '$_'.\nnot "
+# unless /Can\'t return an uninitialized value from lvalue subroutine/;
+print "ok 34 # Skip: removed test\n";
$x = '1234567';