in reply to Bareword Package Names

Interestingly...

use Test::More tests => 1; # this test fails is( do { package Foo::Bar::; __PACKAGE__ }, do { package Foo::Bar; __PACKAGE__ }, );

So there's at least one place the barewords Foo::Bar:: and Foo::Bar evaluate to different packages.

See also, Perl allows package names consisting entirely of colons.

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'