Kent Fredric <kentfred...@gmail.com> writes: > On 26 May 2017 at 05:33, lee <l...@yagibdah.de> wrote: >> Perl doesn't have data structures, so variables in perl are not data >> structures. That is unfortunate. > > > So when I write: > > my $var = { > memory => { > total => 1024, > free => 100, > buffers => 10, > }, > }; > > > What do I have?
You have a variable. > Because as far as I'm concerned, I have both data structures and > references in play. As far as I'm concerned, you seem to have assigned a reference to the variable, and what it might be referring to is difficult to figure out. Some sort of construction that resembles a hash seems involved. As far as I'm concerned, hashes are key/value pairs. I don't consider them as data structures any more than, for example, an integer. They are a given element of the language which can be useful when you have a bunch of values you want to refer to by names. So I'm not sure what you have there. > References are not a low level mechanic that only the Perl VM needs to > care about. > > References are a mechansim to allow data structures to be passed > *without copying* Yes, that works nicely in C. > my $x = 5; > my $y = $x; # x is a copy of y > > However, if I do: > > my $x = 5; > $y = \$x > > > Y is now a reference to X $y = 5; Now $y is 5. That is what's evil. > If I now do: > > ${$y} = 10 > > X changes. Yes, and that's a horrible notation. > Its a useful tool, that programmers have uses for. > > If you think they're evil, then you're probably thinking too much in C. They are evil in perl because the notation is unwieldy, especially when you need to de-reference a reference. That they are indistinguishable from non-references doesn't help. Perhaps I do think too much in C --- at least such things are much easier to deal with there. It could be easier in perl, too. > Because you can't do any real work in perl *without* references. Why is that? Because arrays are transformed into lists when passed as arguments to functions? What do you consider "real work"? > *Objects* in perl are blessed references. I don't know yet what "blessed" is supposed to mean. > Avoid that all you like, but you're just avoiding using Perl and > wondering why it hurts :) I'm using it a lot, and it doesn't hurt. It's even fun to use. It also has advantages for what I'm using it for, which is why I'm using it. -- "Didn't work" is an error. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/