in reply to Re^2: Understanding difference between my and local variables.
in thread Understanding difference between my and local variables.

So global and package variable are one and same, correct ?
No. Global just means it can be accessed globally. Lexical variables may be global. If your program is just one file, and my declare "my $foo;" at the top of the file, that variable will be global.

Depending on what you mean by "global variable" exactly, either all package variables are global (because you always get to their values from anywhere in the program), or they are only global when their name is declared in the other scope (because getting to the value from other scopes requires fully qualified names).

What if, I declare a package variable and that variable does not exist in the package. Will that variable be created in the package
That depend on your point of view. Do you want to look at from the language POV? Then the answer is no. Package variables always exist. Implementation wise, however, means that a variable may be created when "declared". use vars and our may create the variable. But the variable may already exist - and the our (or use vars) statement just means the variable is known by a different name during the compilation process.
If a variable is declared without "my" prefix, thats a global variable or package variable, right
Right.
If a variable is not declared as global variable (package variable) say $x, then can we still use this variable $x as local variable
Yes, but it will be a different one. You cannot localize a lexical variable (but you can localized elements of lexical arrays and hashes, go figure). Such a local statement will introduce a package $x. I strongly advice as such coding practise.