2010-04-01から1ヶ月間の記事一覧

アクセッサの自動生成(AUTOLOAD編)

以前アクセッサを自動生成する方法を紹介していたのですが、今回はAUTOLOADを使用した場合を紹介します。 http://d.hatena.ne.jp/okamuuu/20100417/1271479559 AUTOLOADとは ある名前空間に存在するメソッドを実行するように指示したのに、そのメソッドが定…

Carp::croakはなにもしないで使えるのではなく、なんかやってるから使える

勘違いする いつも使っているCarp::croakなんですが、 完全修飾名で呼び出せる理由をあんまり考えてませんでした。1. スクリプト #!/usr/bin/perl use strict; use warnings; Carp::croak("croak!!"); 2. 実行 :!perl script/inc.pl croak!! at script/inc.p…

文字列の一部の数値をインクリメント

fushihara++ my $name = 'ホゲホゲLv1'; $name =~ s/Lv(\d+)/Lv@{[$1+1]}/; warn $name; # ホゲホゲLv2

Text::Hatenaを拡張してみた

1. テストコード use strict; use warnings; use utf8; use Test::Base; use CMS::Lite::Extend::Text::Hatena; filters { text => ['my_parse', 'omit_indent', 'chomp'], html => ['omit_indent', 'chomp'], }; sub my_parse { CMS::Lite::Extend::Text::H…

クロージャーとグロブ割り当てを使用したサブルーチン

前回、前々回の日記でシンボリックテーブルとグロブを紹介したので、クロージャーとグロブ割り当てを利用したサブルーチンの紹介をしたいと思います。 レキシカル変数を不老不死にするクロージャー Perlではグローバル変数とレキシカル変数が存在しています…

main::test_methodというグロブには自分自身がどこにいるかを調べるために、自分自身へのリファレンスを持っているのですが、その情報を*Foo::test_methodに置き換えているわけです。*1

実際にはグロブを丸ごと違うグロブを参照するような処理は行いません*1。グロブの一部(大抵はコードリファレンス)に対してだけこのような処理を行います。 まとめ このグロブ割り当ての原理を利用したサブルーチンの記述は、CPANモジュールなどでよく見かけ…

シンボルテーブルとグロブ(2)

おさらい シンボルテーブルは普通のPerlハッシュで実装されています。 Perlのhogeという名前の変数には$hoge, @hoge, %hoge, &hoge, ファイルハンドルのhoge, ディレクトリハンドルのhogeなどがあります。 これらのhogeは物理的にはバラバラの場所に離れてい…

シンボルテーブルとグロブ(2)

おさらい シンボルテーブルは普通のPerlハッシュで実装されています。 Perlのhogeという名前の変数には$hoge, @hoge, %hoge, &hoge, ファイルハンドルのhoge, ディレクトリハンドルのhogeなどがあります。 これらのhogeは物理的にはバラバラの場所に離れてい…

シンボルテーブルとグロブ

シンボルテーブル、名前空間、グロブ シンボルテーブル Perlで宣言される変数にはグローバルなものと、そうでない、レキシカル変数*1とがあります。このグローバル変数には値が格納されています。この、グローバル変数の値が格納されている場所はシンボルテ…

__DATA__をmod_perlやらFCGIなどで使ってハマる人が俺以外にも居る件

自分と同様にはまっている人がいるので、書いておくといつか誰かの役に立つかもしれないというエントリーです。 スクリプト #!/usr/bin/perl use strict; use warnings; my $data = <<END_OF_DATA; test1 test2 test3 END_OF_DATA ### ファイルハンドルopen open my $fh, '<', \$data; ### 現在のファイル位置を調べる warn tell $fh; ### read my @array1 = <$fh>; ### 読み取り開始位置が最後に移動している事を確認。 ( 文字数 + 改行…</end_of_data;>

彼氏がperldocjpを使っていない。別れたい。

このタイトルを一回書いてみたかった。社内には勉強会というものがあるんですが、この時間使って新人向けの資料でも作ろうかなと思いました。で、第一回はとりあえずperldocを紹介しようかと。Perlで分からない事がを調べる場合、こんな感じでしょ? google…

DATAトークンと継承(2)

翌日 そもそも下記の件は <CMS::Lite::View::Head=HASH(0x821b0e8)::DATA>←なんかこうなる 「ref $_[0] ならいけるんじゃないかと…」というつっこみがありました。 結果 1. Baseクラスでref $_[0]を呼ぶように変更 package CMS::Lite::View::Base; use strict; use warnings; use utf8; use Text::MicroTem</cms::lite::view::head=hash(0x821b0e8)::data>…

DATAトークンと継承

yusukebe氏のListPod::App::Lite::Viewを見ていて良さげだったので真似してみた。1. Baseとなるクラスを用意しておいて、こいつをuseする package CMS::Lite::View::Base; use strict; use warnings; use utf8; use Text::MicroTemplate qw(build_mt); sub i…