perl

Catalyst/PSGIに入門。

遅まきながら、perlの必修項目としてCatalystとPSGIに入門することにした。 まずはcpanで以下をインストール。 Plack DBIx::Class Template Catalyst Catalyst::Devel Catalyst::Engine::PSGI したらworkspaceで $ catalyst.pl MyAppこれで原型ができる。 次…

next, lastの裏芸。

うわ、こんなことできたんだ。 my $res = 0; { if (scalar(@ARGV) == 0) { $res = 1; last; } if ($ARGV[0] == 1) { $res = 2; next; } $res = 3; } print $res . "\n"; これをtest.plとする。 $ perl test.pl 1 $ perl test.pl 1 2 $ perl test.pl foo 3 驚…

CGIプロファイリング。

うおー、超久しぶりにPerlネタ。 perlプロファイリングのお供、Devel::DProf。 これをCGIで使うTips。

忘れないように。

yield diferred ちゃんと勉強しなきゃ。

「お約束」をまとめてみる。

Webアプリケーションを作るにあたって冗長だなーと思う部分をメモ。 あとはLightningが現状苦手としている部分とか。 その辺を解決すれば開発効率も上がるんじゃないかなっと。 認証 BasicとかDigestはどうしてもHTTPサーバーに依存してしまうので、 まずは…

Perlの紛らわしいこと。

自分じゃなくてもたまにハマったりしそうだなぁという。 正規表現のキャプチャパターンで my $a = 'hogehoge' =~ m|^(hoge)|; # $a = 1 my ($b) = 'hogehoge' =~ m|^(hoge)|; # $b = 'hoge' マッチ演算子はスカラーコンテキストでマッチした数、 リストコン…

qr演算子。

うわああああああああこれ知らなかったあああああああああああ qr演算子とは 「正規表現」という値を生成する演算子。 以下のように使用するらしい。 $reg = qr/\w+/; if ('abcde' =~ $reg) { print 'matched !'; } 置換にも使える $reg = qr/\w+/; $str = '…

今北産業シリーズ。

タイトルだけ先に思い付いた。何か書かないと気が済まないので、 3行以内のTipsを考えてみようと思う。 俺式おまじない use Carp; use strict; use warnings; CarpじゃなくてData::Dumperの場合もある。 あくまで俺式。 クラスの始まりと終わり package Foo;…

Lightning-0.10公開。

PC壊したり鬱になったりわやわやしてる最中だけど、 これが気になって仕方なかったのでとりあえず公開してしまう。 Web Application Framework - Lightning http://github.com/shellcat/perl-Lightning/tree/master サンプルアプリはこちら http://github.co…

おのれMicroSoft・・・

binmodeとか久しく忘れてたじゃねえか・・・ orz

さらに進捗。

・podは概ね了。後は日本語か・・・ ・6月中旬でイケルか不安になってきた ・公開場所はgithubに決定 ・勢い余ってマスコットキャラを描いてもらった

進捗。

・WAF自体のコーディングは済 ・目下ドキュメント作成中 ・サンプルアプリケーションはブログにする ・どの程度ブラッシュアップすべきか考え中 ・ソース置く場所も考え中。とっとと鯖立てるか・・・

予告。

Perl用のWeb Application Frameworkを公開します。 1ヵ月以内に。 ・・・たぶん。

ApacheCGIではAuthorizationが受け取れない。

二日無駄にした・・・o.....................rz

packの利点。

このブログでもpackについて何回か書いてて、 「perl pack」なんて検索語で引っかかるようになってるらしい。 まぁそのpackについて思い当たったことがあるので少し。 Perlの変数は可変長だ。 スカラだけじゃなくて、リストもハッシュも。Perlのメモリ管理は…

sortのTips。

大したことじゃないけれど、知っていると確かに便利。sortは第一引数を省略するとcmp演算子を使うということ。 @a = (1, 2, 10, 3); print join(",", @a); # 1, 2, 10, 3 print join(",", sort @a); # 1, 10, 2, 3 print join(",", sort { $a cmp $b } @a); …

再三再四。

AUTOLOADしたらDESTROYを定義すること!!!!

思うに。

コード書くよりPod書く方が時間的に長いような・・・

やること。

テンプレートエンジンにincludeを実装。 キャッシュの有無はベンチ次第。

そういえばeval。

前回「evalに与えた文字列は『ひとつのブロックの中』として扱われる」とか書いたわけだけど、 せっかくなのでevalについてもう少し。evalの文法は以下の2種類。 eval EXPR eval BLOCK まぁ要するに eval 'package HOGE; print __PACKAGE__;'; って文字列を…

evalとpackage。

wakaponさんのよく☆ある☆ふつーの備忘帳:packageの件について http://pub.ne.jp/wakapon/?entry_id=1981011 こちらの記事の最後にあったいろいろなおまけ、 自分でもいくつか考えてやってみたのでまとめ。 eval 'package HOGE; print __PACKAGE__; $num = 1…

packとunpackってなんじゃらほい?っていう話。

誰もが悩むpackとunpack。 自分自身wakaponさんのご指摘を頂いたにも関わらずまだ疑問符が消えない。 というわけでちょっとでも理解すべくなんかやってみた。 Devel::Peek というモジュールがあるんです。 変数とかの値が内部でどういう扱いを受けているかを…

Perlでのsubroutine undefinedの話。

このブログが始まってからの総計で一番検索が多い、 「subroutine undefined」というPerlのエラーメッセージ。 ※以下ではなんとなく「エラー」ではなく「例外」と言います 内容は読んで字のごとく「未定義のサブルーチン」。 つまり存在しないサブルーチンを…

Perlのド変態っぷりを見た。

無名サブルーチンにアトリビュート付くのかよwwwwwwwwwwwww use attributes; my $a = 1; my $b = sub : lvalue { $a }; print $a; # 1 $b- >() = 2; print $a; # 2 (`・ω・´)なんという変態

ふと思い立って。

CPANに登録できるようなモジュールを書いてみたいと思った。モノはあるけどただ書いただけなので h2xsの辺りからチマチマ勉強してみようと思う。

packとunpack。続き。

なんと偉大なるwakaponさん直々に手直しを頂いてしまった。http://pub.ne.jp/wakapon/?entry_id=1805424(´・ω・`)勉強になります 数値 ←→ バイナリの変換がpack,unpackなのであって、 配列とスカラの行き来は本質ではないということと解釈してみた。 まだま…

packとunpack。

今までなんとなく「packはバイナリを扱うもの」として 大して使ってもいなかった。TCP/IPサーバを書くことになってようやく 勉強してみたのでその備忘録。 偉大なるwakaponさんによれば、 「packは圧縮で,unpackは解凍に相当する」とのこと。http://pub.ne.…

packの勉強中。

明日書くかも。とりあえず勉強中。

悩みどころ。

TCP接続を要するアプリケーションサーバの実装に悩み中。デーモン化とそれ用の簡易フレームワークは意外とアッサリできた。 (´・ω・`)ソケットの連結ってできないかなー メインループの周期と、処理グループ間の遅延影響をどう回避するか・・・

Undefined Subroutineが出た時。

シンボルテーブルをいじって生やしたメソッドは、 シンボルテーブルに載っていてもUndefined Subroutineエラーが出ることがある。その原因は、そもそものsyntax error。 コードリファレンス自体は格納されてるけど、 コールしようとしたときメソッドの実態が…