UP | HOME

Perl Tips

1. Basic

  my @myarray = ();
  push @myarray,"a";
  my @keys = qw(a b c);
  my @vals = (1, 2, 3);
  my %hash;
  @hash{@keys} = @vals;

2. Loop

  # loop elements in itemArray1 and itemArray2
  foreach my $item (@itemArray1, @itemArray2) {
    ...
  }

  while ( my ($key, $value) = each(%hash) ) {
    print "$key => $value\n";
  }

3. Sub

  sub prepare_sth {
    my $param = shift;  # means shift @_, @_ is param array
    # my $param = $_;   # when could use $_ ??
  }
  sub uniq {
    @list = shift;
    %seen = ();
    @uniqu = grep { ! $seen{$_} ++ } @list;
  }

4. Data Structure

4.1. AoA

from book

  ### Assign a list of array references to an array.
  @AoA = (
           [ "fred", "barney" ],
           [ "george", "jane", "elroy" ],
           [ "homer", "marge", "bart" ],
  );
  print $AoA[2][1];   # prints "marge"

  ### Create an reference to an array of array references.
  $ref_to_AoA = [
      [ "fred", "barney", "pebbles", "bamm bamm", "dino", ],
      [ "homer", "bart", "marge", "maggie", ],
      [ "george", "jane", "elroy", "judy", ],
  ];

  print $ref_to_AoA->[2][3];   # prints "judy"

Remember that there is an implied -> between every pair of adjacent braces or brackets. (Simply saying, -> indicates a reference which created via []).

Therefore these two lines:

  $AoA[2][3]
  $ref_to_AoA->[2][3]

are equivalent to these two lines:

  $AoA[2]->[3]
  $ref_to_AoA->[2]->[3]

5. References