diff options
author | Tels <nospam-abuse@bloodgate.com> | 2005-12-29 19:01:42 +0100 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2005-12-29 17:32:21 +0000 |
commit | 91ee910908135fa548f2069df82ad67a70375e02 (patch) | |
tree | d9f0747ab5054ff3dd2c6b278ef50664ff2153e5 /pod | |
parent | eb86f8b30b3c669d547a1d9008e5860ab483ae2d (diff) | |
download | perl-91ee910908135fa548f2069df82ad67a70375e02.tar.gz |
$a = \$a oddity
Message-Id: <200512291802.00742@bloodgate.com>
plus trim some whitespace
p4raw-id: //depot/perl@26528
Diffstat (limited to 'pod')
-rw-r--r-- | pod/perlreftut.pod | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/pod/perlreftut.pod b/pod/perlreftut.pod index e55e4d5308..82ad80e3a6 100644 --- a/pod/perlreftut.pod +++ b/pod/perlreftut.pod @@ -20,7 +20,7 @@ Fortunately, you only need to know 10% of what's in the main page to get One problem that came up all the time in Perl 4 was how to represent a hash whose values were lists. Perl 4 had hashes, of course, but the -values had to be scalars; they couldn't be lists. +values had to be scalars; they couldn't be lists. Why would you want a hash of lists? Let's take a simple example: You have a file of city and country names, like this: @@ -101,6 +101,7 @@ reference to that variable. $aref = \@array; # $aref now holds a reference to @array $href = \%hash; # $href now holds a reference to %hash + $sref = \$scalar; # $sref now holds a reference to $scalar Once the reference is stored in a variable like $aref or $href, you can copy it or store it just the same as any other scalar value: @@ -122,10 +123,10 @@ C<[ ITEMS ]> makes a new, anonymous array, and returns a reference to that array. C<{ ITEMS }> makes a new, anonymous hash, and returns a reference to that hash. - $aref = [ 1, "foo", undef, 13 ]; + $aref = [ 1, "foo", undef, 13 ]; # $aref now holds a reference to an array - $href = { APR => 4, AUG => 8 }; + $href = { APR => 4, AUG => 8 }; # $href now holds a reference to a hash @@ -267,7 +268,7 @@ two-dimensional array; you can write C<< $a[ROW]->[COLUMN] >> to get or set the element in any row and any column of the array. The notation still looks a little cumbersome, so there's one more -abbreviation: +abbreviation: =head2 Arrow Rule @@ -314,7 +315,7 @@ structure will look like this: %table - +-------+---+ + +-------+---+ | | | +-----------+--------+ |Germany| *---->| Frankfurt | Berlin | | | | +-----------+--------+ @@ -381,7 +382,7 @@ C<{$table{$country}}>. The C<push> adds a city name to the end of the referred-to array. There's one fine point I skipped. Line 5 is unnecessary, and we can -get rid of it. +get rid of it. 2 while (<>) { 3 chomp; @@ -436,11 +437,11 @@ the habit of always including the curly brackets. This doesn't copy the underlying array: - $aref2 = $aref1; + $aref2 = $aref1; -You get two references to the same array. If you modify +You get two references to the same array. If you modify C<< $aref1->[23] >> and then look at -C<< $aref2->[23] >> you'll see the change. +C<< $aref2->[23] >> you'll see the change. To copy the array, use @@ -454,14 +455,14 @@ Similarly, to copy an anonymous hash, you can use $href2 = {%{$href1}}; -=item * +=item * To see if a variable contains a reference, use the C<ref> function. It returns true if its argument is a reference. Actually it's a little better than that: It returns C<HASH> for hash references and C<ARRAY> for array references. -=item * +=item * If you try to use a reference like a string, you get strings like @@ -503,7 +504,7 @@ to do with references. Author: Mark Jason Dominus, Plover Systems (C<mjd-perl-ref+@plover.com>) This article originally appeared in I<The Perl Journal> -( http://www.tpj.com/ ) volume 3, #2. Reprinted with permission. +( http://www.tpj.com/ ) volume 3, #2. Reprinted with permission. The original title was I<Understand References Today>. |