【perl】配列〜要素の数や添え字を調べる〜

#! /usr/bin/perl

use strict;
use warnings;

my @array = (31, 54, 76, 9786);

#配列をスカラーに代入すると、配列の要素数が返る
my $length = @array;
print "$length\n";

#こんな感じ↓で書いちゃっても大丈夫
my @array1 =qw(
	453
	78654
	45
	75621
	siueniue
	noi239gne
	sioineg78654
	s
);

#scalar関数を使っても配列の長さ(要素数)がはかれちゃうよ。
print scalar(@array1),"\n";

#[-1]は配列の一番最後の要素
my $last = $array1[-1];
print $last,"\n"; #出力結果 => s

print "\n";

#配列を前(最初)から数えるときは0から。後ろ(最後)から数えるときは-1から。
print "$array[0]\n";  #出力結果 => 31
print "$array[-4]\n"; #出力結果 => 31

print "\n";

#「$#配列名」を使用。配列の最後の要素の添え字を知りたい(何個の要素があるか知りたい)とき。
print "$#array\n";          #出力結果 => 3 =>つまり、@arrayは[0]から[3]の4つの要素がある。
print $array[$#array],"\n"; #出力結果 => 9786 =>@arrayの一番最後の要素@array[3]の中身が返る。

my @array2; #@array2は空要素

print scalar(@array2),"\n";   #出力結果 => 0 =>空要素。配列の要素数は0個。
print $#array2,"\n";          #出力結果 => -1 =>空要素。配列の一番最後の添え字は-1(つまり@array2[0]のこと)
print $array2[$#array2],"\n"; #出力結果 => エラー =>空要素だから、中身の表示はできない。

print "scalar(@array2)\n";    #出力結果 => scalar() =>()の中は変数展開している。関数はその機能が発揮されてない。

まとめは以下。

・スカラーに配列を代入すると、要素の数が返る。
・「$#配列名」で配列の最後の添え字が返る。
・配列は、前から数えると0から。後ろから数えると-1から。
・""で関数を囲んでもただの文字列。

当然といえば当然の結果を得ているだけだけど、自分でいろいろ実験してみるのが本当におもしろい。