とあるエンジニアの闇歴史帳

コピペで使える便利Wiki ※現在構築中です。

ユーザ用ツール


perl:array_splice

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

perl:array_splice [2017/12/14 20:18]
perl:array_splice [2020/06/23 14:10] (現在)
行 1: 行 1:
 +====== 配列の一部を置換する(splice) - Perl ======
 +~~socialite~~
 +<note important>この記事は2007年05月26日に書かれた物です</note>
 +
 +配列の一部だけを簡単に置換してくれる関数がspliceである。
 +spliceは非常に柔軟であるがために最初はかなりとっつきにくい。その反面、まとめて配列の操作をしたくなった際には心強い味方になってくれる。引数の数によって動作がかなり変わるのでその点をしっかりと押さえておきたい。
 +
 +===== サンプル =====
 +<code perl>
 +#!/usr/bin/perl
 +
 +;#
 +;#spliceの練習
 +;#
 +
 +#-----------------------------#
 +#削除
 +#-----------------------------#
 +@array = (1..5);
 +splice(@array, 3);      #$array[3] ~ $array[$#array]を削除
 +
 +  #○実行結果
 +  #  @array => (1,2);
 +
 +
 +#-----------------------------#
 +#削除(指定箇所)
 +#-----------------------------#
 +@array = (1..5);
 +splice(@array, 1, 3);   #$array[1] ~ $array[3]を削除
 +
 +  #○実行結果
 +  #  @array => (1,5);
 +
 +
 +#-----------------------------#
 +#置換(削除あり)
 +#-----------------------------#
 +@array = (1..5);
 +@list  = (a..c);
 +splice(@array, 1, 3, @list);   #$array[1] ~ $array[3]を削除し、
 +                                #$array[1]の部分から@listを入れる
 +
 +  #○実行結果
 +  #  @array => (1,a,b,c,5);
 +
 +
 +#-----------------------------#
 +#置換(削除なし)
 +#-----------------------------#
 +@array = (1..5);
 +@list  = (a..c);
 +splice(@array, 1, 0, @list); #$array[1]の部分から@listを入れる
 +
 +  #○実行結果
 +  #  @array => (1,a,b,c,2,3,4,5);
 +</code>
 +
 +
 +ちなみに以下に示す、左右の式はいずれも同じ意味を持つ。
 +<code perl>
 +push(@a,$x,$y)        splice(@a,$#a+1,0,$x,$y)
 +pop(@a)                splice(@a,-1)
 +shift(@a)              splice(@a,0,1)
 +unshift(@a,$x,$y)      splice(@a,0,0,$x,$y)
 +$a[$x] = $y            splice(@a,$x,1,$y);
 +</code>
 +~perldocより引用~ 
 +
 +===== 関連書籍 =====
 +{{amazon>jp:4873113148}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:4798139815}}
 +<html><p style="clear:both"></p></html>
 +
 +{{tag>CGI・Perl例文集 Perl 配列 リスト splice}}
 +~~socialite~~
  

関連ページ