in reply to Re^2: Perl Errors
in thread Perl Errors

Correct! Every time you use my $variable a new $variable is created that will hide the previously declared variable.

If you declare the second $variable in the same scope, you cannot access the value of the previously declared variable anymore.

If you declare the second $variable in a different scope, you cannot access the value of the previously declared variable while you are in that scope. Leaving that scope, the earlier variable will suddenly re-appear. As you will understand, this can cause all kinds of weirdness and confusion, so don't do it unless you have a very good reason for it.

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

My blog: Imperial Deltronics

Replies are listed 'Best First'.
Re^4: Perl Errors
by Hellhound4 (Novice) on Mar 27, 2012 at 20:47 UTC
    So don't use strict?
      That's not the lesson!

      use strict; and use warnings; will help you by identifying mistakes such as declaring a variable twice (in the same scope). The cure is to make sure your variables are declared ONLY ONCE unless there is some special and very good reason for doing otherwise; a situation you're not apt to encounter until you're a very sophisticated and knowledgeable coder.

      What? I smell heresy in the Monastery! Cleanse the Xenos, Burn the Witch, Purge the Heretic!

      Always use strict; If you see uncleanliness you can do two things: clean it up or stab out your eyes so you do not see it anymore. Your choice.

      CountZero

      A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

      My blog: Imperial Deltronics
        So if I want global variables I need to use MAIN::Variable_Name = whatever ok a few questions. Do I have to supply a value when I declare it? Do I have to refer to it as MAIN::Variable_Name or will Variable_Name work? Can I call it within other blocks? And in my full code is there any reason it would fail to open the directory?