Perl

14章 データ永続性

Data::Dumper YAML DBI じゃないとわ

13章 ロギング

Log::Log4perl

12章 エラー

$!(システムエラー)は,dualvar だ $! は,$!{$!} として存在するので,$! == ENOENT を $!{ENOENT} と書けたりする*1 $ perl -e 'for ($!=1; $! <=102;$!+=1){printf"%d: %s\n", $!, $!}'|head -2 1: 許可されていない操作です 2: そのようなファイルやディ…

11章 設定

constant Readonly Getopt::Long AppConfig Config モダンPerl 入門だと MooseX::Getopt

10章 モジュール

Hook::LexWrap 考え方かな

9章 動的サブルーチン

ささる三連.AUTOLOAD() -> *{$AUTOLOAD} = sub { ... }; -> goto &{$AUTOLOAD}; http://hop.perl.plover.com/

8章 シンボルテーブル

my $global; our $global; とやると警告が出る.(perl 5.10.0 changes 25179) シンボルテーブルはhash のように扱うことができる.(keys, delete などの述語を適用できる) 型グロブでエイリアスがかけられる.(無名サブルーチンに名前を付けたり) $ ./p142.p…

7章 ソース解読

B::Deparse 重要(イメージとしては,cc -E みたいな) Perl::Critic チーム規約とかあればそれに沿ったドットファイルとか書くかなぁ. $ perl -MO=Deparse -naF: -ple '$_=$F[2]' BEGIN { $/ = "\n"; $\ = "\n"; } LINE: while (defined($_ = <ARGV>)) { chomp $_;</argv>…

5章 プロファイリング

Devel::SmallProf を試してみた $ perl Makefile.PL $ make; make test $ ( cd blib && find . -type f \! -name .exists ) $ ( cd blib && find . -type f \! -name .exists \ | cpio -pdmuv ~/module/common/perl-devel-smallprof-2.02 ) $ perl -I$HOME/m…

4章 デバッギング

Perl Debugged Pro Per Debugging 自分で調べますです.

3章 安全なプログラミング技法を読んだ

正規表現による汚染洗浄機能を無効化 use re 'taint' はデフォルトで system { $args[0] } @args 間接オブジェクト記法 perldoc -f exec $ perl -we 'system {$ARGV[0]} @ARGV' 'echo aaa' Can't exec "echo aaa": そのようなファイルやディレクトリはありま…

2章 正規表現を読んだ

-DDEBUGGING オプション付きPerl を早速作った $ sh Configure -de -Dprefix=$HOME/module/perl-5.10.0-d -DDEBUGGING 2> c.err | tee c.log $ make 2> m.err | tee m.log $ make test 2> mt.err | tee mt.log $ make install

6章 ベンチマーク

6.1 ベンチマークテストの理論は,良いことを言ってると思う. Devel::Peek - で詳しく見るのもBench をするために必要だろう. この章は,読み物的におもしろい.マスタリングPerl

マスタリングPerl が出る or 出た

マスタリングPerl をとりあえず買おうかな.と思ってみた.O'REILLY 曰く 本書は、Perl構文の基本を指南する『初めてのPerl』、再利用可能なPerlソフ トウェアを作成する方法を教える『続・初めてのPerl』に次ぐ3 番目の書籍と して位置付けられるものです。…

Perl 5.9 以降でPDFJ-0.90 を使う

前置きPDF を作れという指令がきたので,どこぞで耳に挟んだPDFJ を使うなどしようと思ったのだけど,Perl 5.9 以降では使えなくて,意外にWeb に情報が無いようだったので,とりあえず情報を残すことにする. 作者の中島 靖 さんのページ PDFJ は,内部でps…

csnagoya コンパイラを作ろうな宿題1

とりあえず素朴な実装 #!/usr/bin/env perl # -*- mode: perl; coding: utf-8; -*- use strict; use warnings; use utf8; use open qw(:utf8); use open qw(:std); package Token; use base qw(Class::Accessor::Fast); __PACKAGE__->mk_accessors(qw(def st…

y は,速いよ

こんな感じのコードを見たので, やっぱy/// じゃね?と思ってベンチしてみた. $count = $str =~ s/(\w)/$1/g; 結論的には,y/// の方がs/// や m// と対称性があって良いような気がする.ってことかな? あと,1バイト削れるしね.ゴルファーも安心. とい…

Moose

Moose を読もうとして,インストールした. $ sudo cpan cpan> install Bundle::CPAN cpan> install Mooseとかやろうとしたら,ミラーの設定がダメでダウンロードできないでやんす.http://linux.kurumania.net/archives/2005/06/cpan_1.phpとか見て解決.ま…

Moose

流行りらしい Moose の勉強でもしようか.と思って,MOPを調べ始める.メモっぽく. http://blog.hide-k.net/archives/2008/05/mooseclassmopmo.php http://community.schemewiki.org/?meta-object-protocol MOP は,object system の何からしい.MOP - 2 ma…

simple-hatena 使うよ2

移動することが多くなり気味なので, 色々なことをノートからできるようにする一環.まずは,はてダラを使えるようにする. $ ncftpget hostA local/bin local/bin/hw{,s}.pl $ chmod +x local/bin/hw{,s}.pl $ sudo aptitude install libwww-perl $ sudo ap…

はてダラの使い方を忘れました

$ cd ~/.hatena/$USER/diary $ emacs diary.txt $ ~/local/bin/hws.pl $ ~/local/bin/hw.plかな.完全に忘れてますな.じゃなかったorz M-x simple-hatena ↓ C-c C-c (simple-hatena-trivial-submit)でした.

Subject 続き

そうか.UTF8フラグが立っていなかったのですね. ということで,utf8::decode() を使ったら, UTF-8 文字列+MIME-B で解決しました.http://naoya.dyndns.org/~naoya/mt/archives/000611.htmlこの記事がわかり易かった気がします.use utf8 しなかったのは…

Email::* を試してみた.

こりゃ良いっすね.PurePerl なところがイイ!本文は良い感じですが,Subject がどうやるのかまだ調査不足な感じです. use Encode; my $mail = Email::MIME->create( header => [ Subject => encode("MIME-B", $subject); ], ); とかでイイんですかね?とい…

グローバルな失敗

aa.pl use strict; use vars qw($aa); use BB; sub main { my $aa = 1; BB->func(); } main; BB.pm package BB; use strict; sub func { print $main::aa, "\n"; } 1; たまにグローバル使うとはまるね. 自動的にmyを挿入する,この手が憎い.

suid

suid してるスクリプトで,ハッシュをデリファレンスすると遅いような気がする.とか言われて,調べてみた.多分,suid してると taint フラグが立って,その分メモリ食ってて,そもそも細いスカラ作り過ぎてるから,その辺の相乗効果なんじゃないかな.と予…