Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Perl allows package names consisting entirely of colons

by Athanasius (Abbot)
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();

Produces:

23:01 >perl 405_Obfu.pl Bareword "::::::" refers to nonexistent package at 405_Obfu.pl line 27 +. Invalid version format (non-numeric data) at 405_Obfu.pl line 17, near + "package ::::" syntax error at 405_Obfu.pl line 17, near "package :::::" Execution of 405_Obfu.pl 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


Comment on Re: Perl allows package names consisting entirely of colons
Select or Download Code
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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (8)
As of 2015-07-07 00:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (86 votes), past polls