Skip to content

Instantly share code, notes, and snippets.

@Code-Hex
Created November 14, 2014 03:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Code-Hex/b9b9359a3c93498dd511 to your computer and use it in GitHub Desktop.
Save Code-Hex/b9b9359a3c93498dd511 to your computer and use it in GitHub Desktop.
perl でライブラリを作ってみた。(多分随時更新)
use strict;
use warnings;
sub into(\@$$);
sub onto(\@$$);
sub into(\@$$){
my $i = 0;
my @new_array; # 新しい配列
my @before_array = @{$_[0]}; # 参照渡しされた配列を代入
my $before_array_size = @before_array; # その配列のサイズ
my ($insert_number, $insert_frase) = ($_[1], $_[2]); # 挿入する番号、挿入するもの
# もし、元の配列の要素数より、挿入する番号が大きい場合、
# 挿入する番号を要素数と等しくする。
$insert_number = $before_array_size if($before_array_size < $insert_number);
for (; $i < $insert_number; $i++){
# 元の配列の先頭要素から予備の配列に代入していく
$new_array[$i] = shift @before_array;
}
$new_array[$i] = $insert_frase; # $i = $insert_number
push @new_array, @before_array;
return @new_array;
}
sub onto(\@$$) {
my $i = 0;
my @new_array; # 新しい配列
my @sub_array; # 予備の配列
my @before_array = @{$_[0]}; # 参照渡しされた配列を代入
my $before_array_size = @before_array; # その配列のサイズ
my ($insert_number, $insert_frase) = ($_[1], $_[2]); # 挿入する番号、挿入するもの
# もし、元の配列の要素数より、挿入する番号が大きい場合、
# 挿入する番号を要素数と等しくする。
$insert_number = $before_array_size if($before_array_size < $insert_number);
for (; $i < $insert_number; $i++){
# 元の配列の最後の要素から予備の配列に代入していく
$sub_array[$i] = pop @before_array; # @sub: [9,8,7..]
}
@new_array = reverse @sub_array; # @new: [..7,8,9]
$before_array[$before_array_size - $i] = $insert_frase;
unshift @new_array, @before_array;
return @new_array;
}
1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment