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

Re^2: Why does Perl have typeglobs?

by Anonymous Monk
on Jul 08, 2014 at 21:21 UTC ( #1092800=note: print w/replies, xml ) Need Help??


in reply to Re: Why does Perl have typeglobs?
in thread Why does Perl have typeglobs?

Yes, but my question wasn't why Perl have symbol table entries. It was why they are structs with a bunch of pointers to different things: arrays, scalars etc... rather then one pointer to one thing per struct. I came to the conclusion that it was some attempt to gain effeciency... assuming that programmers would actually use that feature (reusing variable names; for ex. $foo, @foo, %foo etc). I don't think that too many people actually do that, am I wrong?

Replies are listed 'Best First'.
Re^3: Why does Perl have typeglobs?
by ikegami (Pope) on Jul 08, 2014 at 21:33 UTC

    It was why they are structs with a bunch of pointers to different things

    Perl can have arrays, scalars, hashes, etc with the same name. Therefore, the symbol table entry for a name must be able to hold all of them.

    I don't think that too many people actually do that, am I wrong?

    It doesn't matter how many do. It just matters if they can. That said, virtually every program uses both $_ and @_. The numerous programs using <> use $ARGV, @ARGV and *ARGV{IO}.

      I thought about it some more, and it appears that efficiency can't be the reason. I don't see why symbol tables even need to have any structs (as opposed to just bare pointers). Judging by the header you provided, the glob doesn't actually do much of anything, other that being a collection of pointers. So it was "Larry's idea" then, I guess :)
Re^3: Why does Perl have typeglobs?
by Anonymous Monk on Jul 08, 2014 at 22:45 UTC

    You can e.g. assign a typeglob to another:

    $foo = 42; @foo = ( 1, 2, 3 ); *bar = *foo; print "$bar @bar"; undef *bar; print "$bar @bar";
    Where and why that might come useful I cannot tell; however, it does make sense to keep a single struct, does it not?

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2019-08-21 09:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?