「すぐわかるPerl」4.6 配列操作のいろいろ
■変数の交換
変数$aと$bの内容を交換する場合、↓のようにしなくても良い。
$a = $tmp;
$a = $b;
$tmp =$b;
というような中間変数を用いることなく可能。
具体的には
($a,$b)=($b,$a);
これで変数の交換が終了。
これは強力に便利です。
・・・そうなのか?なんか利用法思いつかないや。
配列の要素の交換も同様に可能。@tallの1個目と2個目を変える場合には↓のように書く。
($tall[0],$tall[1]) = ($tall[1],$tall[0])
■最後の要素のアクセス
配列の最初の要素は「$配列名[0]」でアクセスする。
では、最後の要素の場合にはどうなるか?
「@配列名」という配列を作ると、「$#配列名」という最後の要素のインデックスが作成される。
最後の配列は
$配列名=[$#配列名]
となる。
スカラーコンテキスト(4.4章)の場合には、「@配列名」は配列の個数という数値になるので、「$#配列名」は「@配列名-1」に等しくなります。
「$#配列名」は「@配列名-1」
なお、配列のインデックスに府の数を指定すると、配列を後ろからアクセスします。
$配列名[-1]
と書いても、配列の最後の要素にアクセスできます。
$配列名[-2]
とすると、最後から2番目にアクセスできる。
#! c:\perl\bin\perl.exe
# arraytest -- 配列の実験
@move = ("hop","step","jump","slip","down");
print "$move\n";
print "$move[$#move]\n";
print "$move[@move - 1]\n";
print "$move[-1]\n";
print "$move[-2]\n";
というプログラムを実行すると、
C:\Documents and Settings\wada>"C:\Documents and Settings\sironekotoro\デスクトップ\perl
test.pl"
down
down
down
slip
となる。以下解説(オリジナル)。
print "$move\n"; #moveという変数の初期化?
print "$move[$#move]\n"; #配列名@moveの最後の配列
print "$move[@move - 1]\n"; #配列名@moveの最後の配列
print "$move[-1]\n"; #配列名@moveの最後の配列
print "$move[-2]\n"; #配列名@moveの最後から2番目の配列
■メモ
変数は$、scallar
配列は@、array
と覚えてみる。
| 固定リンク
「Perl」カテゴリの記事
- 「すぐわかるPerl」 8.10 ディレクトリのリカーシブ処理(その2)(2009.02.24)
- 「すぐわかるPerl」 8.10 ディレクトリのリカーシブ処理(その1)(2009.02.23)
- 「すぐわかるPerl」 7.6 マッチした文字列と、その前後の文字列を扱う変数(2008.06.17)
- 「すぐわかるPerl」 8.9 コマンドの入出力に入出力を切り替える(2008.11.12)
- 「すぐわかるPerl」 8.8 標準入出力以外のファイルの制御(2008.10.08)









コメント