start page | rating of books | rating of authors | reviews | copyrights

Perl Cookbook

Perl CookbookSearch this book
Previous: 1.2. Establishing a Default Value Chapter 1
Strings
Next: 1.4. Converting Between ASCII Characters and Values
 

1.3. 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


Previous: 1.2. Establishing a Default Value Perl Cookbook Next: 1.4. Converting Between ASCII Characters and Values
1.2. Establishing a Default Value Book Index 1.4. Converting Between ASCII Characters and Values