Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Perl allows package names consisting entirely of colons

by Athanasius (Bishop)
on Nov 27, 2012 at 13:06 UTC ( #1005848=note: print w/replies, xml ) Need Help??

in reply to Perl allows package names consisting entirely of colons

Seems to work only when the colons come in pairs:

#! perl use strict; use warnings; package ::::: { sub x { printf "(%s)\n", __PACKAGE__; } } package main; :::::::x();


23:01 >perl Bareword "::::::" refers to nonexistent package at line 27 +. Invalid version format (non-numeric data) at line 17, near + "package ::::" syntax error at line 17, near "package :::::" Execution of aborted due to compilation errors. 23:02 >
“Curiouser and curiouser!” cried Alice.

Update: D’oh! (slaps forehead). Of course! :: is a synonym for main, and so is ::main and therefore ::::, likewise ::::::, etc., etc. (See Packages.) This “insight” is wrong — see reply by tobyink, below.

Athanasius <°(((><contra mundum

Replies are listed 'Best First'.
Re^2: Perl allows package names consisting entirely of colons
by tobyink (Abbot) on Nov 27, 2012 at 13:33 UTC

    In terms of the package keyword itself, :: and main are distinct packages, and :::: is another package entirely...

    $ perl -Mstrict -Mwarnings -E'package main; say __PACKAGE__' main $ perl -Mstrict -Mwarnings -E'package ::main; say __PACKAGE__' main $ perl -Mstrict -Mwarnings -E'package ::; say __PACKAGE__' :: $ perl -Mstrict -Mwarnings -E'package ::::; say __PACKAGE__' ::::
    { package main; sub xxx { 0 }; package ::; sub xxx { 1 }; package ::::; sub xxx { 2 }; } use 5.010; say ::xxx(); # 0 say ::::xxx(); # 1 say ::::::xxx(); # 2
    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005848]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2018-11-20 20:19 GMT
Find Nodes?
    Voting Booth?
    My code is most likely broken because:

    Results (231 votes). Check out past polls.