Array Basics

By Andrew Johnson, ITworld |  How-to

We've looked at arrays and some of the basic array operators in a
previous article (back in March 2000), so in this article we'll revisit
arrays from a slightly different angle -- when and how to use them.

Often I see cases where a list of data is assigned to an equal list of
scalar variables, as in the following hypothetical database-
reformatting task:

#!/usr/bin/perl -w
use strict;
while(<>){
chomp;
my ($id, $lname, $fname, $department,
$location, $shift) = split /:/;
print "$lname|$fname|$id|$shift|$department|$location\n";
}
__END__

Assigning each field to a named scalar can be beneficial when reusing
many of them variously throughout the rest of the block (self
documenting code); however, the above usage is trivial and unnecessary.
If we are merely reformatting the data, or perhaps storing it in a
larger data structure for later use, we do not need to create all of
these variables:

#!/usr/bin/perl -w
use strict;
while(<>){
chomp;
my @fields = split /:/;
print join('|', @fields[1,2,0,5,3,4]),"\n";
}
__END__

In this case, we are just reformatting the data. Rather than specify
each field name in the new ordering, we need only re-join the fields in
their new order using an array slice.

Another good place to use an array is in building a hash. That's right,
we can easily use an array as a list of keys when building a hash by
using a hash-slice. Consider reading in the same type of data above but
this time we wish to build a hash using field names for keys:

#!/usr/bin/perl -w
use strict;
my @fields = qw/id lname fname department location shift/;
while(<>){
chomp;
my %data;
@data{@fields} = split /:/;
process(\%data); # do something with %data hash
}
# process subroutine definition ...
__END__

Besides being easy to follow, the above method allows you to eventually
process the data fields in the order they occur. You can loop through
the array of keys rather than using the keys() function (which does not
return keys in the order they were entered in the hash). An advantage
to be sure.

As a final array example, let

Join us:
Facebook

Twitter

Pinterest

Tumblr

LinkedIn

Google+

Answers - Powered by ITworld

ITworld Answers helps you solve problems and share expertise. Ask a question or take a crack at answering the new questions below.

Join us:
Facebook

Twitter

Pinterest

Tumblr

LinkedIn

Google+

Ask a Question
randomness