in reply to deference and inreference operators

First I'll answer the quoting question. Try the following snippet.

my $text = "Hello world\n"; my $var = 'Hello world\n'; print $text; print $var;

In the case of $text, we used " (double quotes) and thus, \n was expanded to mean a newline. In the case of $var, we used single quotes, and \n remained the literal characters \ and n.

Now try this code:

my $text = "Hello world\n"; print "$text"; print '$text';

In the case of the first print statement, the variable $text is interpolated within the string (its value is put into the string). In the case of the second print statement, $text is the literal text printed.

Now for =>. => is sometimes called the "fat comma". It's most common use is in declaring elements of a hash, as in:

my %hash = ( This => 10, That => 20 );

The fat comma also has the effect of 'single quoting' the text immediately to its left. So the above snippet is equal to:

my %hash = ( 'This' , 10, 'That' , 20 );

Now for ->. That is used for dereferencing, which is an entirely different subject, having nothing to do with the => fat comma. If $aref is a reference to an array, one of the notations you can use to dereference that ref, and grab a single element is to use the dereference operator ->, like this: $aref->[3]. That's the same as:  ${$aref}[3], and a lot less ambiguous than something like $$aref[3].

As Zaxo has stated, you should have a look at perlsyn, perlop, and perlreftut.


Dave