Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

配列の添字代入

プログラミング言語Rubyを読みつつ、初めてのRubyも読み返したりして、Ruby面白!状態だけど、たまにPerlをかまってあげたくなる不思議。
今日もおや?、と思うところあったので、メモ。

配列の添え字代入

要素数 左辺 < 右辺


Rubyの場合。1.9.2。

ary = [ 'a', 'b', 'c', 'd', 'e', 'f' ]

ary[0..2] = [ 'g', 'h', 'i', 'j', 'k' ]

p ary #=> ["g", "h", "i", "j", "k", "d", "e", "f"]

左辺の添え字が[0]〜[2]までの「3つの要素」に、「5つの要素」をもつ配列オブジェクトをいれると、「3」が「5」に拡張されるマジック。
splat演算子はなくても展開されてるみたいだ。


Perlの場合。

my @ary = ('a', 'b', 'c', 'd', 'e', 'f');

@ary[0..2] = ('g', 'h', 'i', 'j', 'k');

say "@ary"; #=> g h i d e f

左辺で「3」つなら、右辺からも「3」つしか受け取らない。

要素数 左辺 > 右辺

Rubyの場合。

ary = [ 'a', 'b', 'c', 'd', 'e', 'f' ]

ary[0..3] = [ 'g', 'h' ]

p ary #=> ["g", "h", "e", "f"]

まさかの切り詰め!!!


Perlの場合。

my @ary = ('a', 'b', 'c', 'd', 'e', 'f');

@ary[0..3] = ('g', 'h');

say "@ary"; #=> g h   e f

#=> "g", "h", undef, undef, "e", "f"

左辺が「4」つなら、右辺から強引にでも「4」つもらいます!!!



慣れてるからかPerlの方が自然に感じるかな。