Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Perl allows package names consisting entirely of colons

by Athanasius (Monsignor)
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 drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2014-08-29 11:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (280 votes), past polls