Exchanging Values Without Using Temporary Variables
Problem
You want to exchange the values of two scalar variables, but don’t want to use a temporary variable.
Solution
Use list assignment to reorder the variables.
($VAR1, $VAR2) = ($VAR2, $VAR1);
Discussion
Most programming languages force you to use an intermediate step when swapping two variables’ values:
$temp = $a; $a = $b; $b = $temp;
Not so in Perl. It tracks both sides of the assignment, guaranteeing that you don’t accidentally clobber any of your values. This lets you eliminate the temporary variable:
$a = "alpha"; $b = "omega"; ($a, $b) = ($b, $a); # the first shall be last -- and versa vice
You can even exchange more than two variables at once:
($alpha, $beta, $production) = qw(January March August); # move beta to alpha, # move production to beta, # move alpha to production ($alpha, $beta, $production) = ($beta, $production, $alpha);
When this code finishes, $alpha,
$beta, and $production have the
values "March“, "August“, and
"January“.
See Also
The section on “List value constructors” in perldata(1) and Chapter 2 of Programming Perl
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access