タグ

ブックマーク / blog.64p.org (87)

  • Perl 5.19.9 で実装された signatures の構文をためしてみる - tokuhirom's blog

    use 5.019009; use autodie; use feature 'signatures'; no warnings "experimental::signatures"; package Foo { sub new($class, $n) { bless {n=>$n}, $class; } sub bar($class, $a) { $a+3; } sub baz($self, $a) { $self->{n} * $a; } } sub add($left, $right) { return $left + $right; } say add(1,2); say Foo->bar(4); say Foo->new(5)->baz(4); みたいな感じでつかえる。 【追記】 use 5.019009; use feature 'signatures'; no warning

    kits
    kits 2014/02/25
    引数の処理はコードとして生成。
  • Perl5 でハイフンを含む関数名を定義した気分になる方法 - tokuhirom's blog

    Perl5 ではハイフンを含む関数名が定義できません。しかし、どうにかして定義することはできないものでしょうか。 はい。定義するだけならがんばればできます。 package Foo; sub new { bless {} } { no strict 'refs'; *{"hoge-fuga"} = sub { die "YAY!\n"; }; } しかし、これをよぶにはいったいどうしたら。。。 my $foo = Foo->new; $foo->can("hoge-fuga")->(); はい。can で coderef をとればうまくいきました。 しかし、ちょっと無理矢理すぎて、使い勝手はすごくわるそうです。 使うのはあきらめたほうがよさそうですね!

    kits
    kits 2013/08/20
    (\&{'Foo::hoge-fuga'})->(); でも。
  • Minilla を用いた Perl モジュールの作り方 - tokuhirom's blog

    http://shanon-tech.blogspot.jp/2013/05/perl.html Perl モジュールの作り方、2013年においては Authoring tool をつかって作るのがよいです。具体的には Minilla でつくるのがオススメであります。 perlbrew なり plenv なりで perl をいれたあとは、 % cpanm Minillaとして Minilla をインストールします。 % minil new Fooとすると、Foo.pm のスケルトンができあがります。作者の名前などは ~/.gitconfig などから自動的にさがしてきますので、設定不要です。 できあがったディレクトリは以下のような形になっています。 Foo ├── Build.PL ├── Changes ├── cpanfile ├── lib │   └── Foo.pm ├── LI

    kits
    kits 2013/05/14
    コマンドが minil なのが気になる。
  • utf8mb4 をゲタに置換する方法 - tokuhirom's blog

    検索用キーワード: How do you replace utf8mb4 characters? s/[\x{10000}-\x{7FFFFFFF}]/\x{3013}/gx

    kits
    kits 2013/05/01
    tr/\x{0000}-\x{ffff}/\x{3013}/c でよさそう。
  • cpanm の挙動がおかしいな、とおもったら確認すべきこと - tokuhirom's blog

    だいたいはセットアップに失敗しているだけですが、cpanm がキョドってるときに僕がやっているトラブルシューティングの手順をここに記す。 おもった通りの cpanm をよんでいるかチェックする% which cpanmおもった通りの perl で cpanm がうごいているかどうかみるcpanm -vcpanm がちゃんとしてるかみる% head `which cpanm`変な PERL5LIB とか PERL5OPT とかを設定してないかみる% env | grep PERLログをみよう~/.cpanm/build.log をみると答えがのっている。 ログをさらそう~/.cpanm/build.log を社内ノーペーストにはって助けをもとめたりするとよい。 社内にそれっぽい人がいない場合は http://lingr.com/room/perl_jp/ に相談するとよい。

    kits
    kits 2013/04/03
    cpanm -v でインストールしていると ~/.cpanm/build.log に詳しいログが載らない…。
  • 安定的な Perl アプリケーション運用のための perlbrew 運用テクニック - tokuhirom's blog

    前提知識Perl5 は minor version 間ではバイナリ互換性が保証されているPerl5 の minor update では、bug fix しか基的に行われないPerl5 Porters の保守的さ度合いは信用できるperlbrew でセットアップするときに気をつけることインストール名をデフォルトの perl-5.16.3 などとせず、perl-5.16 と minor version を含めないようにする。 例: perlbrew install perl-5.16.2 --as perl-5.16セキュリティフィックスがでた場合の処理chromaticの記事で知ったのだが、perlbrew には upgrade-perl というコマンドがあり、最新のバージョン(マイナーアップデートのみ)にアップグレードすることが簡単にできる。 perlbrew upgrade-perl

    kits
    kits 2013/03/13
    インストール名にマイナーバージョン番号を含めず、perlbrew upgrade-perl で修正を適用。
  • s/a # ]//x 問題について - tokuhirom's blog

    kits
    kits 2013/03/07
    s/[\n a\#]\]/b/g という解釈だと思う($s = 'a]' 等とした時の動作より)。文字クラス内の空白・改行・# は /x が有効でも単に文字として扱われる。
  • Why does Amon2 generates .psgi file, but Mojolicious does not generate it? - tokuhirom's blog

    素朴な疑問Amon2はpsgiファイルが雛形でつくられるけどMojoliciousではgenerate appで何故つくられないんだろ?。 — dokechin (@dokechin) February 28, 2013 Amon2 は Plack/PSGI のツールチェーンを利用した開発を推奨し、CPAN を使いこなした開発を行うことを目標においています。 一方、Mojolicious の場合は、すべてを内包し、サーバースクリプトなども用意する方針だからです。 (Plack の上で動かすことも勿論可能ですが、それはメインではなくサブだとおもう) 【in English】 Amon2 loves CPAN toolchain includes Plack, PSGI, etc. Then, there is no reason to support .psgi style. But Moj

    kits
    kits 2013/03/04
    Mojolicious の generate app でできたファイルはそのまま plackup でも(自身のサーバでも CGI でも)利用できる。開発方針はあまり関係ないように思う。
  • httpstatus コマンドで、HTTP のステータスコードをすばやくしらべる! - tokuhirom's blog

    一般的な Web Programmer ならば、HTTP Status code はすべて暗記していると聞きました。 しかし、僕は初心者なので、なかなか覚えきれていないので、HTTPのステータスコードをさがすのに便利なツールを用意しました。App::httpstatus です。インストール方法は cpanm App::httpstatus です。というか依存とかないのでhttp://api.metacpan.org/source/TOKUHIROM/App-httpstatus-v1.0.0/httpstatus をコピーしてくればうごきます。 使い方は以下のとおりです。 4xx なコードを列挙する。 % httpstatus 4 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Foun

    kits
    kits 2013/02/21
  • 【適当訳】Any::Moose は Deprecated です。 - tokuhirom's blog

    http://search.cpan.org/~sartak/Any-Moose-0.20/lib/Any/Moose.pm 新しいコードでは Moo を Any::Moose のかわりに使ってください。 Moo のクラス/ロールは、透過的に、そして正しく Moose にアップグレードすることができます。これは、Any::Moose より根的にいいデザインです。Mouse のメタクラスはMoose のメタクラスといいかんじには動作せんのです。 Any::Moose はよくがんばりました。まあなんかそれなりにはうごいていたけど、もうこれ以上つかわないでね :) MooX::late ってモジュールをつかうと Any::Moose から Moo への移植が楽になりますのでお試しあれ〜。 【解説】 後半にいくにつれて適当度がましています。

    kits
    kits 2013/02/07
    "which leaks abstractions all over the place." がむずかしい。
  • cpanm ってなんですか? carton ってなんですか?利点はなんですか? - tokuhirom's blog

    なんか適当に。 cpanm は cpan モジュールをいれてくれる人です。元々は某 VPS のメモリがたりなくて CPAN shell が起動しないからなんとかしよう、みたいなのがきっかけだった気がしますが、今となってはどうでもいいことです。 とりあえずつかっとけば安心なかんじなのが cpanm となっています。 carton ってのは local/lib/perl5/ 以下にアプリの依存モジュールをぶっこんでくれる人です。carton.lock というファイルにモジュールのバージョンとか記録しててくれて、いいかんじにバージョンを固定できるので、他の環境とバージョンをそろえることができて便利です。 たんに local/ 以下にライブラリいれたいだけなら cpanm --installdeps -L local/ . とかしてもだいたいおなじです。 carton exec は、perl -M

    kits
    kits 2013/02/05
    cpanm は依存なし、設定なしで実行できるのが利点と思う。
  • 2013年 のPerl5 の OOP について考える - tokuhirom's blog

    Moo今年の命? 新しくつくるならこれが無難な気がします。速度的にも Mouse とあまりかわらない。 若干依存がおおい気もするけど、インストールベースがふえれば気にならなくなるかな、ともおもいます。 Class::XSAccessor とかつかってるんで、速度的にもホットスポットは速いのがよい。 なお発音はムーだとおもう。 (http://www.forvo.com/word/moo/) Mouse完成している感じがする。得にわるい点もないが、あえていうと xs 部分がおおいので、gfx 以外がメンテできないかんじがするのが欠点か。 Xslate をつかっている場合は自動的に xslate が mouse つかってるので、自然と Mouse がロードされるので、そういった意味では Mouse つかってもいいかなとおもっている。

    kits
    kits 2013/01/17
    Moo はムーで Mo はモだと思う。
  • Email::Sender will switch to Moo? - tokuhirom's blog

    Email::Sender の TRIAL version が cpan にあがっていますが、なんと Moo に移行しています。Moose をつかっているからという理由で Email::Send にこだわったり、Mail::Krohn とかいう alternative をつくったりする時代の終焉がちかそうです。 Mail::Krohn はつくったはいいけどもう will be deprecated になる気がします。 @rjbs++

    kits
    kits 2013/01/09
  • ブラウザで Perl をためせる Farabi がすごい。 - tokuhirom's blog

    web-based Perl editor/interpreter/everything だそうです。 これがおもしろいのは、ブラウザで実行できるとこで、これ Perlito5 つかってるみたいですね。 Perlito5 ってのは https://github.com/fglock/Perlito のことで、なんか Perl5 を JS に変換してくれたりするやつです。直也さんとは関係ないです。

  • carton と古い cpanm をくみあわせたら悲しい話 - tokuhirom's blog

    https://github.com/miyagawa/carton/issues/52 perlbrew install-cpanm でインストールした cpanm にパスがとおってる状態で、carton いれてつかおうとすると、carton は ~/perl5/bin/cpanm をつかおうとしてくれちゃってこまったという話。 cpanm は既知ではないオプションをスルーするので、--showdeps をサポートしてないバージョンだと、実際にそのモジュールを -L なディレクトリにサイレントにインストールしはじめてしまいます。 まあ僕の環境がわるいという話なんだけど、はまりそうなのでバージョンチェックしてくれたらうれしいな、とおもったのでした。

    kits
    kits 2012/08/28
    perlbrew install-cpanm と cpanm --self-upgrade でインストールされる箇所が違うのが難しいところ。
  • Perl5 の標準添付モジュールについての考察 - tokuhirom's blog

    Linux の場合、ディストリビュータの趣味によって tar ball に標準添付されているものが分割パッケージにされたりすることはままあることなので、あまりあてにしない方がいいし、今後 CPANPLUS およびそれの依存によってインストールされるようになってしまっているモジュール郡が標準添付されなくなる可能性も多々ありますので、そういった標準添付かどうかに依存すること自体がまちがっているとおもっています。

    kits
    kits 2012/06/11
    「標準添付かどうかに依存すること」他に追加のモジュールをインストールしなくてよい"かもしれない"、程度には意義はあるように思う。
  • sprintf の引数の挙動 - tokuhirom's blog

    sprintf に配列で引数をわたそうとするとはまる。 use strict; use warnings; use utf8; use 5.10.0; sub fmt { sprintf(@_) } sub fmt2 { my $format = shift; sprintf($format, @_); } say(fmt("Hello, %s", "John")); say(fmt2("Hello, %s", "John")); 2 Hello, Johnえてしてこういう罠があるので perl5 は常に驚きをもって接っすることが可能となっている。

    kits
    kits 2012/04/23
    http://perldoc.jp/func/sprintf printfとも異なる動作。
  • はやりもの一個飛ばしの法則 - tokuhirom's blog

    なんかこう、世間をみておりますと、いろいろなものがはやったりすたれたりしておりますね。 prototype.js のあとに MooTools とかなんかいろいろあったけど、それを静観して jQuery にいったらだいぶ楽でした。 mod_perl1.3 のときに、mod_perl1.9 とか mod_perl2 を導入してる某はてな社や FCGI を導入している某モジャモジャ社の人から DIS られたりもしましたが、それを静観していたら、plack の季節がやってきて、一個とばしで楽でした。 apache1.3 をつかってるときに lighty やばいよっていってる人いましたが、今はメンテされてないようで、僕は nginx をつかっています。 まあそんな風に、流行っているものは、だいたい攻めすぎてたりなんだりであんまり定着しなかったりするので、現状のものにたいしてそこまでのメリットがないの

    kits
    kits 2012/04/04
    mod_perl1.3 → plack で3個飛ばしているように見える。
  • プログラミング言語 Tora を公開した - tokuhirom's blog

    http://tora-lang.org/ Perl6 の開発が宣言されてから10年以上の歳月がたち、いまだ実用的な実装はあらわれません。 そんななかで、next perl 的なものをつくりたいと gfx がいってから 3ヶ月ぐらいたっていますが、こちらも一行もコードをかいた様子はありません しょうがないので僕がつくってみました。まだあらけずりですが、意外とうごいています。 今回、とくに Perl5 にあった機能のなかでけずりたかったものは以下のとおり context@ary, %hashつけたかったものは以下のとおり autoboxingMoose 的なものの組み込みハックしやすいVM組み込みライブラリの実装しやすさ 未実装な点は以下のとおり Moose 的なアクセサSignal handlingこまかい socket 関連のものHash::MultiValue の組み込みなどなど。 g

    kits
    kits 2012/04/01
    他の活動を引き合いに出す必要はないのではと思う。/ 所々スーパーpre記法っぽい記号がそのまま出てる。
  • Perl5 においてファイルからの読取る場合における Malformed UTF-8 問題 - tokuhirom's blog

    Perl::Critic が最近 PerlIO layer に :utf8 つかうと怒ってくるけど、べらんめえしったことか! とおもっていたら、サイトが表示できなくなった(このような問題を hasegawayosuke 現象と我々はよんでいる)ので、ちゃんと調べた。 https://metacpan.org/module/Perl::Critic::Policy::InputOutput::RequireEncodingWithUTF8Layer 以下のようなスクリプトを実行する。 #!/usr/bin/perl use strict; use warnings; use utf8; use 5.010000; use autodie ':all'; use Devel::Peek; { open my $ofh, '>', 'foo.txt'; print $ofh "\xC0\xAF"

    kits
    kits 2011/11/02
    読み込むときの :utf8 には危険がある。perlunifaq にも記載あり。 "What is the difference between :encoding and :utf8?"