タグ

ブックマーク / fbis.hatenablog.com (6)

  • PerlとPHPのソート処理 - Unknown::Programming

    良く書き方を忘れがちなソート。 特にPerlPHP両方使ってるとPerlはこうだけど、PHPはどうだっけ?とかよくあるのでここらでまとめをしておく。 配列を文字列で昇順・降順ソート # 昇順 @sarray = sort @array; @sarray = sort { $a cmp $b } @array; # 降順 @sarray = sort { $b cmp $a } @array; Perlのsort関数はブロック表記を省略するとデフォルトで昇順ソートになります。 <?php // 昇順 sort( $array , SORT_STRING ); // 降順 rsort( $array , SORT_STRING ); PHPのsort関数は引数に渡された配列をソートする。 第二引数を指定しなくも動くには動くが、省略すると値に数値と文字が混在してるときにおかしくなるので明示的に

    PerlとPHPのソート処理 - Unknown::Programming
    rin1024
    rin1024 2015/10/04
  • MDB2で複数のDB接続を行う場合の恐ろしい罠 - Unknown::Programming

    MDB2を使って複数のDB接続したいなんてことあるよね。 ところがどっこい、実際にコードを書いてみると恐ろしいことが起きた。それは二つ目のDB接続をすると一つ目のDB接続が二つ目のDB接続に乗っ取られてしまうという! <?php // fooというデータベースへ接続し、hoge_tblのカウントする $dbh = MDB2::factory('mysql://user:pass@localhost/foo?charset=utf8'); $res = $dbh->query('SELECT COUNT(*) FROM hoge_tbl'); $row = $res->fetchRow(); $res->free(); print $row[0]; // 5件 // で次にbarへ接続し同様の処理 $dbh2 = MDB2::factory('mysql://user:pass@localh

    MDB2で複数のDB接続を行う場合の恐ろしい罠 - Unknown::Programming
    rin1024
    rin1024 2012/02/21
    ヒー
  • PHPにおける文字列比較の2a問題 - Unknown::Programming

    PHPの文字列比較に関しては古の時代から皆がいばら道を通っているので今更何か語ることも無いんだけどやっぱり良くハマっちゃうということで軽くメモを残しておく。 とりあえずは先人達の苦悩ということでこのあたりの記事は見ておいた方がいいだろう。 素晴らしき自動的な世界〜或いは「型のない」世界〜 - がるの健忘録 PHPでの入力値チェックのすり抜け 上記記事の方が名づけたと思われる(w)いわゆる「2a問題」というものについて書いていく。 この2a問題というのはもう一度再確認すると <?php $a = '2a'; $b = 2; if ( $a == $b ) { // ここを通る } という問題のことだ。 何故こうなるかは元記事やマニュアル等に詳しく書かれているが、カンタンに説明すると「2a」という文字列を数値評価すると「2」として扱われるということだ。 実はコレはPerlでもまったく同じ問題を

    PHPにおける文字列比較の2a問題 - Unknown::Programming
    rin1024
    rin1024 2010/07/05
  • メソッド名一覧どーかく? - Unknown::Programming

    http://ja.doukaku.org/32/ 最近PHPやってるのでリハビリがてらPerlを触ってみる。 test_で始まるメソッドを全て呼び出すわけですが、ワンライナーでやってみた。 use target; do { target->can($_) || sub {} }->() for grep { /^test_/ } keys %target::; ちょっと無理やり臭いな。 よしよし、忘れてないぞ。

    メソッド名一覧どーかく? - Unknown::Programming
    rin1024
    rin1024 2009/11/06
  • 複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming

    ハッシュと配列の参照が入り交じったような複雑なデータ構造の、全value を均等に加工したかったので次の様にしてみました。 (中略) すでに似たモジュールがある気が激しくしています! ご存知でしたらぜひ教えてくださいませ。 [perl] 複雑なデータ構造のvalue を一気に書き換える方法 - harupiyoの日記 ということでData::Visitor::Callbackがズバリそれにあたるものじゃないかなーと。 use strict; use warnings; use Data::Dumper; use Data::Visitor::Callback; my $rh_testdata = { 'a' => 1, 'b' => { 'aa' => 1, 'ab' => [ 1, 2, 3, \ 'test', 5 ], 'ac' => 3, }, 'c' => 3, 'd' => 4

    複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming
    rin1024
    rin1024 2009/10/16
    data::visitor
  • 正規表現でパイプを使うと遅くなる件 - Unknown::Programming

    http://qootas.org/blog/archives/2006/06/perl_regex_perf.html 正規表現でパイプ("|")を使うとめちゃくちゃ遅くなるってことだけどこれって程度によるみたいね。 「コレかコレかコレにマッチする」みたいな正規表現を書くときにパイプ使うのがダメであって、ちょっとでも複雑な正規表現になるとパイプ使っても使わなくても大差無いっぽい。 ってか試してみたらむしろ遅くなった。 # コードは元記事のやつを拝借させてもらいました。 use Benchmark; my $text = ';lskjdf;klvckxv;zijxcv;oa;vlkaefiuqewizlkvnzlxkcnv' . '.z,xmc v/z.x,cmv.z,xnvlafda isjdnfl aksjdfauerfaie' . 'jnlfakjdsn;akj;v akjdfvoa

  • 1