|
|||||||||||||||||||||||||||
Jeg har lavet et lille eksempel, som viser anvendelse af array af
referencer
af arrays som løsning på problemet, hvor flere arrays skal returneres.
!
!
================================================================= !
!
#!/usr/bin/perl -T -w
# Define two arrays passed as arguments to function.
@a1 = (1,2,3);
@a2 = (4,5,6);
print "*** main *** @a1\n";
print "*** main *** @a2\n";
# Call function with two arrays, one of which is modified.
# Return references to two arrays, begin equal to the
# original arguments.
($r1,$r2) = jk1(*a1,*a2);
print "*** main *** @a1\n";
print "*** main *** @a2\n";
print "*** main *** r1=(",@$r1,") r2=(",@$r2,")\n";
print "*** main *** r1[1]=",$r1->[1],"\n";
sub jk1 {
# Store arguments
local *ar1 = shift;
local *ar2 = shift;
# Return values
my (@ba1);
my (@ba2);
# Store original argument values in return values.
@ba1 = @ar1;
@ba2 = @ar2;
# Print global variables
print "a1=(@a1)\n";
print "a2=(@a2)\n";
# Print original arguments. Notice difference
# when printing references.
print "ar1=(",@ar1,")\n";
print "ar2=(",@ar2,")\n";
# Assign to second argument the value of first argument.
@ar2 = @ar1;
# Print arrays to return
print "ba1=(@ba1)\n";
print "ba2=(@ba2)\n";
# Return array of references to arrays.
return (sslug@sslug,sslug@sslug);
}
sub END {
print "end of program\n";
}
sub BEGIN {
print "start of program\n";
}
================================================================= !
!
Jeg håber, at du kan tilpasse dette til dit behov.
mvh
Jan Eggert Kofoed
|
||||||||||||||
|
||||||||||||||