2011-01-01から1年間の記事一覧
「初めてのRuby(P151)」を読んでいたら以下のような記述があった。 class Foo @@class_variable = 'foo' def print p @@class_variable end end class Bar < Foo p @@class_variable #=> "foo" @@class_variable = 'bar' def print p @@class_variable end e…
会社の後輩に教えていて普通に分からなかったので赤裸々メモ。 わたしって、(ry PerlでのOOのチュートリアルにperlbootとかperltootみていたら同一ファイル内での継承ばかりだったので、分割してみたら、動かなかった。 Animal.pm package Animal; sub speak…
メモ。 5.8.5を使用しなければならない中で、簡易なViewクラス作ったら見事に動かなかった。 __PACKAGE__が正規表現内でクラス名にならない いや、正確には取れるんだけど、その中でeオプションで更に評価したらとれない感じ。 正規表現内で正規表現を使う(…
久しぶりに「Perlベストプラクティス」を開いたら、忘れていた忠告をされたのでメモ。 コードを書くときには、あなたのプログラムを保守する誰かが、あなたの居場所を知っている凶暴な変質者であると心得よ (P5) 確かにこう考えたら迂闊に杜撰なコード書けな…
はい、CGIです。 さくらのレンタルサーバースタンダードプランでまだ借りていて、 PerlでちゃんとWebサイトを動かすのにCGIくらいしかないのでまあやってみた。 最近東方の自作アレンジというジャンルがおもしろいなーと思い、公式のタグ検索だけだとどうも…
ちょっと悩んだのでメモ。 あるメソッドにおいて、引数を全部配列に入れる、ただし引数がなかったらデフォルトのリストを配列に入れる、ということをしたかった。 sub my_method { my ($self, @list) = @_; @list ||= @DEFAULT; … } しかしこれはエラーで怒…
タイトル通り。 というか今まで意識してなかったけど、試したらそうだったのでメモ。 #!/usr/bin/env perl use strict; use warnings; sub a { return b() } sub b { return c() } sub c { return d() } sub d { return e() } sub e { return wantarray? 1..…
いつのまにかText::Xslate::Bridge::TT2Likeのhtml_line_break()他3つがデフォルトでHTMLエスケープされるようになってた。 もうこんなことしなくていいんだね。やったね。 [% html_line_break(html_escape(report.item1 || "")) %]↓ [% html_line_break(rep…
時代に逆らいCGIでのベンチマーク。 さくらレンタルサーバのスタンダードプランでPerlを使うにはCGIの選択肢しかないので、 効率のいい書き方を考えてみる。 その前に素の状態のベンチマークを測ってみた。 さすがに共有サーバでベンチマークをとるのは迷惑…
メモ。 環境は最後に。 Apache+Starman+Amon2 $ starman --disable-keepalive app/app.psgi$ ab -c 100 -n 1000 http://127.0.0.1/app/static/img/ttt/1/sss/thum.jpg … Document Path: /app/static/img/ttt/1/sss/thum.jpg Document Length: 120369 bytes C…
タイトルのとおり入れてみたので未来の自分用。 $ curl -LO http://perl.apache.org/dist/mod_perl-2.0-current.tar.gz $ tar zxvf mod_perl-2.0-current.tar.gz $ cd mod_perl-2.0.5/apxsを使ってmod_*.soのところに入れてもらう。 $ which apxs /usr/sbin/…
WEB+DB PRESS Vol.63作者: 竹迫良範,和田卓人,じゅんいち☆かとう,太田昌吾,小野修司,ミック,嶋田裕二,個々一番,みやけん,清水亮,おにたま,中島聡,角田直行,はまちや2,上谷隆宏,青木俊介,大塚知洋,生尾剛士,大和田純,WEB+DB PRESS編集部出版社/メーカー: 技術…
use strict; use warnings; my $i = 0; # ||||||||||||| my $j = -- $i - $i --; # \ / print "$j\n"; 途中で心折れた。
system()と``は似たようなものかと思っていたら、今日唐突にはまったのでメモ。 system()は出力をそのままにしてくれるけど、``は出力結果がreturnされる。 called.pl #!/usr/local/bin/perl print "called!!\n"; caller.pl #!/usr/local/bin/perl print "sy…
URIオブジェクト作るんだけど、プロパティとしても同じことができないかなんとかしたい。おお、何言ってるのか分からない。 package WWW::ImagePager; use Any::Moose; use URI; has 'basepage' => (is=>'rw', isa=>'URI'); sub BUILDARGS { my ($self, %arg…
といったことができるか試してみた。 #!/usr/bin/env perl package main; use strict; use warnings; use feature qw/ say /; use Any::Moose; has 'x' => ( is => 'rw', 'isa' => 'Int' ); has 'y' => ( is => 'rw', 'isa' => 'Int' ); no Any::Moose; # ma…
要件定義 以下の種類が少なくとも1文字は存在するパスワードを作成する。 英大文字 英小文字 数字 記号(!,#,$,%,&,@,?,*,+,-) 実装 MyPassword.pm package MyPassword; use strict; use warnings; my $DEFAULT_PASSWORD_LENGTH = 8; my @c = ('a'..'z'); # l…
ある条件に満たない場合、それを中でもう一度再帰的に呼ぶのがいいのか、 あるいは最初から無限ループにして、条件が満たされたら脱出するのがいいのか、 分からなかったのでベンチマークしてみた。 ただ、サブルーチン呼び出しのコストは高いとどこかで見た…
読んでます。 Perl CPANモジュールガイド作者: 冨田尚樹,タナカユカリ出版社/メーカー: ワークスコーポレーション発売日: 2011/04/08メディア: 単行本(ソフトカバー)購入: 20人 クリック: 2,028回この商品を含むブログ (20件) を見る その中でずっとなんと…
lib.pmのPODを読んだメモ。 lib - search.cpan.org @INCに追加する use lib LIST; は、 BEGIN { unshift(@INC, LIST) } とほぼ同じである。 サーチパスである@INCの末尾ではなく、先頭に(unshift)追加される。 もしこの際、 パスを指定しない 存在しないパス…
昨日の続き。 ソースフィルタを使って作った。 Xubname.pm package Xubname; use strict; use warnings; use Filter::Simple; my %IDENT = ( '?' => __PACKAGE__.'_is_', '!' => __PACKAGE__.'_destroy_or_danger_', ); FILTER_ONLY code => sub { s[ ( sub …
Rubyでは「!」がつくメソッド名は、破壊的を意味する。「?」がつくメソッド名は、真偽値を返却する。 逆輸入的にPerlでも同じことができないか考えてみた。(CPANなしで考えてみた) なんか…あんまり綺麗じゃないけれどこんな感じでやっつけた。 package Xubna…
.array_explain{border:1px solid #cccccc;border-collapse:collapse;margin:0;} .array_explain th,.array_explain td{border:1px solid #cccccc;} .array_explain td{text-align:center;width:40px;} .array_explain th.dollar_n{background-color:#5555dd…
先にグッドプラクティス。 use List::Util; my @shuffled = shuffle(@array); さてこの中はどのように実装されているのだろうか。 まずシャッフルとは 配列内の要素をランダムに順番を入れ替える(シャッフル)場合、大きく2種類の方法がある。 偏りのあるシャ…
通常は、Youがdeadならdieしちゃいなよ、ということでdie→evalして例外を捕捉する。 が、常識外れのexitで勝手に終わっちゃっているプログラムをなんとかする。 最初はシグナルハンドラというか疑似シグナルでなんとかなるかなーと思っていたけれど、それで…
大変だった。 来週から更新できるはず。
ファイルを連番に変換するスクリプトを書いていたところ、「001」から始めたかったのに、なぜか「000」から始まっていて警告も出ていなかったのでメモ。 #!/usr/bin/env perl use strict; use warnings; use feature qw/ say /; { my $num = 1; sub closure1…
カテゴリ 多機能|重い|非推奨 軽い テンプレートエンジン Template Text::Xslate WAF Catalyst Mojo WWWアクセス LWP Furl CPAN cpan cpanm OOP Moose Mouse 継承 base parent ORマッパ DBIx::Class DBIx::Skinny|Teng ログ Log::Log4perl Log::Minimal …
よく考えたら…よく考えなくても当たり前だったんだけれど、メモ。 my $code_ref = sub { print "実行しました。\n" }; $code_ref->(); &{$code_ref}(); デリファレンスはそういえば2種類あったと思い出した。 「->」で取り出すか、「頭にファニー文字つける…
PHPのstdClassがシンプルだったので、Perlでやってみた。 PHP first_name = 'Taro'; $obj->family_name = 'Yamada'; print $obj->first_name; //=> Taro print $obj->family_name; //=> Yamada Perl stdClass.pm package stdClass; use strict; use warnings…