perl

UNIVERSAL::tap

最近仕事柄Ruby厨でテスト厨なんですけど、久しぶりにリハビリでPerlモジュール書いてみました。Rubyには、レシーバを引数にブロック評価してレシーバ自身を返すtapという便利なメソッドがあって、気がつけばよく使っているのでこれをPerlに移植してみました…

shipped MouseX-AttributeHelpers 0.04

最近 Mouse が id:gfx さんの手で凄い勢いで更新されてるわけですが、時間が取れなくてまったく追いつけていません。そんな中 Mouse 0.31-0.35 あたりでは MouseX-AttributeHelpers がインストールすら出来なくなってしまっていたのですが、これまた id:gfx …

CPANPLUS::Dist::色々

CPAN::Packagerを作ってみた - Angelos in Action - angelosグループ http://d.hatena.ne.jp/tokuhirom/20090223/1235357944 この一連の流れで CPANPLUS::Dist:: 以下に色々あることがわかった.こちらのサイトにまとまってました.http://d.hatena.ne.jp/ho…

Data::OpenStruct::Deep をリリースしました

Data-OpenStruct-Deep-0.01 - allows you to create data objects and set arbitrary attributes deeply - metacpan.org Hash::AsObject (Perl) OpenStruct (Ruby) っぽく動的にアクセサ作るモジュールで,アクセサのネスト(メソッドチェーン)ができるとこ…

モダンPerl入門

モダンPerl入門 (CodeZine BOOKS)作者: 牧大輔出版社/メーカー: 翔泳社発売日: 2009/02/10メディア: 大型本購入: 25人 クリック: 534回この商品を含むブログ (105件) を見る予約した.ちょうど Workshop やりたいと思ってたので,教材に使いたい.

HTTP::Router をリリースしました

あけましておめでとうございます.新年一発目の CPAN モジュールリリースは HTTP::Router になりました.HTTP-Router-0.05 - Yet Another Path Router for HTTP - metacpan.org次期 Rails に統合される Merb の Merb::Router を移植したようなものです.詳し…

URI::Template::Restrict をリリースしました

URI-Template-Restrict-0.06 - restricted URI Templates handler - metacpan.org 背景 URI::Template 0.14_01 は draft-03 相当 でも deparse (= extract) できない {-opt}, {-neg} といった op があるので非可逆だということが一因 URI::Template 0.13 は …

freenode に #http-router を作った

ちょっと前から HTTP::Router という dispatcher(と呼んでいいのか微妙)を書いてますが,ここ最近は id:dann の怒濤のコミットで開発が進んでます. http://coderepos.org/share/browser/lang/perl/HTTP-Router http://svn.coderepos.org/share/lang/perl/…

HTTPx::Dispatcher で URI Templates

REST 厨としては URI Templates とかどうしても使いたかったので,HTTPx::Dispatcher の trunk にコミットしてみたんだけど,いいですかね.http://coderepos.org/share/changeset/24875こんなことができるようになります. package Your::Dispatcher use HT…

URI::Platonic をリリースしました

随分昔の話ですが. URI::Platonic というモジュールを書いた - masakiのはてなダイアリー URI::Platonic を Decorator として動作するようにしてみた - masakiのはてなダイアリー 時間を置いた結果,Moose ベースになりました.http://search.cpan.org/~mas…

CouchDB 関係の Perl モジュール

現在 CPAN にあがってるもの一覧. Net-CouchDb-0.04 - Interface to CouchDb - metacpan.org CouchDB-Client-0.09 - Simple, correct client for CouchDB - metacpan.org CouchDB-Deploy-0.03 - Simple configuration scripting to deploy CouchDB database…

Yokohama.pm TechTalk #2 が開催されます

Yokohama.pm テクニカルトーク #2 を開催します → 参加募集終了 - Yokohama Perl Mongers http://yokohama.pm.org/wiki/index.cgi?Conference2 平日は基本 IRC にいないので,何時 registration 始まってたか知らずに若干で遅れて,更に気がついたらタイムキ…

Yokohama.pm #1 で話してきた

順番変わって最初になったんだけど,プロジェクタに中々映せずとんだ失態を晒してきました.あー恥ずかしかった.CatalystCon のときは S6 でスライド作ったんですが今回は Spork (+ Spork::S5) でやりました.Spork ってページごとにファイル作ってくれるか…

URI::Platonic を Decorator として動作するようにしてみた

id:miyagawa さんにもらったコメントを参考にやってみた.ほとんどのメソッドは URI オブジェクト側に流すようにしたんだけど,正直 AUTOLOAD とか今まで全然使ってなかったのでコード微妙かも.添削してほしい感じ.http://coderepos.org/share/changeset/7…

URI::Platonic というモジュールを書いた

プラトニック形式の URI という呼び方は RESTful Web サービスに出てきて初めて呼び方を知ったんだけど,そのプラトニック形式の URI と,拡張子付きでリソースの詳細な表現形態を指定した URI(長いな…)をもっと簡単に扱いたかったので,そんなモジュール…

CPAN Author になりました

XML::Atom::Ext::Threading という XML::Atom に Atom Threading Extensions (RFC4685) の拡張を加えるモジュールを書きました. http://search.cpan.org/~masaki/XML-Atom-Ext-Threading-0.01/ これでやっと CPAN Author になれました.ちなみに coderepos …

PoCo::Client::HTTPで認証付きプロキシを使えるようにする

タイトルの通り. $ENV{HTTP_PROXY} = "http://username:password@proxy.example.com:8080"; みたいなときのために. --- POE/Component/Client/HTTP/RequestFactory.pm~ 2006-10-15 11:56:47.000000000 +0900 +++ POE/Component/Client/HTTP/RequestFactory…

HTTP::Headers::ContentType

HTTP::Negotiateの存在を知らずに自分でネゴシエーション処理しようと思ったら,Content-Typeって意外と扱いにくい感じがしたので勢いで書いた. 今となっては… =head1 NAME HTTP::Headers::ContentType =head1 SYNOPSIS use HTTP::Headers::ContentType; my…

XML::Atomで atom:content[@type="text"] なentryを作りたい

XML::Atom::Contentに動的に追加する方向でやってみた.ついでに atom:content[@src] もできるように. use XML::Atom; use XML::Atom::Entry; use XML::Atom::Content; $XML::Atom::DefaultVersion = '1.0'; { package XML::Atom::Content; use strict; use…

とりあえず Text-Hatena-0.20 をスーパーpre記法(+シンタックス・ハイライト)に対応させる

追記:reedomさんが更に改良したパッチを公開されています.ご指摘ありがとう.こんなパッチでどうか. --- lib/Text/Hatena.pm.orig 2007-02-28 05:03:52.000000000 +0900 +++ lib/Text/Hatena.pm 2007-06-18 13:03:50.000000000 +0900 @@ -6,8 +6,10 @@ us…

前半後半

[id:tomyhero:20070426:1177583843] use utf8; use DateTime; use DateTime::Format::Strptime qw(strptime); sub fs_fazzy_birthday { my $age = (DateTime->today - strptime('%Y-%m-%d' => shift))->years; return sprintf '%d0代%s' => int($age / 10), …

XML::Feedで使うXML::Atomのas_xmlが吐くXMLにxmlnsがつきまくる件

こっちでもsyntax highlightついたんだったっけ.ということで.自分の環境(XML-Atom-0.25)だと,なんか全部の要素にxmlnsついちゃうのが,なんとも. とりあえず消してみたけど間違ってるかなぁ.回りくどい事してるような気がしてならない. use XML::Atom…

FormValidator::Simple::Plugin::Space

全角スペースとかスペースのみとか判定.さしあたって必要だから書いてみたけど,実は既にどこかにあったりして.そもそも UTF-8 前提なあたりで手を抜いてる感が.あと ZSP とかいいつつ半角でもヒットする(はず)だし. package FormValidator::Simple::P…

Catalyst-5.7000

正確にはちょっと異なる.このメジャーバージョンアップを記に,Catalyst-Runtime-5.7000とCatalyst-Devel-1.00の2パッケージに分割されていて,Catalyst-RuntimeにCatalyst本体が含まれている.一方Catalyst-DevelにはCatalyst::Helperが入っているという構…

ActivePerlでPPM Packageを作成する方法

ExtUtils::MM_Win32に手を加えてみた. --- lib/ExtUtils/MM_Win32.pm~ Fri Oct 21 08:55:12 2005 +++ lib/ExtUtils/MM_Win32.pm Mon Jun 05 00:33:26 2006 @@ -526,6 +526,42 @@ return('Win32'); } +BEGIN { + splice @ExtUtils::MakeMaker::MM_Sections, …

TT-2.15をActivePerlにインストールする

Template-Toolkit-2.15をActivePerl,VC++ 2005 Express + Platform SDK環境にインストールしようとしたところ失敗した.で,エラーメッセージ見るとsnprintfでビルドにこけていて,これVCだと_snprintfなんだよなーと思いつつ,Stash.xsに #define snprintf…

WindowsでEncode::Detectを入れるためのMakefile.PL

を作った.Win32にEncode::Detectを入れる - Charsbar::Noteを参考にして,ちょっとだけ構成変えつつこれを自動でやるようにした.Encode-Detect-0.01のtarballを展開して,以下のソースをMakefile.PLとして置いてやれば,あとはおきまりの perl Makefile.PL…

LWP::UserAgent::env_proxy

proxy 通さなきゃいけない環境でも LWP::UA を使うのは結構簡単.適切な環境変数を定義しておき,env_proxy を呼ぶ.すると,あとは LWP::UA がよしなにしてくれる.例えばこんな感じ. use LWP::UserAgent; $ENV{HTTP_PROXY} = $ENV{FTP_PROXY} = 'http://u…

proxy と Text::Hatena/0.12

最新版が出てますが,proxy を通さないといけない環境下では make test でこけてしまいます.LWP::UserAgent を内部で使うモジュールは proxy のことも忘れないで欲しいですね.ということでパッチ. --- lib/Text/Hatena/AutoLink/HTTP.pm.orig Thu Apr 06 …

ActivePerl::Config::find_prog #2

前のエントリでは,ActivePerl/Config.pm にパッチを当てていたけど, The problem is that Module::Install adds 'inc/Module/Install' to the @INC in its load_extensions method. On Windows we end up loading Config_heavy.pl here which loads Active…