Like most serious Perl people, CPAN is the main reason I still use Perl after all this time. This huge, wonderful library of Perl code usually helps me avoid reinventing any wheels. On the other hand, the standard CPAN client is one of my most regular hate objects when coding Perl. It’s not that it lacks any features I need, rather the opposite, the damn thing has a million options, and no good de
[追記]その後deprecated(廃止予定)ではなくstrongly discouraged(強く非奨励)に状態が改められたが、使用すべきでないという点は変わらない。[/追記] bleadperlのコミットログを眺めていたところ,以下のような記述があった。 deprecate bytes.pm この件でTwitterで議論が起きたので,Togetterでまとめてみた。 #perl bytes.pmがdeprecatedになった件*1 要点をまとめると以下のようになる。 Perlの文字列モデルを正しく理解していれば,bytes.pmを使う必要はない 入力されたデータををdecode,出力するデータをencodeする,というスタイルを採用すれば,bytes::lengthなどは必要ない たとえば,PSGIの仕様では,encodeした文字列を渡すことになっている decode/encodeが面
コラボレータに加えて貰って、0.04 をさっき id:ikasam_a に ShipIt して頂きました。そのうち cpan コマンド等でインストール出来ると思います。id:ikasam_a++ URI::Template::Restrict なんですが、extract() の処理が process() と同様の厳格なルールになっていて、実際に使う際にちょっと困ってました。 例えば、OpenSocial の RESTful API でありがちそうな以下のような URI Template に対して実際の URI をぶつける例、 #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use URI::Template::Restrict; my $t = URI::Template::Restrict->new(
$. と <> と for と while forでは$.はカウントされない ちょっと違うので横から。 これはforの動作というより、式の評価コンテキストの問題。 forはその性質上、捜査対象は配列になる: for (<>) { .... } # 上記はこれと同等 my @lines = <>; for(@lines) { .... } なので、<>も配列として評価されるべく*まず最初に*<>を最後まで読み切って、行区切りの配列を作ってからforに渡す。このときファイルハンドルを読み切っているので、当然 $.はファイル全体の行数になる。 これに対して、whiileは対象を毎ループ評価するので、1行ずつの読み込みになる。だから$.は行毎の値になる。B::Deparseを使うとちょっとわかるかも。 # こっちはちょっと正直わかりにくいとは思うけど・・・ daisuke@beefcake $ p
Plack/Starman Daemontools Run File With Complete Deploy Bundle 注1:まだ本番にはデプロイしてませんが、テストでは使いました。 注2:以下スクリプトは開発者の労力を減らすためのスクリプトで、万全なデプロイ方法だとか言うわけではありません。 注3:正直シェルスクリプトは素人です。 ここ最近のアプリケーションのバンドル・デプロイについてちょっと固まりつつあるので、書いてみる まず アプリケーションと、その依存関係。デプロイ側のサーバーにはlocal::libと必要なModule::Install系のモジュール、それにModule::Install::Bundle::LocalLibがインストールされている前提です。アプリケーションの依存関係は全部Makefile.PLに書きます。 use inc::Module::Install;
# チラシの裏です 重いクエリをエミュレートするために Pl/PgSQL で sleep() を用意。(busy loop するので CPU 使います) http://www.issociate.de/board/post/130019/sleep_function.html create or replace function sleep (integer) returns time as ' declare seconds alias for $1; later time; thetime time; begin thetime := timeofday()::timestamp; later := thetime + (seconds::text || '' seconds'')::interval; loop if thetime >= later then exit; else
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く