Perlにはpack関数、unpack関数というのがあって、プログラムの基本書にも載っていたりはするのだが、あの解説を読んでもさっぱりわからないのでちょっと試してみることにした。 pack関数、unpack関数の意味不明な解説の例 http://www.tohoho-web.com/wwwperl2.htm#pack 別にこのサイトが悪いわけではなく、 どれ読んでもこんな意味不明の解説しか書かれていない。 今回必要な項目をちょっと抜粋してみる。 pack(template, list) バイナリデータを生成する。templateでlistがどんな形式のデータなのか指定する。 後ろに数値を付けるとその個数分、アスタリスクを付けるとlistの最後までバイナリデータに変換する。 unpack(template, expr) バイナリデータを解釈する templateの例 c 符号付き1バイト数
名前 説明 結合とは何か 結合とリレーションシップを定義する 結合を使用する 複雑な結合など 複数のリレーションシップをまたぐ テーブルのエイリアス 自己結合を行う 原文へのリンク 翻訳者 名前 DBIx::Class::Manual::Joining - DBIx::Classでテーブルを結合するためのマニュアル 説明 このドキュメントは、DBIx::Classで結合を大々的に使用して(又は使用せずとも)、通常のSQLをDBIx::Classベースの問い合わせへ変換する際の助けになるでしょう。 結合とは何か ここまで来たものの、結合の何たるかが実際まだよく分からない、という場合は、ここの代わりにDBIx::Class::Manual::Introを読むのも良いかもしれません。結合の何たるかを心得ている場合は、このパートは読み飛ばしてください… ともあれ、ご説明しましょう。あなたが(非)常
検索 検索結果のページ分け 問い合わせに対して大量の結果が返されることが予想される時は、DBIx::Classに対して結果セットをページ分け(一度に少しずつ取得)するよう要求することができます: my $rs = $schema->resultset('Artist')->search( undef, { page => 1, # 取得したいページ番号(デフォルトは1) rows => 10, # ページ毎の件数 }, ); return $rs->all(); # 1ページ目を全て取得する page属性は、検索において必ずしも指定する必要はありません: my $rs = $schema->resultset('Artist')->search( undef, { rows => 10, } ); return $rs->page(1); # 最初の10レコードを含むDBIx::Class
Catalyst::Manual::Cookbook - Cooking with Catalyst - metacpan.org :Path :Args(0) とか :Local とか、以前マニュアルを読んだけど忘れちゃったのでまた読んだ。 :Path は sub handler :Path('hoge') {} とかやると、 /hoge とかにアクセスしたときに呼ばれる。コントローラクラスにはやすメソッドを、実際外部からアクセスさせる URL のパスと違うものにできますよ、ということか。 Sledge でいうと Sledge::Dispatcher::Properties とかに相当するのかな。ヘルパーで作られる sub index :Path :Args(0) で引数なしなのはなんでそうなってるのかよくわからず。 index は default や end と同じで特殊なものらしいか
はじめに Catalyst::Plugin::ConfigLoaderを使うと異なる環境の為の設定を環境変数のみで制御出来ます。 下準備 ちょっと癖物なのが下記のように設定しなきゃいけないって事です。 package MyApp; use Catalyst qw/ConfigLoader/; __PACKAGE__->config( file => __PACKAGE__->path_to(conf) ); で実際にconfディレクトリに下記のようにファイルを作ります。 $ ls conf/ myapp.json myapp_local.json myapp_service.jsonこうして例えば、 $ cat conf/myapp.json { name: 'MyApp', foo: 'foo' } $ cat conf/myapp_local.json { foo: 'bar', ba
日付型の変換処理 Date/Timestamp変換のまとめ - Yuta.Kikuchiの日記 10言語のプログラミング言語に対してそこそこの知識を保有している@yutakikucです。いろんなプログラミング言語を使用していると文法を覚えるのは大変ですよね。PHP書いている途中からJavaScriptの文法を誤って書き始めたり... それぞれの言語の文法の違いを事細かく覚える事は無理に近いです。今日はそんな各種言語仕様の記述で難解なDateTime/TimeStampについて紹介したいと思います。扱うのはWeb系のメジャープログラミング言語のSQL/C++/Java/JavaScript/Perl/PHP/Python/Rubyになります。Mysqlからデータを取り出した後や、WebAPIから取得したデータを表示用の日付フォーマットに変換する事があると思うのでそこで利用できる知識になるかと
はじめに autovivificationを避ける myと後置ifを同時に使ってはならない return;で返る値は空のリスト 正規表現によるバリデーションでは\Aと\zを使おう '0' は偽で評価される each は中断した時、中断した時点の状態が残り続ける おわりに はじめに こんにちは。アプリケーションエンジニアの id:t_kyt です。 春です。Perlを始めるにはいい季節ですね。Perl始めていますか? どの言語にもハマりどころというものがありますがPerlも例外ではありません。というわけで今回はPerlを始めた人がハマりがちなポイントを幾つか紹介したいと思います。 この記事ははてなの教科書程度の知識を前提としています。またモジュールに依存しない部分に絞りました。 github.com autovivificationを避ける autovivificationとはundefの入
Perl › 演算子 › here Perl5.10からは、とても便利なDefined-or演算子「//」が導入されました。スラッシュが二つ続く演算子です。とっても検索しにくいので、早めに覚えておくのがいいと思います。近年の機能追加では、僕的には一番お勧めの機能ですね。 # Defined-or演算子 // Defined-or演算子は、左辺が定義されている場合は、左辺値を返却し、未定義の場合は右辺値を返すという動作をします。 # 右辺が代入される my $value = undef // 'default'; # 'default' # 左辺が代入される my $value = 0 // 'default'; # 0 my $value = '' // 'default'; # '' my $value = 'foo' // 'default'; # 'foo' これは、値が与えられなか
Perl では整数を扱うことができるが、とても大きな値 (あるいはとても小さな負の値) になると、自動的に浮動小数点数に切り替わる。 では、整数のまま扱える値の範囲はどこからどこまでなのか。 符号付き? 符号なし? 多くのプログラミング言語では、「32 ビット符号付き整数」とか「64 ビット符号なし整数」のような型が用意されている。このような決まったサイズで 2 進数表現の整数がよく使われるのは、コンピュータ自体 (というか CPU) がそのような形式の整数を扱いやすいようにできているためだ。 Perl はどうかと思って調べてみたところ、Perl インタプリタをビルドした時の設定によって、整数として扱える範囲が変わるらしい。 32 ビット環境向けにビルドした場合 32 ビット符号なし整数と、32 ビット符号付き整数が使える 64 ビット環境向けにビルドした場合 64 ビット符号なし整数と、
1.リスト 複数のスカラ変数を並べた構造を『リスト』といいます。リストはスカラと同じように数値、文字列を区別なく扱います。リストの書き方はとても簡単で、値をカンマで区切り、その全体をカッコで囲むだけです。1、2、3の 3 つの値のリストは、以下のように表します。 (1, 2, 3) リストの代入 リストの要素に代入する場合は、下記のような方法があります。 ($a, $b, $c) = (1, 2, 3); リストの中にリストがある場合には、自動的に展開されます。 (@list1, @list2, &function) 上記のようなリストは @list1 のすべての要素の後に @list2 のすべての要素を追加し、その後にfunction というサブルーティンが返すすべての要素を追加します。 リストの要素数と変数の数が違う場合 リストの要素数よりも、用意した変数のほうが多い場合には、あまった
This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.
DBI/DBDの使い方 この文章は、perlでcgi等のプログラムができ、SQLの基本的な使い方を知っているひとを対象に書かれています。 また、DBI/DBDモジュールを利用するには、perl5のオブジェクト指向(風)プログラミングの知識もある程度以上は必要です。 DBI/DBDとは、perlとデータベースの間をとりもってくれる汎用インターフェイスです。 DBIモジュールとDBDモジュールからできており、DBDモジュールは、各データベースごとに存在します。 プログラマは、DBIモジュールのルールにしたがってプログラミングすることで、どのようなデータベースにも、同じようにアクセスするプログラムを書くことができます。 ここでは、DBD/pg(PostgreSQL用DBDモジュール)を使った例を提示しますが、基本的には、どのようなDB相手でも同様のことができます。
Catalystのお作法 とりあえずCatalystのお作法(基本)をめもってます。 トップページページ一覧メンバー編集 基本的なDB連携 最終更新: catalystmemo 2010年03月08日(月) 18:43:59履歴 Tweet CatalystにおけるDB連携フロー Catalystでは、actionを定義しているControllerよりModelを参照することでDB操作を実現するが、 それを詳細に説明したのが下記画像である。 まずControllerから各DBに紐づいたModelインスタンスより、data-handling要求を出す。(所謂select,insert等) 要求を受け取ったModelは、DBに属する各tableに対応するSchemaクラスを参照することでデータ操作を実行する。 データ操作結果はModelを介してControllerに返却され、これによりDB連携
極意1 組み込み関数のカッコは書かない open my $file, '<', 'hoge.txt'; split //, $c; 組み込み関数と自分が作った関数を一発で見分けられるのは有意義だ。 それに、記号が多いと読み辛い! Perlが標準で持っている関数くらい覚えているぜ!! ということをアピールするくらいの勢いで、標準の関数の括弧はなしで!!!! 極意2 変数は必要になったら宣言 my $c = 1; # $cに関する処理 my $d = 10; # $dに関する処理 プログラム言語の中には、関数の先頭で変数を宣言しなければならない言語があるが、Perlはそんなことはない!!! 必要になったときに宣言するんだ!!!!!! 後で読んだときに、変数をすべて頭に入れる必要がなくなる!!!!! 極意3 つなげる my @c = 1..3; for(reverse @c){ print $_
Perlの名前空間と型グロブに関する応用的な話です。高度な内容ですので、少なくともリファレンスについては理解している人向けです。型グロブも多少知らないと難しいかもしれません。 型グロブとは 名前空間の取得と操作 外部モジュールと名前空間 名前空間の開放と変数の開放 名前空間まとめ 応用:動的な関数のフック 応用:ライブラリの自動リロード 具体的な方法 アンロードルーチン まとめ ※以下特に断りがない限りPerl 5.10での動作確認です。 型グロブとは Perlの名前空間にアクセスする際に出てくるものです。prefrefによれば型グロブには次のようなものがあります。 $scalarref = *foo{SCALAR}; $arrayref = *foo{ARRAY}; $hashref = *foo{HASH}; $coderef = *foo{CODE}; $ioref = *foo{I
ちょっと前まで DBI で非同期アクセスなエントリが各所で上がっていましたが皆さん如何お過ごしでしょうか? さてと、、、歴史的な経緯とか歴史的な経緯とかで生 DBI 相当を使ってる方もそれなりにいるでしょう。奥さん、大事な事なんで二度言いましたよ! DBI のインターフェースってまぁそんな使いやすい物じゃないんですが、工夫次第で出来る事もあります。 ちなみにサンプルデータベースとして、MySQL Documentation - Example Databases の world データベースを使っています。 fetchall_arrayref でデータ整形 まず以下のように使ってみます。 #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use DBI; use Perl6::Say; my $dbh =
どうもkazeburoです。DBIx Trackなのに、DBIxを作らない話。 myfinderさんがDBIxを作る第一歩としてDBIのサブクラスの作り方を紹介しましたが、実際にDBIxを作り出す前に、その機能がDBIの標準機能でできないか調べるのがオススメです。 Callbacksの基本 CallbacksはDBIに標準で用意されているHook機能です。 my $dbh = DBI->connect('dbi:SQLite:dbname=test.db','','', { RaiseError => 1, PrintError => 0, Callbacks => { connected => sub { ... } } }); 接続時のAttributesにCallbacksを追加します。上では接続が完了(connected)したらcoderefが呼び出されます。 接続時にテーブルを作
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く