in reply to Re: how to push multiples row of values into hash and do comparison
in thread how to push multiples row of values into hash and do comparison

Hi, thanks for the reply. There was an error if i declare the variable inside the while loop. So i was thinking that maybe i can declare it as global variable so that I still can get the output after the while loop.

  • Comment on Re^2: how to push multiples row of values into hash and do comparison

Replies are listed 'Best First'.
Re^3: how to push multiples row of values into hash and do comparison
by BillKSmith (Monsignor) on Oct 22, 2018 at 16:40 UTC

    Before addressing your comment, let me clear up one point of confusion. In perl, the term 'global variable' means the same thing as 'package variable' (declared with 'our' or 'use vars'). You did not declare any of these. By moving the declaration, you increased the scope of a lexical variable to include the entire file.

    when you see a message that a variable is not declared, it can mean any of several things.

    • You forgot to declare the variable.
    • You misspelled the variable
    • You used the variable some place you did not intend.
    • You declared the variable in too narrow a scope.
    Removing 'strict' will suppress the message, but not fix any of the errors. Moving the declaration to the start of the file will probably also suppress the message. It will 'fix' the scope problem, but none of the others. In exchange, you have given up this protection against errors you may make in the future.

    The solution is 'smallest possible scope'. Move the declaration not to the start of the file, but to the start of the smallest block which includes every necessary use of the variable.

    Bill