EXTUTILS::COMMAND::MM(3perl)

πŸ’– NAME πŸ’–

ExtUtils::Command::MM β€” commands for the MM's to use in Makefiles ✨

okay so bestie, this whole module is basically a lil toolbox of commands that Makefiles call when they need Perl to do a quick chore. no cap 🫢


🌈 SYNOPSIS 🌈

perl "-MExtUtils::Command::MM" -e "function" "--" arguments...

that's the whole vibe: you load the module, you name a function, you feed it args after the --. slay πŸ’…


πŸŽ€ DESCRIPTION πŸŽ€

⚠️ FOR INTERNAL USE ONLY! The interface is not stable. ma'am this is a backstage pass, not a public API β€” it can change on you whenever, fr fr 😭

ExtUtils::Command::MM encapsulates code which would otherwise have to be done with large "one" liners. you know the type β€” a giant perl -e "..." blob that no one wants to debug at 3am. this module said "not me, I'll hold it" πŸ‘‘

πŸ“Œ Heads up: any $(FOO) you see in the examples is a make variable, not Perl. do not come for me, that's just how make talks 🌸

πŸ§ͺ test_harness

test_harness($verbose, @test_libs);

Runs the tests on @ARGV via Test::Harness, passing through the $verbose flag. any @test_libs get unshifted onto the test's @INC, so the tests can find them 🌷

and the @test_libs are run in alphabetical order β€” yes, alphabetical, that's the rule, bestie πŸ“š


πŸ“œ pod2man

pod2man( '--option=value',
         $podfile1 => $manpage1,
         $podfile2 => $manpage2,
         ...
       );

# or args on @ARGV

pod2man() is a function performing most of the duties of the pod2man program. its arguments are exactly the same as pod2man as of 5.8.0, with the addition of:

  • --perm_rw β€” octal permission to set the resulting manpage to πŸ”

and the removal of:

  • --verbose / -v ❌
  • --help / -h ❌

if no arguments are given to pod2man it will read from @ARGV. and if Pod::Man is unavailable, this function will warn and return undef β€” so check your return value, bestie, don't get caught slipping πŸ’€


πŸ‘΅ warn_if_old_packlist

perl "-MExtUtils::Command::MM" -e warn_if_old_packlist <somefile>

Displays a warning that an old packlist file was found. it reads the filename from @ARGV. that's it, that's the whole job β€” it just yells politely πŸ—£οΈβœ¨


πŸ“¦ perllocal_install

perl "-MExtUtils::Command::MM" -e perllocal_install
    <type> <module name> <key> <value> ...

# VMS only, key|value pairs come on STDIN
perl "-MExtUtils::Command::MM" -e perllocal_install
    <type> <module name> < <key>|<value> ...

Prints a fragment of POD suitable for appending to perllocal.pod. arguments are read from @ARGV πŸ“

  • type β€” the type of what you're installing. usually Module.
  • module name β€” simply the name of your module. like Foo::Bar πŸ’«

key/value pairs are extra information about the module. fields include:

  • installed into β€” which directory your module was out into
  • LINKTYPE β€” dynamic or static linking
  • VERSION β€” module version number
  • EXE_FILES β€” any executables installed in a space separated list

πŸ—‘οΈ uninstall

perl "-MExtUtils::Command::MM" -e uninstall <packlist>

A wrapper around ExtUtils::Install::uninstall(). it warns that uninstallation is deprecated and doesn't actually perform the uninstallation 😭

🚨 bestie READ THIS TWICE: it warns you it's deprecated, and then it literally does nothing. it talks the talk and does not walk the walk. no cap.

πŸ” test_s

perl "-MExtUtils::Command::MM" -e test_s <file>

Tests if a file exists and is not empty (size > 0). Exits with 0 if it does, 1 if it does not βœ…βŒ

simple, honest, reliable β€” the green flag of this whole module πŸ“


πŸ“‹ cp_nonempty

perl "-MExtUtils::Command::MM" -e cp_nonempty <srcfile> <dstfile> <perm>

Tests if the source file exists and is not empty (size > 0). if it is not empty it copies it to the given destination with the given permissions πŸ¦‹

so like: empty file? nothing happens, stay home. real content? copy, set perms, done πŸ’…


and that's the whole page, bestie!! you ate it, you understood it, we're done here πŸŽ€πŸ’–

Perl v5.44.0 β€” dated 2026-10-17 β€” from the Perl Programmers Reference Guide. mwah, love u, go write some makefiles πŸ’œπŸ‘‘

πŸ“¦ where this page comes from
  • arch rolling: perl 5.44.0-1 Β· Artistic-1.0-Perl AND GPL-1.0-or-later
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms