サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
blog.livedoor.jp/tetryl
その定義を初めて知った時は 何のために存在するのか全く意味が分からず それから10年以上経った今でも 一度も使った事がなかった。 それがこんな身近に、しかも実用的な例があったなんて! sub shuffle (@) { my @a=\(@_); my $n; my $i=@_; map { $n = rand($i--); (${$a[$n]}, $a[$n] = $a[$i])[0]; } @_; }う、美しすぎる・・・(笑) 一時変数を使わず、リストのスライスで 値を返すテクニックが霞んで見えます。 より一般的と思われるインデックスアクセスへ 関数を書き換えて、試しにベンチを取ってみた。 use strict; use List::Util (); use List::Util::PP (); use Benchmark; sub shuffle (@) { my @i=0..$#_;
push %hash, key => "value"; push %hash, @ary; みたいに、ハッシュに対してもpush()を使えたら便利じゃないだろうか。とりあえず以下のコードで期待通りに動くはず。 use subs qw(push); sub push (\[@%]@) { my $targ = shift; my $type = ref $targ; if ($type eq 'ARRAY') { CORE::push @$targ, @_; } elsif ($type eq 'HASH') { while (my ($k, $v) = splice @_, 0, 2) { $targ->{$k} = $v; } } }
このページを最初にブックマークしてみませんか?
『blog.livedoor.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く