EverEffects Backup Forum
Welcome To We Can't Program Forums, Please Log In To Access All Forums.

Enjoy Your Stay

- Staff

EverEffects Backup Forum

Designers World
 
HomePortalMemberlistRegisterLog in



 


Share | 
 

 Array variables

View previous topic View next topic Go down 
AuthorMessage
Fred
Staff
Staff
avatar

Posts : 33
Join date : 2010-05-27
Age : 25
Location : Oklahoma

PostSubject: Array variables   Thu Jun 03, 2010 5:14 pm
Introduction

Today i will show about array variables. Now array variables are like scalars variables because they both have the same format except they are prefixed by an "@" symbol. Now before you proceed, first look for the topic called "Scalar variables - Perl" section and "Control structures - Perl" section, then you can proceed to this tutorial. Also i have made a topic on this section called "Perl Download file", so look at that and lets begin.

The Basic Variables of Arrays

Here is a basic statement of mines:

Code:
@food  = ("apples", "pears", "eels");
@music = ("whistle", "flute");

The statement assigns a three element list to the array variable @food and a two element list to the array variable @music.

The array is accessed by using in dices starting from 0, and square brackets are used to specify the index. The expression returns eels. Notice that the @ has changed to a $ because eels is a scalar. Here is a example:

Code:
$food[2]

Array Assignments

As in all of Perl, the same expression in a different context can produce a different result. The first assignment below explodes the @music variable so that it is equivalent to the second assignment. Here is the following example:

Code:
@moremusic = ("organ", @music, "harp");
@moremusic = ("organ", "whistle", "flute", "harp");

This should suggest a way of adding elements to an array. A neater way of adding elements is to use the statement which pushes eggs onto the end of the array @food. Here is a following example:

Code:
push(@food, "eggs");

Now to push two or more items onto the array use one of the following forms:

Code:
push(@food, "eggs", "lard");
push(@food, ("eggs", "lard"));
push(@food, @morefood);

The push function returns the length of the new list.

Ok now from our original list the pop function returns eels and @food now has two elements. To remove the last item from a list and return it use the pop function:

Code:
$grub = pop(@food);   # Now $grub = "eels"

It is also possible to assign an array to a scalar variable. As usual context is important.

Code:
$f = @food;

The line assigns the length of @food

Code:
$f = "@food";

But turns the list into a string with a space between each element. This space can be replaced by any other string by changing the value of the special $" variable. This variable is just one of Perl's many special variables, most of which have odd names.

Also arrays can be used to make multiple assignments to scalar variables:

Code:
($a, $b) = ($c, $d);      # Same as $a=$c; $b=$d;
($a, $b) = @food;      # $a and $b are the first two
            # items of @food.
($a, @somefood) = @food;   # $a is the first item of @food
            # @somefood is a list of the
            # others.
(@somefood, $a) = @food;   # @somefood is @food and
            # $a is undefined.

The last assignment occurs because arrays are greedy, and @somefood will swallow up as much of @food as it can. Therefore that form is best avoided.

Finally, you may want to find the index of the last element of a list. To do this for the @food array use the expression:

Code:
$#food

Displaying Arrays

Since context is important, it shouldn't be too surprising that the following all produce different results:

Code:
print @food;   # By itself
print "@food";   # Embedded in double quotes
print @food."";   # In a scalar context

Here is a exercise for you, try out each of the above three print statements to see what they do.
Back to top Go down
http://wcpforums.friendhood.net
 

Array variables

View previous topic View next topic Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
EverEffects Backup Forum :: Perl-
Jump to:  


   [Valid RSS]





Free forum | © phpBB | Free forum support | Contact | Report an abuse | Free forum