#!/usr/bin/perl -lw use strict; my $a = 1; my $b = 2; sub swap { my @in = \( @_ ); # create our references, although pointless here ${$in[0]}^=${$in[1]};${$in[1]}^=${$in[0]};${$in[0]}^=${$in[1]}; } print "$a $b"; swap($a,$b); print "$a $b"; __DATA__ output: 1 2 2 1 #### #!/usr/bin/perl -wl use strict; my @a = qw(a b c x); my @b = qw(d e f y); my %c = qw(g h i j); my $d = "bill"; sub array_and_array { my (@z,@y) = @_; print "z: @z | y: @y"; } sub hash_and_array { my (%x,@w) = @_; local $, = $"; # just so we can print out %x print "x:",%x,"| w: @w"; } sub array_and_scalar { my (@v,$u) = @_; print "v: @v | u: ",$u?$u:""; } sub scalar_and_array { my ($t,@s) = @_; print "t: $t | s: @s"; } sub know_length_arrays { my (@r,@q); (@r[0..3],@q[0..3]) = @_; print "r: @r | q: @q"; } sub know_length_array_with_hash { my (@p,%o); (@p[0..3],%o) = @_; local $, = $"; print "p: @p | o:",%o; } array_and_array(@a,@b); hash_and_array(%c,@a); array_and_scalar(@a,$d); scalar_and_array($d,@a); know_length(@a,@b); know_length_array_with_hash(@a,%c); __DATA__ output: z: a b c x d e f y | y: x: c x a b g h i j | w: v: a b c x bill | u: t: bill | s: a b c x r: a b c x | q: d e f y p: a b c x | o: g h i j