WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Perl · Intermediate · question 26 of 100

What are lexical and dynamic variables, and how do they differ in Perl?

📕 Buy this interview preparation book: 100 Perl questions & answers — PDF + EPUB for $5

In Perl, variables can either be lexical or dynamic.

Lexical variables are those that are declared within a block of code (such as within a sub or if statement) in which they are valid. These variables are only accessible inside the block and any nested blocks within it. Once the block is exited, the variables are destroyed and their data is no longer accessible. Lexical variables can be declared using the ‘my‘ keyword. For example:

sub some_function {
   my $lexical_var = "hello";
   print $lexical_var;
}

In the above code, ‘$lexical_var‘ is the lexical variable that is only accessible within the ‘some_function()‘ subroutine.

On the other hand, dynamic variables are those that are declared using the ‘local‘ keyword. These variables can be accessed by any subroutine that is called while the variable is still in scope. Unlike lexical variables, dynamic variables are not destroyed once the block is exited. Any changes made to the variable by a subroutine will affect the value of the variable for any other subroutine that is called while it is still in scope. For example:

sub some_function {
    local $dynamic_var = "world";
    some_subroutine();
}

sub some_subroutine {
    print $dynamic_var;
}

some_function();

In the above code, ‘$dynamic_var‘ is the dynamic variable that is accessible to both ‘some_function()‘ and ‘some_subroutine()‘. When ‘some_function()‘ is called, ‘$dynamic_var‘ is set to "world" and then ‘some_subroutine()‘ is called, which prints out the value of ‘$dynamic_var‘. Since ‘$dynamic_var‘ is still in scope, any changes made to it by ‘some_subroutine()‘ will affect it for any other subroutine that is called while it is still in scope.

In summary, the main difference between lexical and dynamic variables in Perl is that lexical variables are scoped to the block in which they are declared, while dynamic variables are scoped to the current package and can be accessed by any subroutine that is called while the variable is still in scope.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Perl interview — then scores it.
📞 Practice Perl — free 15 min
📕 Buy this interview preparation book: 100 Perl questions & answers — PDF + EPUB for $5

All 100 Perl questions · All topics