perl

[http://search.cpan.org/perldoc?Web::Scraper:title=Web::Scraper] をつかってみた

ドキュメントねー,と思ったら Redirecting… みたいな素敵なチュートリアルがあったのでいまさらながら使えるようになりました。サンプル群も参考になりました。 はてブのホッテントリから,タイトル,URL,キーワード,タグを抜き出すのを書いてみました。…

perluniadvice

perluniadvice の前半部分を訳してみました。かなり意訳。アドバイスと銘うってますが,中級者〜上級者向きです*1。 抄訳 perluniadvice Perl 付属のドキュメント perlunitut はもう読んだ?もしまだなら,そこから読み始めること :) perlunitut - perldoc.p…

図解: Perl と Unicode 文字列

id:tomi-ru さんが [http://e8y.net/mag/015-encode/:title] というとてもプラクティカルな [http://search.cpan.org/perldoc?Encode:title=Encode] 入門をお書きになったので,わたしも違う切り口で書いてみたくなりました。 いちおうの基礎(読み飛ばし可…

ファイルハンドルをめぐる冒険(ただしマニア向け)

以下は Perl 5.8.8 のソースを元に記述しました。Perl 5.10 でもそう変わってはいないと思いますが,結構内部が変更されているので違うかもしれません。大まかには同じだと思います。 イントロダクション Perl でのファイルハンドルは内部的には [http://sea…

Perl プログラマをしていて知らないと恥ずかしいモジュール 1000

⇒MFPM ごめんなさいネタです。誰も書かないんで*1書いてみました。 なにげに元ネタ*2(YappoLogs: ウェブエンジニアをしていて知らないと恥ずかしい日本人プログラマ300)の id:yappo さん作というのを今日知った。個人的には使ってませんすいません。「登録…

Perl (5.8) での文字列の内部表象について返信

UTF8 フラグあれこれ - daily dayflower について nobuoka さんよりツッコミをいただきました。 nobuoka 2008/03/11 21:15 こんにちは。”[Perl] Perl の Unicode 対応について” のエントリでトラックバックさせて頂きました nobuoka です。内部表象 (内部形…

Perl の文字列の内側の記事の補足

前回の記事が期せずしてホッテントリ入りしたので,ちょっとマズいと思い。 前回の記事が難しいと思ったとしても,それは恥ずべきことではありません。 あくまで Perl の内部構造の話ですから*1。 ただ,Perl で文字列を扱う/文字コードを扱うのは難しい,…

UTF8 フラグあれこれ

UTF8 フラグについてわかってるつもりだったんですが,utf8::is_utf8 considered harmful - Bulknews::Subtech - subtech を読んで混乱したので,自分なりにまとめてみました。間違いがありましたらご指摘よろしく。 まとめ スカラー変数の内部表象の状態を…

breakttc を Perl で書いてみた

TTC ファイルを分割するためには BREAKTTC.EXE という Microsoft 製のソフトウェアがあるのですが,今は公開されてないようですし,いちいち Windows を立ち上げるのも面倒です。TTC の構造については仕様が公開されているので Perl で書いてみました。non s…

テキストの文字種分割の補足の補足

split して空文字列を grep で抜くほうがベターかと思います。 テキストの文字種分割の補足 - daily dayflower 「ベターかと思います」とか断言してしまいましたが, (正規表現の最後に最後に「|.」を足すだけでも良いかもしれませんね。) Perl で日本語テ…

テキストの文字種分割の補足

Perl で日本語テキストを簡単に字種かたまりに分割できないかな、 と思い、perlunicode を読みながらサンプルプログラムを書いてみました。 対象テキストは UTF-8。 Perl で日本語テキストを字種分割 たつをさんは,m// でマッチングさせて分割させてますけ…

svk の shell が欲しい

と思って探したら,ありました。 svk使ってると「svk st」→「svk di」→「svk ci ファイル名 -m ほげほげ」とかよくやるんですが、「svk」の部分がDRYじゃないと思ったので超簡易SVKシェルを作ってみましたよ。 いちいち「svk なんちゃら」って打つのが面倒な…

CentOS 5.1 の perl をリビルドする

2008-12-26 追記 CentOS 5.2 の updates の perl-5.8.8-15.el5_2.1 で下記該当パッチ+αがあたった状態になっています。もう自分でパッチをあててリビルドする必要はありません(RHEL 5(.2) の perl-5.8.8-15.el5_2.1 で例のバグが治っていた - daily dayflo…

overload の rebless バグについて

きちんと追いきれなかったので結構ぐだぐだです。 そもそも bless の挙動とは #!/usr/bin/perl use strict; use warnings; package FooBar; package main; my $a = { }; my $b = $a; print $a, "\n"; # HASH(0xb8002a0) print $b, "\n"; # HASH(0xb8002a0) b…

Unicode::Numeric

Perl で Unicode Character について触る - daily dayflower で書いたように文字の数値を調べるには Unicode::UCD を使えばよかったんですが,それを知らずに途中まで作りかけていた数値変換モジュールを一通りインプリメントしたので,さらしておきます。利…

Perl で Unicode Character について触る

Python の unicodedata モジュール - bkブログ を読んで,それ Perl だとどうよと思ったんで対応をまとめてみました。utf8 flag や Encode モジュールについては特に解説しませんので。 文字の名前を取得する charnames モジュール(Perl 5.6 より付属)の v…

UNIVERSAL と Scalar::Util::blessed の話

毎度和訳お疲れ様です>hio-san 逆にいまいちわかんないのが UNIVERSAL まわり。isa類を関数として使うのはよろしくないで, メソッドとして使ってね&blessされているかも確認したかったら Scalar::Util の blessed (オブジェクトの時)か reftype (なにかHAS…

いっちょ Apache のフィルタモジュール講座でも書いてみるか

と思ったら知ってることはすべて(しかもそれ以上)mod_perl のドキュメント(⇒mod_perl: Input and Output Filters)に網羅されていました。orz。Perl に疎くてもフィルタモジュールを書く人なら目を通しておいて損はないです。つかこのレベルのドキュメン…

DBI で printf オレオレ流

Kazuho@Cybozu Labs: DBI::Printf - A Yet Another Prepared Statement を読んでおもしろ,と思ったんですが,どうもこれを prepared statement と呼ぶことに抵抗感があった*1のでコメントしたら,丁寧にコメントを返してくださいました。感謝感謝。で,お礼…

64 bit 環境用の Perl か判定する

use strict; use Config; if ($Config{'use64bitint'}) { ... blah blah blah ... } else { ... blah blah blah ... } これでいいのかな。use64bitall というのもあるんですけど違いがいまいちわかりません。 Another change related to the architecture na…

Crypt::SMIME キターーー!

以前ちらっとぼやいたりしてましたが,ええい,と気力をふりしぼって RT に投げたら Tripletail::SMIME を Crypt::SMIME として単体リリースしてくださいました。ありがとうございます> Tripletail メンテナの皆様&ユミルリンクの皆様勝手に Crypt::SMIME …

YAML::Lite ?

Pure Perl でライトウェイトな YAML の実装なかったっけ……と CPAN をあさってみたけど見つかりませんでした。たしか id:miyagawa さんが言及してたよなーと思いいろいろ探してみたら,一応, http://bulknews.net/lib/archives/YAML-Lite-0.01.tar.gz という…

GDBM なファイルが 32 bit と 64 bit で非互換でハマった

32 bit OS で作った GDBM ファイルを 64 bit OS に持っていって tie したら Invalid argument って怒られてしまいました。がーん。ついでなので,他の DBM だとどうなのか調べてみました。もとファイルは日本郵政公社の郵便番号ファイルで,これをあれこれ加…

Module::Refresh とモジュールのダイナミックロードの相性

以前(⇒【永続化Perlでモジュールの再読み込み ⇒ Module::Refresh - daily dayflower】)の積み残し課題です。main.cgi が MyApp::Runner を呼び,MyApp::Runner が MyApp::App をダイナミックロードして実行し,戻り値を表示する CGI です。CGI は #!/usr/b…

cpan で古いバージョンのモジュールをインストールする方法

m コマンドでモジュールの情報を調べます。 $ cpan ... snip ... cpan[1]> m DBIx::DBSchema Module id = DBIx::DBSchema DESCRIPTION Database-independent schema objects CPAN_USERID IVAN (Ivan Kohler <ivan-pause@420.am>) CPAN_VERSION 0.33 CPAN_FILE I/IV/IVAN/DBIx-DB</ivan-pause@420.am>…

もう CPANPLUS は使わなくてもいいのかも

今まで CPANPLUS を使っていた理由は root 以外のユーザが使った場合,インストール時に sudo してくれる インストール済みのモジュールで cpan にさらにあたらしいものがあるかどうか調べることができる モジュールのアンインストールできる モジュールの古…

URI.pm っぽいモジュール名用クラス

を考えてみました。 use Module::Class; Module::Class->module('CGI')->require or die $@; それ UNIVERSAL::require (ryというのは冗談ですが # with Module::Class::Plugin::Module::CoreList; print Module::Class->module('File::Spec')->first_release…

永続化Perlでモジュールの再読み込み ⇒ Module::Refresh

mod_perl や PersistentPerl (a.k.a. SpeedyCGI) など Perl インタプリタを永続化させる仕組みのものは*1,一度読み込まれたモジュールは,その後ファイルが変更されたとしても自動的に再読み込みしてくれたりはしません。mod_perl では Apache(2)::Reload …

UNIVERSAL::isa($hoge, 'Huga') を使うべきではない

ことの理由と出典をいつも忘れてしまうので,メモメモ。 if ($obj->isa('Huga')) { ...... } みたいなコードはよく使うんですが,$obj が bless されたオブジェクト(か,クラス名の文字列スカラー)じゃないとエラーを吐くので,一時期,以下のように書いて…

Spreadsheet::WriteExcel でデフォルトフォントが Arial なのがイヤだ

こんな悪いことするといかにも日本の Excel なファイルができました。 use utf8; use Spreadsheet::WriteExcel; use Spreadsheet::WriteExcel::Format; my $book = Spreadsheet::WriteExcel->new('foo.xls'); my $default_format = Spreadsheet::WriteExcel:…