More Related Content
Similar to 私がPerlを使う理由 (20)
More from Yohei Azekatsu (8)
私がPerlを使う理由
- 3. 私がPerlを使う理由
• 最初に触った言語(1998年頃、大学生のとき)
• もしかしたら、JavaScript のほうが先だったかも。。。
• どこでも使える
• Perl は Oracle Database (10g以降) に同梱されているのでWindows でも使
える
• 自由にソフトウェアをインストールできない環境で仕事をすることがあり
ます
• 私の記憶力が悪い
• awk、sed、grep などの正規表現の書き方などをそれぞれ覚えれない。
• awk、sed、grep でできることはだいたい Perl でできる(たぶん)ので、
Perl に絞ると覚えることを減らせる。
• 便利なライブラリがたくさんある
• CPAN(Comprehensive Perl Archive Network)と呼ばれる巨大なアーカイブ
に便利なライブラリがたくさんあります
• システムプログラミングができる
- 5. CPU使用率を 100% にする Perl ワンライナー(2)
• CPUコアが4つの場合
$ for i in {1..4}
do
perl -e 'while(1){}' &
done
- 7. 「ORA-」メッセージを番号別に集計する(2)
$ perl -nle 'BEGIN{%h=();}/(ORA-[0-9]+)/ and
$h{$1}++;END{map{print "$_:$h{$_}"} keys %h;}' alert_orcl.log
↓実行結果
ORA-00001:15 Perlのみで書いてみると
ORA-01400:20
ORA-12899:7
...
- 8. V$SYSSTAT から特定のデータベース統計情報の差
分を出す Perl ワンライナー
$ perl -F, -lane '/global cache blocks lost/ and
printf(qq/%s,%sn/,$F[0],$F[2]-$tmp) and $tmp=$F[2]' sysstat.log
↓実行結果
0904235511,0
0904235541,1
0904235611,0
0904235642,3
0904235712,0
0904235742,5
0904235813,0
0904235843,0
- 10. 再帰的にファイル名に接頭辞をつける
↓実行前
$ find .
./a/bar.txt CPANモジュールのFile::Findを使って、find
./a/foo.txt コマンドに似たことをしている
↓実行
$ perl -MFile::Find -e 'find sub{rename($_,"prefix_$_") if -f},
@ARGV' .
↓実行後
$ find .
./a/prefix_bar.txt
./a/prefix_foo.txt
- 17. そんなときは -MO=Deparse でスクリプト化
$ perl -MO=Deparse -wnle 'BEGIN{%h=();}/(ORA-[0-9]+)/ and
$h{$1}++;END{map{print "$_:$h{$_}"} keys %h;}' alert_orcl.log
BEGIN { $^W = 1; }
BEGIN { $/ = "n"; $ = "n"; }
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
sub BEGIN {
(%h) = ();
}
++$h{$1} if /(ORA-[0-9]+)/;
sub END {
map {print "${_}:$h{$_}";} keys %h;
}
;
}
-e syntax OK