Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re: Perl allows package names consisting entirely of colons

by Athanasius (Chancellor)
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]
[arc444]: hi. Anyone know how to filter the list of methods returned when querying an object in the perl debugger ?
[arc444]: for example : m $obj | grep 'blah'

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (7)
As of 2018-01-24 10:38 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (257 votes). Check out past polls.