perl

warnの挙動を変更する

不要なwarnがダラダラと出力されてしまうので、スコープ内に限ってoffにできないかと探したところ、dankogaiさんのBlog発見! http://blog.livedoor.jp/dankogai/archives/50807680.html こんな感じでスコープに限って、offにできる。 do { local $SIG{__WAR…

Cache::Memcached::Fastでexpireせず

setメソッドの第3引数(expiration time)にReadonlyな変数をセットすると、なぜかexpireしないというbugに当たって、えらく苦労したのでそのまとめ。 再現方法 試したバージョンは以下の通り。 memcached 1.2.6 Cache::Memcached::Fast 0.14 ローカルの11211…

フッタ追加をワンライナーで

相当数のhtmlに一撃でフッタを追加したかったので、ワンライナーでやってみた。 find . -name '*.html' | xargs perl -pi -e 's#(\s*)</body>#\%include:footer\%$/$1</body>#g;' 【訂正】 $/は標準入力の区切り文字でUNIX環境だとLFになるらしい。なんかものすごい勘違い…

Test::mysqld

DBを使ったテストがちゃんとできてないよねー、という自覚あったので遅ればせながらTest::mysqldを使いだしてみる。 で、インストールでものすごくハマってしまい、Test::mysqldからmysqldが起動しない事態に陥り延々悩む。起動スクリプト(/etc/init.d/mysql…

PSGI/Plackに挑戦

CGI/FastCGIの仕組みがわかり、ようやくPlackにチャレンジ。 インストール これでPlack関連のモジュールをまとめてinstallできる。 cpanm Task::Plack Hello PSGI! まずはPSGIの基本形をやろう、ということで以下のコードリファレンスをhello.psgiとして保存…

perlbrew + cpanm - モダンなPerl開発環境

cpanmを使ってlocalなlibにモジュールインストールする方法は既に採用済みだったが、さらに押し進めてperlbrew + cpanmにしてみる。もちろん元ネタはtokuhiromさんのYAPC::Asia 2010のトークであることは言うまでもないw perlbrew インストール デフォルトで…

正規表現$1,$2,$3...

evalしたときの$@とは違い、マッチしたごとに上書きはされないので注意! my $date; $date = '2010-10-13'; $date =~ m/^(\d{4})-(\d{2})-(\d{2})$/; print join(q{,}, $1,$2,$3), "\n"; $date = undef; $date =~ m/^(\d{4})-(\d{2})-(\d{2})$/; print join(…

Data::Util

Data::Utilはデータの型チェックに使えるUtility。List::MoreUtilsと合わせ技すると強力かな。 use Data::Util qw(:check); use List::MoreUtils qw(all); check(+{test=>1}, [1,2,3], 1); sub check { my @args = @_; unless (all { is_hash_ref($_) || is_…

localtimeとgmtime

いまさらすぎ感たっぷりだけど調べてみた。 perldoc -f time time Returns the number of non-leap seconds since whatever time the system considers to be the epoch, suitable for feeding to "gmtime" and "localtime". On most systems the epoch is 0…

FormValidator::Simple

はじめて使ってみた(正確にはラッパーは使ったことはあるけども)。最初の見た目がゴツかったが使ってみれば便利〜。 use FormValidator::Simple; my $params = +{ param1 => '12345', param2 => 'abcdefg', param3 => undef, mail1 => 'test@example.com',…

Time::Piece

最近はDateTimeばかり使ってたので、Time::Pieceを思い出してみる。 perl -MTime::Piece -MTime::Seconds -le 'my $t=localtime; $t -= 3600; printf "%s %s\n", $t->ymd, $t->hms' # 2010-10-05 23:41:05 最初使った時はよくわかんなかったけど、使いやすい…

AnyEvent::IRCを試す

IRCでbot動かすために使えるモジュールをざっと調べてみたところ、Net::IRC, Bot::BasicBot, POE::Component::IRC, AnyEvent::IRC::Clientあたりが使えそう。時代はAnyEventってことで、AnyEvent::IRC::Clientを使ってnickname++したら、その数を覚えておい…

DBIの使い方

いつまで経ってもDBIの使い方が覚えられない..(特にselectall_arrrayrefとか)。この機にちゃんとアタマを整理して身につけちゃいたい。 例によってMySQLのサンプルデータ使ってやってみる。まずは準備から。 #!/usr/bin/perl use strict; use warnings; us…

AnyEvent

イベント駆動プログラミングのためのツールキットAnyEventをWeb+DB Vol59のAnyEventの記事読みながら試してみる。 WEB+DB PRESS Vol.56作者: 赤松祐希,紀平拓男,牧大輔,西林孝,中島聡,中島拓,角田直行,はまちや2,舘野祐一,きしだなおき,和田裕介,伊藤直也,大…

Tie::Hash

ハッシュをタイする時に便利なのがTie::Hashモジュール This module provides some skeletal methods for hash-tying classes. そもそもハッシュをtieする時ってどんなシーン?ということでperltieを調べてみると perltie - how to hide an object class in …

Template-Toolkit

Class::DBIに引き続き、温故知新な感じです。Template-Toolkitを使ったことがないのはperlのレベルアップを目指す者としてまずかろうということで触ってみました。Web+DB Pressのvol9のPerlStyleに出てくるコードを参考にしてます。 WEB+DB PRESS Vol.9作者:…

Class::DBI

O/Rマッパーといえば、DBIx::Classがファーストチョイスなのかもしれないが、そもそもperlでO/Rマッパーを使ったことがないので、古きを知るという意味でClass::DBIにトライ。MySQLが手元に入ってなかったので、そこから。データはMySQLのworldデータベース…

Plagger

いまさらながら、Plagger使ってみる。(いまさらというと失礼だけども) Plaggerの概要については以下が分かりやすかった。 Plaggerとは何ぞや – suVeneのアレ Elementary, ... Googleで「はらへった」と検索するとピザが届くようにするまで 説明するのも憚…

CPAN::Packager

cpanmで事足りているのだけれど、使い勝手を知っておきたくて使ってみた。 CPAN::Packager 0.072 released ! - dann's blog - dann's portal configで依存関係の修正ができるので、cpan2rpmより便利そう。 yamlはとりあえずhttp://github.com/dann/p5-cpan-p…

Statistics@CPAN

使えそうなものをCPANから探してみた。 Statistics::Distributions インタフェースわかりづらく、2003から更新止まってるので、NG Statistics::Descriptive mean, median, modeやleast_squares_fitがあるので、基本的なことはこれでまかなえる。 Statistics:…

CPANの設定

現時点ではcpamを使うのがベストプラクティスなので、cpanmを使ってみる - kotaroito's notesに書いた方法を使っている。が、cpanシェルの動きも知っておきたいのでごにょごにょやってみる。まず、ローカルパスにインストールするための設定から。 export MO…

インストール済モジュールのリスト

きっと同じようなことをやってる人がいるだろうと思って、ググってみた。 http://subtech.g.hatena.ne.jp/otsune/20060808/cpanbundle http://it.kndb.jp/entry/show/id/2524 などを発見! @INCを辿る find `perl -e 'print "@INC"'` -name '*.pm' -print pe…

cpanmを使ってみる

cpanmがイイ!という話をいくつかの記事で目にしたので試してみたい。 cpanmをインストール wget http://cpanmin.us/ chmod +x cpanm perl cpanm -l ~/perl5 App::cpanminus 簡単すぎ! 設定 まずはCPANの設定が必要。これはcpanシェル起動して適当に答えて…

RPM Packager

たくさんのサーバを同じ環境に保つためには、マシン1台ずつcpan installは現実的じゃなく、RPMにしてyum installするのが吉。CPANからRPMつくる方法は cpan2rpm flute などがあるみたいだけど、どうやらcpan2rpmのほうがメジャーな様子。ということでローカ…

はじめてのYAML

恥ずかしながらYAMLのことをあまり知らないまま使っていたので、一から調べてまとめてみる。 YAMLとは YAML Ain't Markup Languageで、 YAML is a human friendly data serialization standard for all programming languages. ヒューマンフレンドリーなデー…

last committerを取得する

ある条件を満たすスクリプト(大量)のラストコミッタが知りたいと思ったが、Linuxコマンドだけでは難しそう。 ということで、スクリプト書いてみた。 last_committer.pl #!/usr/bin/perl use strict; use warnings; use XML::Simple; while (<>) { chomp; n…

モジュールをyumからインストール

開発環境だとcpanコマンドを使うのが便利ですが、yumリポジトリから入れてみます。準備はCentOSリポジトリで終わっているので、あとは簡単。 例1: JSONをdagリポジトリから yum search perl-JSON --enablerepo=dag yum install perl-JSON --enablerepo=dag …

How to use perldoc

全然使いこなせてないので、せめて基本的な使い方だけでもアタマに叩き込む モジュールドキュメントを読む perldoc Encode 組み込み関数について調べる perldoc -f sprintf ソースを読む perldoc -m Encode 全体目次を読む perldoc perl FAQを探す perldoc -…

Perlベストプラクティス - その1

Perlベストプラクティス作者: Damian Conway,クイープ出版社/メーカー: オライリー・ジャパン発売日: 2006/08/24メディア: 大型本購入: 10人 クリック: 140回この商品を含むブログ (151件) を見るを読んで初めて知ったこと、役に立つと思ったことをまとめて…

List::Util, List::MoreUtils

Perl Best PracticeにList::Utilモジュールを使ったほうがいいよん、と書かれていたので試してみる。 ベンチマーク 効率よく実装されているとのことなので、ベンチマークしてみる。 とりあえず最大値。 use Benchmark qw(:all); use List::Util qw(max reduc…