Do not use the same variable name in two scopes where one scope is contained in another. For example,
- A lexical variable should not share the name of a package variable if the lexical variable is in a subscope of the global variable.
- A block should not declare a lexical variable with the same name as a lexical variable declared in any block that contains it.
...
This noncompliant code example declares the errmsg
identifier at file scope and reuses the same identifier to declare a string that is private in the report_error()
subroutine. Consequently, the program prints "The error is Local error" , rather than "The error is Global error.".
Code Block | ||||
---|---|---|---|---|
| ||||
$errmsg = "Global error";
sub report_error {
my $errmsg = shift(@_);
# ...
print "The error is $errmsg\n";
};
report_error("Local error");
|
...
Code Block | ||||
---|---|---|---|---|
| ||||
$global_error_msg = "Global error";
sub report_error {
my $local_error_msg = shift(@_);
# ...
print "The error is $local_error_msg\n";
};
report_error("Local error");
|
...