Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. モジュール
  3. データベース
  4. DBIx::Custom
  5. here

order by句の生成 / DBIx::Custom

DBIx::Custom::Orderクラスを利用するとorder by句を簡単に記述することができます。たとえば、デフォルトの順序を最初に指定しておいて、状況に応じて順序をカスタマイズすることが簡単にできます。

DBIx::Custom::Orderオブジェクトを生成するには、orderメソッドを使用します。

my $order = $dbi->order;

DBIx::Custom::Orderオブジェクトが取得できます。

並びを指定するにはprependメソッドを使用します。order by句のパーツが前へ前へと追加されていきます。

$order->prepend('title', 'price desc');
$order->prepend('author desc');

最終的にorder句で利用する文字列に変換するにはto_stringメソッドを利用するか、DBIx::Custom::Orderオブジェクトを文字列として評価します。

my $order_str = $order->to_string;
my $order_str = "$order";

次のようなorder句が生成されます。

order by author desc, title, price desc

では次に同名の列名を含むものをさらにprependして見ましょう。

$order->prepend('price asc');

この場合には、priceが二つ存在しますが、DBIx::Custom::Orderオブジェクトは、重複を適切に処理してくれます。後で追加されたものが優先されます。文字列化すると次のようなorder by句が生成されるのが確認できます。

order by price asc, author desc, title

もし並びの順序が固定されている場合はDBIx::Custom::Orderオブジェクトを使わずに直接記述するのが簡単です。並びの順序を動的に変えたい場合にDBIx::Custom::Orderオブジェクトを利用しましょう。

  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。