如何在不使用第三个变量的情况下交换两个Perl变量?

时间:2013-09-04 05:42:14

标签: perl

我想在不使用Perl中的第三个变量的情况下交换两个变量值,例如: G:

my $first = 10;
my $second = 20;

请建议我如何以简单的方式在Perl中执行此操作。

7 个答案:

答案 0 :(得分:21)

你可以写:

($first, $second) = ($second, $first);

(见§3.4 "List Assignment" in Learning Perl, Third Edition。)

答案 1 :(得分:21)

只提供给我们的最佳方式就是在一行中你可以交换价值:

 ($first, $second) = ($second, $first);

答案 2 :(得分:-1)

已经列出的Perl特定方法是最好的,但这是一种使用XOR的技术,它适用于多种语言,包括Perl:

use strict;

my $x = 4;
my $y = 8;

print "X: $x  Y: $y\n";

$x ^= $y;
$y ^= $x;
$x ^= $y;

print "X: $x  Y: $y\n";

X: 4  Y: 8
X: 8  Y: 4

答案 3 :(得分:-4)

使用简单的数学,你可以相对容易地做到这一点。

我们知道;

First = 10
Second = 20

如果我们说First = First + Second

我们现在有以下内容;

First = 30
Second = 20

现在你可以说Second = First - Second (Second = 30 - 20)

我们现在有;

First = 30
Second = 10

现在减去第一个的第二个,你得到First = 20Second = 10

答案 4 :(得分:-5)

$first = $first + $second;
$second = $first - $second;
$first = $first-$second;

这将交换两个整数变量 更好的解决方案可能是

$first = $first xor $second;
$second = $first xor $second;
$first = $first xor $second;

答案 5 :(得分:-6)

你可以使用这个逻辑

firstValue = firstValue + secondValue;

secondValue = firstValue - secondValue;

firstValue = firstValue - secondValue;

答案 6 :(得分:-6)

#!/usr/bin/perl

$a=5;
$b=6;

print "\n The value of a and b before swap is --> $a,$b \n";

$a=$a+$b;
$b=$a-$b;
$a=$a-$b;

print "\n The value of a and b after swap is as follows:";
print "\n The value of a is ---->$a \n";
print "\n The value of b is----->$b \n";