use strict;
use warnings;
# コンテキスト(代表的ハマりポイント!!!!)
my @hoge = (3, 0, 1, 2);
my ($ans) = @hoge;
print $ans."\n"; #3 配列へ代入すると0番目のみ代入される
my $ans2 = @hoge;
print $ans2."\n"; #4 配列はスカラコンテキストでで評価すると長さが返される。
print $#hoge."\n"; #4 末尾の添字が表示されます
## 配列の操作
#my @array = ('a', 'b', 'c', 'd');
#### 記号の使い方!!!!!
### リファレンスの取得作成(配列)
my @x = (1, 2, 3);
my $ref_x1 = \@x;
# 略記
my @ref_x2 = [1, 2, 3];
my $ref_x3 = [@x];
### デリファレンス(配列)
my $ref_x = [1, 2, 3];
print $ref_x->[0]."\n";
my @new_x = @$ref_x; # 記号に注意!!!
#print @new_x->[0]."\n"; Can't use an array as a reference at main.pl
print $new_x[0]."\n";
### リファレンスの取得/作成 (ハッシュ)
my %y = (
perl => 'larry',
ruby => 'matz',
);
my $ref_y1 = \%y;
# 略記
my $ref_y2 = {
perl => 'larry',
ruby => 'matz',
};
### デリファレンス(ハッシュ)
my $ref_y = {
perl => 'larry',
ruby => 'matz',
};
print $ref_y->{perl}."\n"; # larry
my %new_f = %$ref_y;
print $new_f{perl}."\n"; #larry
## リファレンス/デリファレンスを扱う上で...
# 悪い例
my @foo = (1, 2, 3);
my %foo = (a => 1, b => 2, c => 3);
# $foo[1], $foo{a}
# 同じ変数を参照しているように見えるが、実際は違う変数です
## なので!! 基本的にリファrンス以外使わない(ハマりにくい)
# 必要な時だけデリファレンスする
my $list = [1, 2, 3];
push @$list, 10;
print $list->[3]."\n"; # 10
More than 5 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
List of users who liked
01