でばぐめ -IT技術メモ- -7ページ目

でばぐめ -IT技術メモ-

主にハードウェア/ソフトウェアのプログラミングに関するブログです。


Perlでリスト内の同じ値を取り除きたい場合は、ハッシュを使えば簡単にできます。


my @array = qw(a b a d d d c);

my %hash = ();

foreach (@array) {
$hash{$_}++;
}

my @unique = keys %hash;


foreach 内の $hash{$_}++ は 重複をカウントしていますが、$hash{$_}=1 で重複をカウント
しなくてもよいですね。

重複を取り除く方法は、perlfaq に、いくつか方法が記載されています。

%perldoc -q duplicate


mapを用いた方法

my %hash = map { $_, 1 } @array;
my @unique = keys %hash;


ハッシュスライスを用いた方法

my %hash;
@hash{ @array } = ();
my @unique = keys %hash;

foreachを用いた方法

$hash{$_} = 1 foreach ( @array );
my @unique = keys %hash;


grepを用いた方法

my %hash = ();
my @unique = grep { ! $hash{ $_ }++ } @array;


普段 perlfaqをみることはなく、すぐGoogle検索に頼ってしまうのですが、
perlfaqは色々なノウハウが詰まっていることを改めて感じました。


関連書籍

初めてのPerl 第5版/Randal L. Schwartz

¥3,780
Amazon.co.jp

初心者にもわかりやすく書かれていますが、
全くの初心者というより、少しPerlに慣れてきた時に威力を発揮する本です。
簡単なテキスト操作のためにPerlを使用するのであれば十分事足ると思います。

プログラミングPerl〈VOLUME1〉/ラリー ウォール

¥5,565
Amazon.co.jp

ページ数も多く、価格もそれなりなので、Perlについて詳しく知りたい人向けです。
"初めてのPerl"と重複する箇所も多々あるので、これからがっちりPerlを身につけたい人は
こちらをおすすめします。

Perlではオートインクリメント演算子(++)を用いて、Cのインクリメント演算子と同じように
スカラー演算子に1を加えます。

変数名の前に++演算子を置いたプリインクリメントの場合、まず変数に1を加えてから、その値を
取り出します。

my $a = 5;
my $b = ++$a; # $aに1を足した後、$bに代入する ($a=6, $b=6)


変数名の後ろに++演算子を置いたポストインクリメントの場合、まず変数の値を取り出してから、
次に変数に1を加えます。

my $a = 5;
my $b = $a++; # $aを$bに代入してから、$aに1を足す ($a=6, $b=5)


ハッシュとオートインクリメント演算子を用いて、リスト内の値の出現回数をカウントできます。

my @words = qw(a b a d d d c);
my %hash = ();

foreach (@words) {
$hash{$_}++;
}

foreach (sort keys %hash) {
print "$_ => $hash{$_}\n";
}


結果は下のようになります。

a => 2
b => 1
c => 1
d => 3


関連書籍

初めてのPerl 第5版/Randal L. Schwartz

¥3,780
Amazon.co.jp

初心者にもわかりやすく書かれていますが、
全くの初心者というより、少しPerlに慣れてきた時に威力を発揮する本です。
簡単なテキスト操作のためにPerlを使用するのであれば十分事足ると思います。

プログラミングPerl〈VOLUME1〉/ラリー ウォール

¥5,565
Amazon.co.jp

ページ数も多く、価格もそれなりなので、Perlについて詳しく知りたい人向けです。
"初めてのPerl"と重複する箇所も多々あるので、これからがっちりPerlを身につけたい人は
こちらをおすすめします。

Amazonなどのネット書店で本を購入した際、自分の想像した内容と違うなど、
失敗した経験はないでしょうか?

ネット書店での本の購入は人によってさまざまだと思います。
・本屋で立ち読みして購入
・目次と概要だけで判断して購入
・ランキングや口コミで判断して購入
・ジャケ買い
などなど。

今後、ネット購入での失敗を少なくしてくれそうなサービスが、Googleブックスです。

まだベータ版で、登録書籍数は少ないようですが、Googleブックスを利用すると
立ち読み程度の内容が見れます。限定表示の書籍でも、かなりのページ数が読めます。

$でばぐめ

専門書は、評判がよくても自分のレベルに合わなかったりすることがよくあるため、
今後の登録書籍増加に期待します。

オライリーの書籍は、多数登録があり、うれしい限りです。