{
    "mode": "perldoc",
    "parameter": "ExtUtils::MM_VMS",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/ExtUtils%3A%3AMM_VMS/json",
    "generated": "2026-06-13T20:43:54Z",
    "synopsis": "Do not use this directly.\nInstead, use ExtUtils::MM and it will figure out which MM*\nclass to use for you.",
    "sections": {
        "NAME": {
            "content": "ExtUtils::MMVMS - methods to override UN*X behaviour in ExtUtils::MakeMaker\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "Do not use this directly.\nInstead, use ExtUtils::MM and it will figure out which MM*\nclass to use for you.\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "See ExtUtils::MMUnix for a documentation of the methods provided there. This package overrides\nthe implementation of these methods, not the semantics.\n",
            "subsections": [
                {
                    "name": "Methods always loaded",
                    "content": "wraplist\nConverts a list into a string wrapped at approximately 80 columns.\n"
                },
                {
                    "name": "Methods",
                    "content": "Those methods which override default MMUnix methods are marked \"(override)\", while methods\nunique to MMVMS are marked \"(specific)\". For overridden methods, documentation is limited to an\nexplanation of why this method overrides the MMUnix method; see the ExtUtils::MMUnix\ndocumentation for more details.\n\nguessname (override)\nTry to determine name of extension being built. We begin with the name of the current\ndirectory. Since VMS filenames are case-insensitive, however, we look for a .pm file whose\nname matches that of the current directory (presumably the 'main' .pm file for this\nextension), and try to find a \"package\" statement from which to obtain the Mixed::Case\npackage name.\n\nfindperl (override)\nUse VMS file specification syntax and CLI commands to find and invoke Perl images.\n\nfixinreplaceshebang (override)\nHelper routine for MM->fixin(), overridden because there's no such thing as an actual\nshebang line that will be interpreted by the shell, so we just prepend $Config{startperl}\nand preserve the shebang line argument for any switches it may contain.\n\nmaybecommand (override)\nFollows VMS naming conventions for executable files. If the name passed in doesn't exactly\nmatch an executable file, appends .Exe (or equivalent) to check for executable image, and\n.Com to check for DCL procedure. If this fails, checks directories in DCL$PATH and finally\nSys$System: for an executable file having the name specified, with or without the\n.Exe-equivalent suffix.\n\npasthru (override)\nThe list of macro definitions to be passed through must be specified using the /MACRO\nqualifier and must not add another /DEFINE qualifier. We prepend our own comma here to the\ncontents of $(PASTHRUDEFINE) because it is often empty and a comma always present in\nCCFLAGS would generate a missing qualifier value error.\n\npmtoblib (override)\nVMS wants a dot in every file so we can't have one called 'pmtoblib', it becomes\n'pmtoblib.' and MMS/K isn't smart enough to know that when you have a target called\n'pmtoblib' it should look for 'pmtoblib.'.\n\nSo in VMS its pmtoblib.ts.\n\nperlscript (override)\nIf name passed in doesn't specify a readable file, appends .com or .pl and tries again,\nsince it's customary to have file types on all files under VMS.\n\nreplacemanpageseparator\nUse as separator a character which is legal in a VMS-syntax file name.\n\ninitDEST\n(override) Because of the difficulty concatenating VMS filepaths we must pre-expand the\nDEST* variables.\n\ninitDIRFILESEP\nNo separator between a directory path and a filename on VMS.\n\ninitmain (override)\ninittools (override)\nProvide VMS-specific forms of various utility commands.\n\nSets DEVNULL to nothing because I don't know how to do it on VMS.\n\nChanges EQUALIZETIMESTAMP to set revision date of target file to one second later than\nsource file, since MMK interprets precisely equal revision dates for a source and target\nfile as a sign that the target needs to be updated.\n\ninitplatform (override)\nAdd PERLVMS, MMVMSREVISION and MMVMSVERSION.\n\nMMVMSREVISION is for backwards compatibility before MMVMS had a $VERSION.\n\nplatformconstants\ninitVERSION (override)\nOverride the *DEFINEVERSION macros with VMS semantics. Translate the MAKEMAKER filepath to\nVMS style.\n\nconstants (override)\nFixes up numerous file and directory macros to insure VMS syntax regardless of input syntax.\nAlso makes lists of files comma-separated.\n\nspecialtargets\nClear the default .SUFFIXES and put in our own list.\n\ncflags (override)\nBypass shell script and produce qualifiers for CC directly (but warn user if a shell script\nfor this extension exists). Fold multiple /Defines into one, since some C compilers pay\nattention to only one instance of this qualifier on the command line.\n\nconstcccmd (override)\nAdds directives to point C preprocessor to the right place when handling #include\n<sys/foo.h> directives. Also constructs CC command line a bit differently than MMUnix\nmethod.\n\ntoolsother (override)\nThrow in some dubious extra macros for Makefile args.\n\nAlso keep around the old $(SAY) macro in case somebody's using it.\n\ninitdist (override)\nVMSish defaults for some values.\n\nmacro         description                     default\n\nZIPFLAGS      flags to pass to ZIP            -Vu\n\nCOMPRESS      compression command to          gzip\nuse for tarfiles\nSUFFIX        suffix to put on                -gz\ncompressed files\n\nSHAR          shar command to use             vmsshare\n\nDISTDEFAULT  default target to use to        tardist\ncreate a distribution\n\nDISTVNAME     Use VERSIONSYM instead of      $(DISTNAME)-$(VERSIONSYM)\nVERSION for the name\n\nco (override)\nUse VMS syntax on command line. In particular, $(DEFINE) and $(PERLINC) have been pulled\ninto $(CCCMD). Also use MM[SK] macros.\n\nxsc (override)\nUse MM[SK] macros.\n\nxso (override)\nUse MM[SK] macros, and VMS command line for C compiler.\n\nxsbuildreplacemacro (override)\nThere is no simple replacement possible since a qualifier and all its subqualifiers must be\nconsidered together, so we use our own utility routine for the replacement.\n\nxsbuildvalue (override)\nConvert the extension spec to Unix format, as that's what will match what's in the XSBUILD\ndata structure.\n\ndlsyms (override)\nCreate VMS linker options files specifying universal symbols for this extension's shareable\nimage(s), and listing other shareable images or libraries to which it should be linked.\n\nxsobjopt\nOverride to fixup -o flags.\n\ndynamiclib (override)\nUse VMS Link command.\n\nxsmakestaticlib (override)\nUse VMS commands to manipulate object library.\n\nstaticlibpurecmd (override)\nUse VMS commands to manipulate object library.\n\nxsstaticlibisxs\nextracleanfiles\nClean up some OS specific files. Plus the temp file used to shorten a lot of commands. And\nthe name mangler database.\n\nzipfiletarget\ntarfiletarget\nshdisttarget\nSyntax for invoking shar, tar and zip differs from that for Unix.\n\ninstall (override)\nWork around DCL's 255 character limit several times,and use VMS-style command line quoting\nin a few cases.\n\nperldepend (override)\nUse VMS-style syntax for files; it's cheaper to just do it directly here than to have the\nMMUnix method call \"catfile\" repeatedly. Also, if we have to rebuild Config.pm, use MM[SK]\nto do it.\n\nmakeaperl (override)\nUndertake to build a new set of Perl images using VMS commands. Since VMS does dynamic\nloading, it's not necessary to statically link each extension into the Perl image, so this\nisn't the normal build path. Consequently, it hasn't really been tested, and may well be\nincomplete.\n\nmaketextfilter (override)\nEnsure that colons marking targets are preceded by space, in order to distinguish the target\ndelimiter from a colon appearing as part of a filespec.\n\nprefixify (override)\nprefixifying on VMS is simple. Each should simply be:\n\nperlroot:[some.dir]\n\nwhich can just be converted to:\n\nvolume:[your.prefix.some.dir]\n\notherwise you get the default layout.\n\nIn effect, your search prefix is ignored and $Config{vmsprefix} is used instead.\n\ncd\noneliner\necho\nperl trips up on \"<foo>\" thinking it's an input redirect. So we use the native Write command\ninstead. Besides, it's faster.\n\nquoteliteral\nescapedollarsigns\nQuote, don't escape.\n\nescapealldollarsigns\nQuote, don't escape.\n\nescapenewlines\nmaxexeclen\n256 characters.\n\ninitlinker\ncatdir (override)\ncatfile (override)\nEliminate the macros in the output to the MMS/MMK file.\n\n(File::Spec::VMS used to do this for us, but it's being removed)\n\neliminatemacros\nExpands MM[KS]/Make macros in a text string, using the contents of identically named\nelements of %$self, and returns the result as a file specification in Unix syntax.\n\nNOTE: This is the canonical version of the method. The version in File::Spec::VMS is\ndeprecated.\n\nfixpath\nmy $path = $mm->fixpath($path);\nmy $path = $mm->fixpath($path, $isdir);\n\nCatchall routine to clean up problem MM[SK]/Make macros. Expands macros in any directory\nspecification, in order to avoid juxtaposing two VMS-syntax directories when MM[SK] is run.\nAlso expands expressions which are all macro, so that we can tell how long the expansion is,\nand avoid overrunning DCL's command buffer when MM[KS] is running.\n\nfixpath() checks to see whether the result matches the name of a directory in the current\ndefault directory and returns a directory or file specification accordingly. $isdir can be\nset to true to force fixpath() to consider the path to be a directory or false to force it\nto be a file.\n\nNOTE: This is the canonical version of the method. The version in File::Spec::VMS is\ndeprecated.\n\nosflavor\nVMS is VMS.\n\nismaketype (override)\nNone of the make types being checked for is viable on VMS, plus our $self->{MAKE} is an\nunexpanded (and unexpandable) macro whose value is known only to the make utility itself.\n\nmaketype (override)\nReturns a suitable string describing the type of makefile being written.\n"
                }
            ]
        },
        "AUTHOR": {
            "content": "Original author Charles Bailey bailey@newman.upenn.edu\n\nMaintained by Michael G Schwern schwern@pobox.com\n\nSee ExtUtils::MakeMaker for patching and contact information.\n",
            "subsections": []
        }
    },
    "summary": "ExtUtils::MMVMS - methods to override UN*X behaviour in ExtUtils::MakeMaker",
    "flags": [],
    "examples": [],
    "see_also": []
}