読者です 読者をやめる 読者になる 読者になる

perl メモ(スカラー、配列、ハッシュ)

#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

{
  # スカラー
  my $scalar = "scalar";
  say $scalar; # scalar

  # 配列
  my @array = ("arr1","arr2");
  say @array; # arr1arr2
  say "@array"; # arr1 arr2

  # $#array は最大の添え字
  say "$array[0], $array[$#array]"; # arr1, arr2

  # スカラコンテキストでは配列のサイズになる
  my $arr_size = @array;
  say $arr_size; # 2

  # 配列に配列を入れても入れ子にはならない
  my @arr = (@array, 1, 2, 3);
  say "@arr"; # arr1 arr2 1 2 3

  # リファレンスを含む配列
  my @ref = (\@array, 1, 2, 3);
  say $ref[0][0]; # arr1
  say $ref[1]; # 1

  # 配列へのリファレンス
  my $arrayref = [\@array, 1, [2, 3]];
  say $arrayref->[0][0]; # arr1
  say $arrayref->[1]; # 1
  say $arrayref->[2][0]; # 2

  # ハッシュ
  my %hash = (
    abc => "hash",
    0 => 1,
  );
  say "$hash{abc} $hash{0}"; # hash 1

  # ハッシュの入れ子(リファレンスを含むハッシュ)
  my %nested = (
        abc => { def => "nested" },
        0 => 1,
    );
  say "$nested{abc}->{def} $hash{0}"; # nested 1
  say "$nested{abc}{def} $hash{0}"; # nested 1 (矢印は省略できる)

  # ハッシュへのリファレンス
  my $hashref = {
    abc => "hashref",
    0 => 1,
  };
  say "$hashref->{abc} $hashref->{0}"; # hashref 1
}
exit;