Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re: question about variabies/references (ignore my previous botched entry)

by btrott (Parson)
on Apr 05, 2000 at 20:05 UTC ( [id://6946]=note: print w/replies, xml ) Need Help??

in reply to question about variabies/references (ignore my previous botched entry)

You're seeing this weird behavior because you have several variables that point to the same value; at the time of the first print, you haven't yet set that value, so it's undefined. When you set the value in the next line, it sets that value, so when you do the second print, they have a value.

Let's step through it:

$test = "scott";
This is self-explanatory--you're just setting a scalar variable. Later you'll use that value as a symbolic reference.
$main::{$test} = "skot2";
Here you're manipulating the symbol table; you're saying that $main::scott should point to the same thing that $main::skot2 points to. You can do this symbol table manipulation quite easily, and there's a definite potential for confusion--for example, there's a difference between $main::{"scott"} and $main::scott. The first is a symbol table entry and the second is a scalar variable.
print "As you see, ($scott) and ($main::scott) " . "aren't here\n";
$scott and $main::scott are the same variable, because $scott is found in package main, and the second is just a fully-qualified version of the first. You haven't set a value for this variable yet. You've modified $main::{"scott"} but not $main::scott. Perhaps that's the real source of your confusion?
$$test = "surprise!";
Here's where you set the value. $test is equal to "scott", so here you're just using symbolic references to change the value of $scott (which is the same as $main::scott and points to $skot2). So, it makes sense that, in the next line...
print "Now ($scott) and ($skot2) and ($main::scott) " . "have decided to show up\n";
you now have values for your variables.

Does this make sense?

Log In?

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

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (2)
As of 2024-07-25 20:10 GMT
Find Nodes?
    Voting Booth?

    No recent polls found

    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.