in reply to Default import function

the output shows that an import function is already present

Actually, it shows that an entry for import has been added to the symbol table.

use 5.10; use Devel::Peek; use foo; say join " ", keys %{"foo::"}; Dump ${"foo::"}{import}' __END__ # Output: import SV = PVGV(0x55c979ee96a0) at 0x55c979e89f30 REFCNT = 1 FLAGS = (MULTI) NAME = "import" NAMELEN = 6 GvSTASH = 0x55c979ef40e0 "foo" FLAGS = 0x2 GP = 0x55c979f017e0 SV = 0x0 REFCNT = 1 IO = 0x0 FORM = 0x0 AV = 0x0 HV = 0x0 CV = 0x0 CVGEN = 0x6 GPFLAGS = 0x0 () LINE = 1 FILE = "-e" EGV = 0x55c979e89f30 "import"
You can see that the function slot is empty where it says CV = 0x0