NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
Huh? (Score:1)
I don't buy it:
Re: (Score:1)
Hrm, point for you. Bad wording on my side. What's the thing called methods are looked up from then? :)
I honestly thought a
delete $Foo::{bar}will remove the symbol table entry.Thanks again!
Ordinary morality is for ordinary people. -- Aleister Crowley
Re: (Score:1)
You misunderstood what chromatic said. He demonstrated that Perl does not have compile-time binding, contrary to what you are saying. Decompiling shows that the invocation of
doublein thenewmethod is indirected via the package. If you remove the entry fordoublefrom the package, the function call will NOT work.Sorry, but your approach won’t work.
Here’s a pattern for you to read carefully and chew on:
Re: (Score:1)
So, you're saying what? I can understand that as either
And btw: You call that a pattern? I call that a work-around :) And, just FYI, you might want to stay away from patronising phrases like "Here’s a pattern for you to read carefully and chew on." Because it really decreases my motivation to answer.
Ordinary morality is for ordinary people. -- Aleister Crowley
Re:Huh? (Score:1)
You said:
It’s bad wording on your part to say the functions are bound in the code, because they’re not; they’re always looked up from the symbol table.
Interestingly, what you’re doing shouldn’t work – but it does! Apparently the
%main::-type hashes aren’t actually an interface to the symbol table, they’re just a one-way mirror:In fact you won’t even get the Subroutine %s redefined warning if you have deleted the entry from the hash and redefine the routine.
But this is clearly inconsistent with the documentation. perlmod [perl.org] says:
Obviously not. Smells strongly like a bug to me (at the very least like a doc bug), not like behaviour that should be relied on. Someone alert the porters…
You said:
Errm, that’s what patterns are: formulaic workarounds for deficiencies in a language [plover.com].
And hey:
Besides, if you call that a workaround, then pretty nearly every way of doing OO in Perl 5 is a workaround of some sort. (More precisely, you need some form of pattern for even the simplest OOP approach in Perl 5.) We’ve just gotten so used to it by now that we don’t notice.
You said:
Maybe I wrote that just because the example I gave is less than obvious in my opinion. I could say you might want to stay away from reading too much into others’ utterances, but that shall be your call.
Reply to This
Parent
Re: (Score:1)
Of course. Did you honestly think I sent some code off to CPAN without even _trying_ first? :)
Maybe I will post it there if nobody else does.
That might be what you (and MJD) think, but I clearly see a difference betw
Ordinary morality is for ordinary people. -- Aleister Crowley
Re: (Score:1)
No, it’s not. A pattern is a common, complex arrangement of language primitives that has to be aligned just so in order to work; which arrangement addresses a particular problem commonly encountered when using the language.
Far from everything in a program does meets this definition. Most notably, the solution to the problem addressed by the program in its essence is not a pattern, by definition, although if it’s non-trivial you will ofte
Re: (Score:1)
Ordinary morality is for ordinary people. -- Aleister Crowley
Re: (Score:2)