{
    "mode": "perldoc",
    "parameter": "AutoSplit",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/AutoSplit/json",
    "generated": "2026-10-08T03:19:24Z",
    "synopsis": "autosplit($file, $dir, $keep, $check, $modtime);\nautosplitlibmodules(@modules);",
    "sections": {
        "NAME": {
            "content": "AutoSplit - split a package for autoloading\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "autosplit($file, $dir, $keep, $check, $modtime);\n\nautosplitlibmodules(@modules);\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This function will split up your program into files that the AutoLoader module can handle. It is\nused by both the standard perl libraries and by the MakeMaker utility, to automatically\nconfigure libraries for autoloading.\n\nThe \"autosplit\" interface splits the specified file into a hierarchy rooted at the directory\n$dir. It creates directories as needed to reflect class hierarchy, and creates the file\nautosplit.ix. This file acts as both forward declaration of all package routines, and as\ntimestamp for the last update of the hierarchy.\n\nThe remaining three arguments to \"autosplit\" govern other options to the autosplitter.\n\n$keep\nIf the third argument, *$keep*, is false, then any pre-existing \"*.al\" files in the autoload\ndirectory are removed if they are no longer part of the module (obsoleted functions). $keep\ndefaults to 0.\n\n$check\nThe fourth argument, *$check*, instructs \"autosplit\" to check the module currently being split\nto ensure that it includes a \"use\" specification for the AutoLoader module, and skips the\nmodule if AutoLoader is not detected. $check defaults to 1.\n\n$modtime\nLastly, the *$modtime* argument specifies that \"autosplit\" is to check the modification time\nof the module against that of the \"autosplit.ix\" file, and only split the module if it is\nnewer. $modtime defaults to 1.\n\nTypical use of AutoSplit in the perl MakeMaker utility is via the command-line with:\n\nperl -e 'use AutoSplit; autosplit($ARGV[0], $ARGV[1], 0, 1, 1)'\n\nDefined as a Make macro, it is invoked with file and directory arguments; \"autosplit\" will split\nthe specified file into the specified directory and delete obsolete \".al\" files, after checking\nfirst that the module does use the AutoLoader, and ensuring that the module is not already\ncurrently split in its current form (the modtime test).\n\nThe \"autosplitlibmodules\" form is used in the building of perl. It takes as input a list of\nfiles (modules) that are assumed to reside in a directory lib relative to the current directory.\nEach file is sent to the autosplitter one at a time, to be split into the directory lib/auto.\n\nIn both usages of the autosplitter, only subroutines defined following the perl *END* token\nare split out into separate files. Some routines may be placed prior to this marker to force\ntheir immediate loading and parsing.\n",
            "subsections": [
                {
                    "name": "Multiple packages",
                    "content": "As of version 1.01 of the AutoSplit module it is possible to have multiple packages within a\nsingle file. Both of the following cases are supported:\n\npackage NAME;\nEND\nsub AAA { ... }\npackage NAME::option1;\nsub BBB { ... }\npackage NAME::option2;\nsub BBB { ... }\n\npackage NAME;\nEND\nsub AAA { ... }\nsub NAME::option1::BBB { ... }\nsub NAME::option2::BBB { ... }\n"
                }
            ]
        },
        "DIAGNOSTICS": {
            "content": "\"AutoSplit\" will inform the user if it is necessary to create the top-level directory specified\nin the invocation. It is preferred that the script or installation process that invokes\n\"AutoSplit\" have created the full directory path ahead of time. This warning may indicate that\nthe module is being split into an incorrect path.\n\n\"AutoSplit\" will warn the user of all subroutines whose name causes potential file naming\nconflicts on machines with drastically limited (8 characters or less) file name length. Since\nthe subroutine name is used as the file name, these warnings can aid in portability to such\nsystems.\n\nWarnings are issued and the file skipped if \"AutoSplit\" cannot locate either the *END*\nmarker or a \"package Name;\"-style specification.\n\n\"AutoSplit\" will also emit general diagnostics for inability to create directories or files.\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "\"AutoSplit\" is maintained by the perl5-porters. Please direct any questions to the canonical\nmailing list. Anything that is applicable to the CPAN release can be sent to its maintainer,\nthough.\n\nAuthor and Maintainer: The Perl5-Porters <perl5-porters@perl.org>\n\nMaintainer of the CPAN release: Steffen Mueller <smueller@cpan.org>\n",
            "subsections": []
        },
        "COPYRIGHT AND LICENSE": {
            "content": "This package has been part of the perl core since the first release of perl5. It has been\nreleased separately to CPAN so older installations can benefit from bug fixes.\n\nThis package has the same copyright and license as the perl core:\n\nCopyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,\n2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008\nby Larry Wall and others\n\nAll rights reserved.\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of either:\n\na) the GNU General Public License as published by the Free\nSoftware Foundation; either version 1, or (at your option) any\nlater version, or\n\nb) the \"Artistic License\" which comes with this Kit.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See either\nthe GNU General Public License or the Artistic License for more details.\n\nYou should have received a copy of the Artistic License with this\nKit, in the file named \"Artistic\".  If not, I'll be glad to provide one.\n\nYou should also have received a copy of the GNU General Public License\nalong with this program in the file named \"Copying\". If not, write to the\nFree Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\n02111-1307, USA or visit their web page on the internet at\nhttp://www.gnu.org/copyleft/gpl.html.\n\nFor those of you that choose to use the GNU General Public License,\nmy interpretation of the GNU General Public License is that no Perl\nscript falls under the terms of the GPL unless you explicitly put\nsaid script under the terms of the GPL yourself.  Furthermore, any\nobject code linked with perl does not automatically fall under the\nterms of the GPL, provided such object code only adds definitions\nof subroutines and variables, and does not otherwise impair the\nresulting interpreter from executing any standard Perl script.  I\nconsider linking in C subroutines in this manner to be the moral\nequivalent of defining subroutines in the Perl language itself.  You\nmay sell such an object file as proprietary provided that you provide\nor offer to provide the Perl source, as specified by the GNU General\nPublic License.  (This is merely an alternate way of specifying input\nto the program.)  You may also sell a binary produced by the dumping of\na running Perl script that belongs to you, provided that you provide or\noffer to provide the Perl source as specified by the GPL.  (The\nfact that a Perl interpreter and your code are in the same binary file\nis, in this case, a form of mere aggregation.)  This is my interpretation\nof the GPL.  If you still have concerns or difficulties understanding\nmy intent, feel free to contact me.  Of course, the Artistic License\nspells all this out for your protection, so you may prefer to use that.\n",
            "subsections": []
        }
    },
    "summary": "AutoSplit - split a package for autoloading",
    "flags": [],
    "examples": [],
    "see_also": []
}