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

Learn to Live and Live to Learn

ITに関する記事を読んで,考えて,使ってみたことをまとめる場.読書が好きでnoteに感想を書いています(宣伝)→https://note.mu/a_01

配列の添字

Perl

配列の添字に正の数と0以外を設定した場合の挙動を調べてみました。

  • 負の値を添字に指定すると、添字の中で最大のものを-1に割り当てて、絶対値が大きくなるに連れて配列を逆向き(末尾から先頭)に見ていきます。

例、
要素数3である@fredを使用。
$fred[-1] = $fred[2]
$fred[-2] = $fred[1]
$fred[-3] = $fred[0]

  • 添字の中にアンスコ(_)を書くとアンスコは無視されます。

例、$fred[1_2]は$fred[12]。


上記を確かめるために利用したスクリプトはこちら。
実際はuse strict;を指定してmyとか付けたほうが良いと思います。

#!/usr/bin/perl -w

$fred[0] = "yabba";
$fred[1] = "dabba";
$fred[2] = "doo";

$length = @fred;

print "Array is\n";
for ( $i = 0; $i < $length; $i++ ) {
	print $fred[$i] . "\n";
}

print "\n";

print "\$fred[-1] is\n";
print $fred[-1] . "\n\n";

print "\$fred[-2] is\n";
print $fred[-2] . "\n\n";

print "\$fred[-3.456] = \$fred[-3] is\n";
print $fred[-3.456] . "\n\n";

print "\$fred[1_2] = \$fred[12] is\n";
print $fred[1_2] . "\n";

実行結果

$ perl list.pl 
Array is
yabba
dabba
doo

$fred[-1] is
doo

$fred[-2] is
dabba

$fred[-3.456] = $fred[-3] is
yabba

$fred[1_2] = $fred[12] is
Use of uninitialized value $fred[12] in concatenation (.) or string at list.pl line 27.

$

おまけ
そもそもリストと配列の違いって普段あまり意識しないのですが
(と言いますか私は≒だと思ってました…)

リストは順序付けされたデータのこと。
配列はそのデータ=リストを格納する変数。

と定義されています。