Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^2: Pointers and References

by Leudwinus (Beadle)
on Nov 25, 2020 at 17:36 UTC ( #11124209=note: print w/replies, xml ) Need Help??


in reply to Re: Pointers and References
in thread Pointers and References

Hi Ken,

You're using terms pointer, address, memory location which I suspect you've picked up from one or more other languages. You are then attempting to apply those terms to Perl, assuming they have the same meaning. I think this may be the source of your problems.

Guilty as charged! I was trying to replicate in Perl the following program from a C tutorial on functions and pointers:

#include <stdio.h> int sum_and_diff (int a, int b, int *res) { int sum; sum = a + b; *res = a b; return sum; } void main (void) { int b = 2; int diff; printf ("The sum of 5 and %d is %d\n", b, sum_and_diff (5, b, &diff)); printf ("The difference of 5 and %d is %d\n", b, diff); }

Perhaps I just need to focus on one language at a time! And thank you for the detailed example and explanation!

You can reference and dereference to great depths if you want; as in this exaggerated example

I'm just reading this now but came to the same conclusion earlier today when I was reading some of the other responses to this thread.

I suggest you play around with examples like these to get a better understanding of how all of this works.

Agreed. What I take away from your examples is that when I try to print or output a variable that contains a reference, I can clearly see what that is in reference to. For example:

SCALAR(0x60008a730) --> reference to a scalar ARRAY(0x60008a828) --> reference to an array REF(0x600003e80) --> reference to a reference

This helps you understand how to dereference it:

$$x # dereference reference to scalar (if $x is a scalar) @$x # dereference reference to array (if $x is reference to an array) @$$x # dereference reference to reference of an array

I hope I got that last bit right!

Also note that I didn't use, or indeed need, terms such as pointer, address or memory location.

Duly noted! And thanks for the alias tip. I will have to park that one away for the time being because as useful as Perl one-liners are, I don't think I'm quite ready to use them that frequently.

Gratias tibi ago
Leudwinus

Replies are listed 'Best First'.
Re^3: Pointers and References
by kcott (Bishop) on Nov 25, 2020 at 19:51 UTC
    "And thanks for the alias tip. I will have to park that one away for the time being because as useful as Perl one-liners are, I don't think I'm quite ready to use them that frequently."

    I have aliases set up such that they're always available, regardless of frequency of usage. In ~/.bashrc, I have:

    ... if [ -f "${HOME}/.bash_aliases" ]; then . "${HOME}/.bash_aliases" fi ...

    And ~/.bash_aliases has lines like this:

    ... alias vi='vim' alias view='vim -R' ... alias perle='perl -Mstrict -Mwarnings -Mautodie=:all -MCarp::Always -E +' alias perlb='perl -MO=Deparse,-p -e' ... alias apache_up='/usr/sbin/apachectl start' alias apache_down='/usr/sbin/apachectl stop' ...

    You may need to adjust to suit whatever shell you're using; however, the basic principle should be applicable to any UNIX-like system. I use this with Linux for $work; with Cygwin for personal, home use; and, up until a year or so ago, with macOS (formerly Mac OS X).

    — Ken

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2021-06-13 12:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)












    Results (55 votes). Check out past polls.

    Notices?