タグ

2009年11月16日のブックマーク (5件)

  • にひりずむ::しんぷる - 清く正しいゴミフェーズ

    An implementation of Devel::GlobalDestruction in pure Perl - use GFx::WebLog; perlobj.podから use strict; use warnings; package Subtle; sub new { my $test; $test = \$test; warn "CREATING " . \$test; return bless \$test; } sub DESTROY { my $self = shift; warn "DESTROYING $self"; } package main; warn "starting program"; { my $a = Subtle->new; my $b = Subtle->new; $$a = 0; # break selfref warn "leaving

    xaicron
    xaicron 2009/11/16
  • An implementation of Devel::GlobalDestruction in pure Perl - Islands in the byte stream (legacy)

    Devel::GlobalDestruction はPurePerlでも実装できる。 END{ $in_global_destruction = 1; } sub DESTROY{ return if $in_global_destruction; # do something complex } Perlのソースコードも読んだが,これで完全にDevel::GlobalDestruction::in_global_destruction() の代替になる。 ちなみに,Perl終了時にデストラクタ起動したくなければ,以下のようにするとDESTROYの呼び出しそのものをスキップできる*1。 END{ *DESTORY = sub {}; } *1:5.10.1以降のperlでは,最適化により空のデストラクタの呼び出しがスキップされるため。

    An implementation of Devel::GlobalDestruction in pure Perl - Islands in the byte stream (legacy)
  • 第20回 Email::Sender:メールを送信する | gihyo.jp

    メール送信のあれこれ たとえばウェブアプリケーションでなにかの注文を受け取ったとき、あるいはシステム管理ツールでなにか異常を発見したとき、ユーザや管理者にメールを送れるようにしたい、というのはよくある要件です。昔はヒアドキュメントやテンプレートエンジンなどを使って送信したいメールを用意したあと、sendmailへのパイプを開いてメールを流し込んでいたものですが、いまはメールの作成から送信まで、すべてモジュールを使って実現できるようになっています。 とはいえ、需要が大きいだけにメール関係のモジュールは山のようにあります。ディストリビューション(パッケージ)の数だけで500を数えますし、メール関係の名前がついたモジュールは現在CPANにアップロードされている7万以上ものモジュールのほぼ1割を占めるほどです。これではどれを使えばよいのかわからないという声があがるのも当然でしょう。 そこで今回はP

    第20回 Email::Sender:メールを送信する | gihyo.jp
    xaicron
    xaicron 2009/11/16
    ちょうど気になっていた話題
  • にひりずむ::しんぷる - 勝手に添削 - ハッシュを使おう

    この実装だとものすごくの遅いです。 要素数が、少ない場合はまぁそんなに時間がかからないかなーという感じでしょうが、1000行ぐらいのCSSファイルを処理したらいつまでも終わらないでしょう。 問題の個所は以下の場所。 sub check_order { my $line = shift; my $order = 0; for (my $i = 0; $i <= $#property_order; $i++) { if ($line =~ /^\s*$property_order[$i]:/) { $order = $i; last; } } return $order; } 1つの要素番号を得るために、毎回、最大数百回のfor文(このプログラムだと454回)が実行されます。 しかもこれがsortのたびに発生するので、とんでもない回数の処理(最悪でO(n2)*O(n)?よくわからんけど)が発生

    xaicron
    xaicron 2009/11/16
  • CSSのプロパティをソートするPerlスクリプト

    CSSを書く時に「セレクタ内でCSS仕様書でのプロパティの出現順序に従ってソートする」という個人的なルールを守っている。何かコーディングにおいて便利な理由があるからというわけではなく、第三者に説明する時に「仕様書の出現順で書いてます!」とかで済ませられるから。今まではファイル全体を処理するオレオレPerlスクリプトで適当にやっていたのだけど、Vimで選択範囲だけをソートとかやりたくなったので、普通に標準入力を読んで結果を標準出力に吐くように書き直した。ついでにCSS3のプロパティとFirefox(Mozilla)やSafari(WebKit)、Opera(Presto)、Internet Explorer(Trident)の独自拡張などへも対応させたりとか。 #!/usr/bin/perl # Author: Kyo Nagashima <kyo@hail2u.net>, http://h

    CSSのプロパティをソートするPerlスクリプト