perlsOfLondon

 

play_references

Page history last edited by dmlond 2 yrs ago

1. Create a subroutine which takes two arrays as arguments, and returns one array with the two squashed together.

2. Run the following code snippets, note the differences in the way references work from non-references:

sub arraychanger {
  my @in = @_;
  $in[2] = 'changed by arraychanger';
  print "$in[2]\n";
}

sub arefchanger {
  my $in = shift;
  $in->[2] = 'changed by arefchanger';
  print $in->[2],"\n";
}

sub scalarchanger {
  my $in = shift;
  $in = 'changed by scalarchanger';
  print "$in\n";
}

sub screfchanger {
  my $in = shift;
  ${$in} = 'changed by screfchanger';
  print "${$in}\n";
}


my @tmp = ('A','B','C');
print "$tmp[2]\n";
&arraychanger(@tmp);
print "$tmp[2]\n";
&arefchanger(\@tmp);
print "$tmp[2]\n";
my $stmp = 'something';
print "$stmp\n";
&scalarchanger($stmp);
print "$stmp\n";
&screfchanger(\$stmp);
print "$stmp\n";
exit;

3. Dereference the 3rd element of the 2nd array within an array of arrays (remember zero indexing in both arrays). How would you print out all the contents of the 3rd array within an array of arrays (hint, you will use @{})?

Comments (0)

You don't have permission to comment on this page.