sub Munger1 { my ($p1, $p2) = @_; #... my $munge1 = $p1.' or '.$p2; my $munge2 = $p2.' or '.$p1; return ($munge1, $munge2); } my ($a1, $a2) = Munger1($p1, $p2); #### sub Munger2 { my ($p1, $p2, $m1, $m2) = @_; #... $$m1 = $p1.' or '.$p2; $$m2 = $p2.' or '.$p1; } Munger2($p1, $p2, \$a3, \$a4); #### sub Munger3 { my ($p1, $p2) = @_; #... $_[2] = $p1.' or '.$p2; $_[3] = $p2.' or '.$p1; } Munger2($p1, $p2, $a5, $a6); #### sub Munger4 { my ($p1, $p2) = @_; #... my $munge1 = $p1.' or '.$p2; my $munge2 = $p2.' or '.$p1; return (\$munge1, \$munge2); } my ($ar7, $ar8) = Munger4($p1, $p2); #### #!/usr/bin/perl -w use strict; sub Munger1 { # Munger returns 2 scalars my ($p1, $p2) = @_; #... my $munge1 = $p1.' or '.$p2; my $munge2 = $p2.' or '.$p1; return ($munge1, $munge2); } sub Munger2 { # Munger2 returns results via passed in references my ($p1, $p2, $m1, $m2) = @_; #... $$m1 = $p1.' or '.$p2; $$m2 = $p2.' or '.$p1; } sub Munger3 { # Munger3 returns results via "aliased"??? references my ($p1, $p2) = @_; #... $_[2] = $p1.' or '.$p2; $_[3] = $p2.' or '.$p1; } sub Munger4 { # Munger4 returns 2 scalar references my ($p1, $p2) = @_; #... my $munge1 = $p1.' or '.$p2; my $munge2 = $p2.' or '.$p1; return (\$munge1, \$munge2); } my $p1 = "This"; my $p2 = "That"; my ($a1, $a2) = Munger1($p1, $p2); print "Munger 1: A1=$a1 A2=$a2\n"; my ($a3, $a4) = ('a3' , 'a4'); Munger2($p1, $p2, \$a3, \$a4); print "Munger 2: A3=$a3 A4=$a4\n"; my ($a5, $a6) = ('a5' , 'a6'); Munger3($p1, $p2, $a5, $a6); print "Munger 3: A5=$a5 A6=$a6\n"; my ($aref7, $aref8) = Munger4($p1, $p2); print "Munger 4: A7=$$aref7 A8=$$aref8\n";