X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlreftut.pod;h=bbcc179cca8fcaadda162707db12579da5b8ab7c;hb=4e9dada01dea61250de18f52c49ec01866133705;hp=926d232de5a86c1455c66fd8e50051017bbfcd78;hpb=a29d1a25ab4477ba560380bb2d146b6d2e44cedf;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlreftut.pod b/pod/perlreftut.pod index 926d232..bbcc179 100644 --- a/pod/perlreftut.pod +++ b/pod/perlreftut.pod @@ -120,7 +120,7 @@ variable first. B C<[ ITEMS ]> makes a new, anonymous array, and returns a reference to -that array. C<{ ITEMS }> makes a new, anonymous hash. and returns a +that array. C<{ ITEMS }> makes a new, anonymous hash, and returns a reference to that hash. $aref = [ 1, "foo", undef, 13 ]; @@ -171,10 +171,10 @@ Arrays: On each line are two expressions that do the same thing. The -left-hand versions operate on the array C<@a>, and the right-hand -versions operate on the array that is referred to by C<$aref>, but -once they find the array they're operating on, they do the same things -to the arrays. +left-hand versions operate on the array C<@a>. The right-hand +versions operate on the array that is referred to by C<$aref>. Once +they find the array they're operating on, both versions do the same +things to the arrays. Using a hash reference is I the same: @@ -332,6 +332,13 @@ structure will look like this: We'll look at output first. Supposing we already have this structure, how do we print it out? + 8 foreach $country (sort keys %table) { + 9 print "$country: "; + 10 my @cities = @{$table{$country}}; + 11 print join ', ', sort @cities; + 12 print ".\n"; + 13 } + C<%table> is an ordinary hash, and we get a list of keys from it, sort the keys, and loop over the keys as usual. The only use of references is in line 10. @@ -349,7 +356,7 @@ Having gotten the list of cities, we sort it, join it, and print it out as usual. Lines 2-7 are responsible for building the structure in the first -place; here they are again: +place. Here they are again: 2 while (<>) { 3 chomp; @@ -420,7 +427,7 @@ other references. =item * -In B, you can omit the curly brackets whenever the thing +In B, you can omit the curly brackets whenever the thing inside them is an atomic scalar variable like C<$aref>. For example, C<@$aref> is the same as C<@{$aref}>, and C<$$aref[1]> is the same as C<${$aref}[1]>. If you're just starting out, you may want to adopt @@ -446,11 +453,11 @@ initialized with the contents of the array referred to by C<$aref1>. Similarly, to copy an anonymous hash, you can use - $href = {%{$href}}; + $href2 = {%{$href1}}; =item * -To see if a variable contains a reference, use the `ref' function. It +To see if a variable contains a reference, use the C function. It returns true if its argument is a reference. Actually it's a little better than that: It returns C for hash references and C for array references. @@ -472,7 +479,9 @@ C<==> instead because it's much faster.) You can use a string as if it were a reference. If you use the string C<"foo"> as an array reference, it's taken to be a reference to the -array C<@foo>. This is called a I or I. +array C<@foo>. This is called a I or I. The declaration C disables this +feature, which can cause all sorts of trouble if you use it by accident. =back @@ -492,7 +501,7 @@ to do with references. =head1 Credits -Author: Mark-Jason Dominus, Plover Systems (C) +Author: Mark Jason Dominus, Plover Systems (C) This article originally appeared in I ( http://www.tpj.com/ ) volume 3, #2. Reprinted with permission. @@ -503,12 +512,8 @@ The original title was I. Copyright 1998 The Perl Journal. -When included as part of the Standard Version of Perl, or as part of -its complete documentation whether printed or otherwise, this work may -be distributed only under the terms of Perl's Artistic License. Any -distribution of this file or derivatives thereof outside of that -package require that special arrangements be made with copyright -holder. +This documentation is free; you can redistribute it and/or modify it +under the same terms as Perl itself. Irrespective of its distribution, all code examples in these files are hereby placed into the public domain. You are permitted and