タグ

ブックマーク / blog.livedoor.jp/xaicron (2)

  • にひりずむ::しんぷる - Git ライクなコマンドライン引数を処理できる Getopt::Compact::WithCmd を書いた

    近いうちに水性ペンを買います。(挨拶) コマンドライン引数を処理するモジュールっていっぱいありますね!ありすぎてどれがいいかよくわからないし、「まぁぶっちゃけ Getopt::Long さえあれば大体いいよね!コアだし!」って感じですが、まぁなんか書いた。 xaicron's p5-Getopt-Compact-WithCmd at master - GitHub App::Cmdとかありますが、あれはモジュール化しなきゃいけなくて、大変めんどうです。*1 俺は一枚のスクリプトに書きたいんだ!! サブコマンド前提 usage は自動生成 default や required の指定が可能 依存が少ない(かも)*2 という感じです。最初は、Getopt::Compactを継承して書いてたんですが、途中からなんかあびゃーってなったのでやめました。使い方は大体一緒ですが。 Getopt::Com

    aereal
    aereal 2010/09/24
  • にひりずむ::しんぷる - 勝手に添削 - ハッシュを使おう

    この実装だとものすごくの遅いです。 要素数が、少ない場合はまぁそんなに時間がかからないかなーという感じでしょうが、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)?よくわからんけど)が発生

    aereal
    aereal 2009/11/16
  • 1