References and nested data structures
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

References and nested data structures

  • 549 views
Uploaded on

This is the eighth set of slightly updated slides from a Perl programming course that I held some years ago. ...

This is the eighth set of slightly updated slides from a Perl programming course that I held some years ago.
I want to share it with everyone looking for intransitive Perl-knowledge.
A table of content for all presentations can be found at i-can.eu.
The source code for the examples and the presentations in ODP format are on https://github.com/kberov/PerlProgrammingCourse

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
549
On Slideshare
549
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Perl Programming Course References and nested data structuresKrassimir BerovI-can.eu
  • 2. Contents1. What are references?2. Reference types3. Creating references4. Using references5. Reference interpolation
  • 3. What are references?• A piece of data that tells us the location of another piece of data• A reference is a scalar value that refers to an array or a hash (or to just about anything else).• References are the way to implement complicated data structures in Perl• References are like pointers that know what they point to
  • 4. Reference types• Builtin types include: SCALAR ARRAY HASH CODE REF GLOB LVALUE FORMAT IO VSTRING Regexp
  • 5. Reference types• Most used: SCALAR – reference to scalar ARRAY – reference to array HASH – reference to hash CODE – reference to anonymous sub
  • 6. Creating references• Just two ways to make a reference 1. By putting a in front of a variable $aref = @array; # $aref - reference to @array $href = %hash; # $href - reference to %hash $sref = $scalar; # $sref - reference to $scalar 2. [ITEMS] makes a new, anonymous array, {ITEMS} makes a new, anonymous hash $aref = [ 1, "foo", undef, 13 ]; # $aref now holds a reference to an array $href = { APR => 4, AUG => 8 }; # $href now holds a reference to a hash
  • 7. Using references• Just two ways to use references 1. Use curly braces preceded with the sigil of the variable you refer to @{$aref}; # An array reverse @{$aref}; # Reverse the array ${$aref}[3]; # An element of the array ${$aref}[3] = 17; # Assigning an element %{$href}; # A hash keys %{$href}; # Get the keys from the hash ${$href}{red} # An element of the hash ${$href}{red} = 17; # Assigning an element
  • 8. Using references (2)• Just two ways to use references 2. Use the arrow operator to access elements ● In between two subscripts, the arrow is optional. @$aref; # An array reverse @$aref; # Reverse the array $aref->[3]; # An element of the array $aref->[3] = 17; # Assigning an element $aref->[0]->[2] can be written as $aref->[0][2] %$href; # A hash keys %$href; # Get the keys from the hash $href->{red} # An element of the hash $href->{red} = 17; # Assigning an element $href->{green}->{leaf} can be written as $href->{green}{leaf}
  • 9. Using references• Example: my $self = { name =>Krassi, family_name => Berov, children =>[qw|Maria Pavel Viktoria|], favorite_things =>{ } }; print "Hello! I am $self->{name} $self->{family_name}" print I have . scalar @{$self->{children}} . children.; print They are named: . map {$_ . "n"} @{$self->{children}}; #see using.pl for more
  • 10. Using references• Example: my $self = { name =>Krassi, family_name => Berov, children =>[qw|Maria Pavel Viktoria|], favorite_things =>{ } }; print "Hello! I am $self->{name} $self->{family_name}" print I have . scalar @{$self->{children}} . children.; print They are named: . map {$_ . "n"} @{$self->{children}}; #see using.pl for more
  • 11. Reference interpolation• Example: my @pets = qw|Goldy Amelia Jako|; my $self = { name =>Krassi, family_name => Berov, can => sub { return shift }, pets => @pets, children =>[qw|Maria Pavel Victoria|], }; print <<TXT; Hello! I am $self->{name} $self->{family_name}. I can ${$self->{can}(talk)}. My first child is $self->{children}[0]. My last child is $self->{children}[-1]. I do not have a pet named $self->{pets}[1]. TXT
  • 12. References and nested data structures• Resources • perlreftut • perllol • perldsc • perlref • Beginning Perl (Chapter 7 – References)
  • 13. Referencesand nested data structuresQuestions?