Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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
bgColor#FFCCCC
langperl

$errmsg = "Global error";

sub report_error {
  my $errmsg = shift(@_);
  # ...
  print "The error is $errmsg\n";
};

report_error("Local error");

...

Code Block
bgColor#ccccff
langperl

$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");

...