Perlとperlに関するperlcodesampleのブックマーク (1,930)

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • [okyuu.com] 特集:No okyuu, No Life Perlの地位向上を胸に 牧大輔さんのエンジニアライフ

    もっと企業でPerlを使ってもらいたい――endeworksの牧大輔さんは社団法人JPA(Jpan Perl Association)を立ち上げ、Perlの企業利用を促進したいという。小さいころから海外で暮らし、ITベンダーのエンジニアも経験した。エンジニアとしての同氏を助けてくれたのは常にコミュニティだった。「自分が恩返しする番になっている」と語る。 この企画はokyuu.com編集部が現在のエンジニア像をリレー形式で追っていくものです。 (取材・文=編集部) 牧大輔(まきだいすけ) 1977年7月13日生 31歳 株式会社endeworks代表取締役 【略歴】 1999年 米Washington University卒業 2000年 Network Appliance入社 2004年 株式会社ライブドア入社 2004年 米Lehman Brothers入社 2005年 株

  • Kansai.pm #11 Social SKK - Kentaro Kuribayashi's blog

    今回のKansai.pm #11は、アルゴリズム特集ということで、いつもに増して濃い話が満載で、特にPFIの吉田さんの発表が強烈でした。とても楽しかった。 そんな中、僕もSocial SKKと題してお話しをしてきました(アルゴリズム特集とは全然関係ない話題ですが……)。というか、最初はXSのはなしをするつもりだったのだけど、時間がなさそうだったのでネタを変更したのでした。XSのはなしもいつかしたいですね。 んで、そのSocial SKKとは、Social IMEをSKKからも使いたいってなもので、既にid:shunirrさんがRubyで実装されているものをPerlでもやってみて、あとちょっと機能を加えましたよ、というものです。詳しくは以下のスライドで。 あと、ここで話したApp::SocialSKKをCPANに上げておきました。 Social SKKView more presentati

    Kansai.pm #11 Social SKK - Kentaro Kuribayashi's blog
    perlcodesample
    perlcodesample 2009/03/23
    Kansai.pm #11 での資料「 Social SKK ]
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 環境に応じたオブジェクトを作成する - Perl入門ゼミ

    Perl › オブジェクト指向 › 環境に応じた振る舞い クラスを少しだけ改造してOSに応じて振る舞いを変更するようにしてみましょう。 1. 環境に応じて振る舞いを変えるポリモーフィズム 環境がWindowsだった場合は、FilePath::Windowsクラスのオブジェクトを作成して、環境がそれ以外だったら、FilaPath::Unixクラスのオブジェクトを作成するクラスを書いてみました。 use strict; use warnings; my $file_path = FilePath->new; my $result = $file_path->cat_path('a', 'b'); print "結果: $result\n"; # ユーザが利用するクラス package FilePath; sub new { my $self = shift; if ($^O eq 'MSWin

    環境に応じたオブジェクトを作成する - Perl入門ゼミ
  • baseモジュールを使ってクラスを継承する - Perl入門ゼミ

    Perl › オブジェクト指向 › base @ISAを使用したクラスの継承を解説しました。けれども、この方法は何かパッケージ変数を触っているので、ほかの言語で継承の構文を学んだ人から見るとどこか変な感じです。 もうすこし、継承を表現するわかりやすい方法があります。それは、baseモジュールを使用する方法です。 baseモジュール Perlの継承は@ISAを使うよりも、baseモジュールを使うほうが良いです。baseモジュールは内部では、 @ISA を触って同じことをしますが、@ISAを触っていることを隠蔽してくれます。 またコンパイル時に@ISAを操作するので、ひとつのスクリプトにクラスの定義とオブジェクトの生成を書く場合に便利です。 では@ISAを使った継承をbaseを使って書き直してみます。 use strict; use warnings; # ボタンクラスを使用する。 my $b

    baseモジュールを使ってクラスを継承する - Perl入門ゼミ
  • DBD::Mock を使ったテスト - 日向夏特殊応援部隊

    DBD::Mock は DBI のドライバの一つで、DBI を使ったプログラムで意図的な状態を作る事が出来ます。 と言う訳でメモ程度に書いて行きます。 データベースハンドルの取得 use strict; use warnings; use Test::More; use DBI; plan tests => 3; my $dbh = DBI->connect('dbi:Mock:', '', '', +{ AutoCommit => 0, RaiseError => 1 }); ok($dbh, 'Create database handle'); isa_ok($dbh, 'DBI:db'); is($dbh->{Driver}->{Name}, 'Mock', 'Driver information'); で、普通に Database Handle が取れます。 SELECT してる箇

    DBD::Mock を使ったテスト - 日向夏特殊応援部隊
  • 継承の仕組み - Perl入門ゼミ

    Perl › オブジェクト指向 › 継承の仕組み Perlにおける継承の仕組みを解説します。 1. 継承の仕組み 継承の仕組みは上位クラスに対してメソッドの探索をしているということです。前回のコードをもう一度見てみましょう。 use strict; use warnings; # コンポーネントクラス package Component; sub x { return 5 } # ボタンクラス package Button; # 継承の記述 our @ISA = ('Component'); sub new { bless {}, 'Button' } package main; # ボタンクラスを使用する my $button = Button->new; print $button->x; Buttonクラスには、x というメソッドがないのに、 x というメソッドを呼び出しているのでし

    継承の仕組み - Perl入門ゼミ
  • クラスを継承する - Perl入門ゼミ

    Perl › オブジェクト指向 › クラスの継承 今回は他のクラスを継承する方法について解説します。 他のクラスを継承する 他のクラスを継承してみます。少し注意してほしいことがあります。通常はクラスというものは、ファイル単位で作成します。もしパッケージ名を、Componet にしたとすると、そのパッケージだけを含んだファイルをComponent.pm という名前をつけて保存します。 そして、そのクラスを利用したいスクリプトから呼び出します。けれども、解説を簡易にするために、多くのサンプルでは、ひとつのファイルの中に複数のクラスを記述します。 x, y というメソッドを持つComponentというクラスを継承したButtonクラスの例を考えてみます。 @ISAを使用した継承 Perlの継承はどのような仕組みで動くのでしょうか。それを説明するために以下のサンプルを動かしてみましょう。 use

    クラスを継承する - Perl入門ゼミ
  • 継承とは - Perl入門ゼミ

    Perl › オブジェクト指向 › 継承とは オブジェクト指向のひとつの特徴に継承があります。 1. 継承の例としてWinwodsのアプリケーションの部品を考える わかりやすい継承のたとえとしてWindowsのアプリケーションについて考えて見ましょう。Windowsのアプリケーションは、だいたい同じ形をしています。上部にタイトルバーがあります、その下にメニューバーがあって、その下にツールバーがあってという具合です。メニューバーの中にはメニューがあります。ツールバーの中にはボタンがあります。 このすべてに共通のものは何でしょうか? メニュー、ツールバー、メニューアイテム、ボタンに共通なものは何でしょうか。 共通するものを探してみましょう。まず、すべての部品は位置と大きさを持ちます。 2. 継承を使用しないクラスを作成する 継承を使用しない部品の実装を考えて見ましょう。 # メニューバークラス

    継承とは - Perl入門ゼミ
  • クラスの作成 - package - Perl入門ゼミ

    Perl › オブジェクト指向 › 構文 › package クラスを作成方法を解説します。 1. クラスを作成するにはパッケージ宣言を行う。 Perlではクラスを作る特別な構文はありません。パッケージ宣言をすることでクラスを作成します。 package Book; これで、Bookクラスが出来上がります。 2. クラスの雛形 コンストラクタとアクセッサ もの型クラスの場合の雛形はこんな感じです。オブジェクトを作成するためのコンストラクタとオブジェクトのフィールドにアクセスするためのアクセッサから構成されます。 package Book; sub new { # コンストラクタの実装 } sub title { # アクセッサの実装 } sub author { # アクセッサの実装 } ひと型クラスの場合はこんな感じです。 package FileParser; sub new { #

    クラスの作成 - package - Perl入門ゼミ
  • コンストラクタの作成 - Perl入門ゼミ

    Perl › オブジェクト指向 › コンストラクタの作成 前回は以下のようなクラスの雛形を作成しました。 package Book; sub new { # コンストラクタの実装 } sub title { # アクセッサの実装 } sub author { # アクセッサの実装 } 1. コンストラクタとは オブジェクトはクラスを元に生成されます。オブジェクトとは何かとかクラスとは何かということは少し忘れて、「オブジェクトはクラスを元に生成される」ということを覚えてください。 そしてコンストラクタとはオブジェクトを生成するメソッドのことです。コンストラクタを作成すれば my $book = Book->new; という記述でオブジェクトを作成できるようになります。 コンストラクタ名には慣習的にnewという名前が使用されます。ですが、コンストラクタはnewという名前に必ずしましょう(なぜな

    コンストラクタの作成 - Perl入門ゼミ
  • 生成したオブジェクトをいじって遊ぶ - Perl入門ゼミ

    Perl › オブジェクト指向 › オブジェクトの中身 作成したオブジェクトをいじって遊んでみましょう。 1. オブジェクトをいじって遊ぶ まずこんな感じで、$book オブジェクトを作成してみます。ここら辺で遊ぶと書いてあるところに、いろいろ記述して遊びます。 use strict; use warnings; my $book = Book->new; # # ここら辺で遊ぶ。 # package Book; sub new { my $class = shift; my $self = {}; return bless $self, $class; } 2. オブジェクトはデータだ! オブジェクトはデータだということを確認してみましょう。 $book->{title} = 'Good news'; $book->{author} = 'Takeshi'; と書くと、普通のハッシュリフ

    生成したオブジェクトをいじって遊ぶ - Perl入門ゼミ
  • コンストラクタに引数を渡せるようにする - Perl入門ゼミ

    Perl › オブジェクト指向 › コンストラクタの引数 今回は、コンストラクタに引数を渡せるようにしてみましょう。 1. コンストラクタに引数を渡す。 オブジェクトを作成するときは my $book = Book->new(title => 'Good news', author => 'Kimoto'); という形が理想的です。 このような機能を持つコンストラクタを作成してみましょう。 sub new { my ($class, %args) = @_; my $self = {%args}; return $self, $class; } 特に難しい部分はありませんね。 2. ハッシュのリファレンスも受け入れたい ハッシュを受け入れられると同時にハッシュのリファレンスも受け入れたいと思うところでしょう。こんな感じに。 my $book = Book->new({title => 'G

    コンストラクタに引数を渡せるようにする - Perl入門ゼミ
  • 汎用的なコンストラクタの雛形 - Perl入門ゼミ

    Perl › オブジェクト指向 › 汎用的なコンストラクタ 汎用的なコンストラクタの雛形を提示しておきます。汎用的なコンストラクタの雛形はちょっと難しいです。 1. 汎用的なコンストラクタの指針 汎用的なコンストラクタは、クラスから呼ばれたときだけではなくて、オブジェクトから呼び出された場合も考慮に入れる必要があります。 クラスから呼ばれた場合と my $book = Book->new; オブジェクトから呼ばれた場合の my $book2 = $book->new の両方に対応する。 またもうひとつの指針として、コンストラクタと初期化処理は分離するということが挙げられます。初期化用のinitメソッドを作成してあげます。 2. 汎用的なコンストラクタの作成 以下が汎用的なコンストラクタの雛形です。 sub new { my $proto = shift; my $class = ref $

    汎用的なコンストラクタの雛形 - Perl入門ゼミ
  • アクセサを生成する - Perl入門ゼミ

    Perl › オブジェクト指向 › アクセサ 今回はアクセッサを作成してみましょう。 1. アクセッサとは何か? オブジェクト指向ではデータを直接いじっては駄目です。オブジェクト指向ではオブジェクトに対するアクセスは公開されたメソッドを通じて行うのが正しい作法だからです。 my $book = Book->new; # 駄目! $book->{title} = 'aaa'; データをいじる場合は、アクセッサを通じて行います。アクセッサとは、データを変更したり取得したりするためのメソッドのことを言います。 以下のようにアクセッサを使ってデータに値を設定するのが正しい作法です。 my $book = Book->new; $book->title('aaa'); クラスを作成する側は、アクセッサを作成して公開する義務があります。 2. アクセッサの作成 では早速アクセッサを作成してみましょう。

    アクセサを生成する - Perl入門ゼミ
  • クラスの雛形 - Perl入門ゼミ

    Perl › オブジェクト指向 › クラスのひな型 クラスの雛形を示しておきます。 1. クラスの雛形 以下がクラスの雛形になります。 package Book; use strict; use warnings; # コンストラクタ sub new { my $proto = shift; my $class = ref $proto || $proto; my $self = {}; bless $self, $class; $self->init( @_ ); return $self; } # オブジェクトの初期化 sub init { my ($self, @args) = @_; # 追加で行いたい処理 } # アクセッサ sub title { my $self = shift; if (@_) { my $old = $self->{title}; return $self

    クラスの雛形 - Perl入門ゼミ
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • Test::Mock::LWP を試す - 日向夏特殊応援部隊

    久しぶりのエントリです。一応元気にやってますよっと。 ここまでのあらすじ 同僚の id:typomaster さんから、Test::Mock::LWP を使ってテスト書きたいんだけど〜と言われたので早速軽く試してみましたよ。 Test::Mock::LWP とは 具体的には、 LWP::UserAgent HTTP::Request HTTP::Response モジュールに対して Test::MockObject 化した物だと考えて良い。それぞれ、 Test::Mock::LWP::UserAgent Test::Mock::HTTP::Request Test::Mock::HTTP::Response モジュールが対応しています。それぞれソースは短いので実際に見てみましょう。 Test::Mock::HTTP::Request package Test::Mock::HTTP::Re

    Test::Mock::LWP を試す - 日向夏特殊応援部隊
  • 2007/05/07 - memo - unknownplace.org

    書き忘れたけどさっきの update_schema.pl は ./script/myapp_update_schema.pl dbi:mysql:tablename username password 見たいな感じで DSN を渡す必要がある。めんどう。 ここら辺があれでまだヘルパーにはなってない。 mizzy.org : Re: DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い 僕の中で流行ってる使い方があるのでかぶせて書いておいてみる。mizzy さんの二個目の例を自分ルール化させた感じ? 作業は一般的なCatalystアプリのディレクトリ構造上であるとして、そこに新しく schema というディレクトリを作成。 そんで、 schema/lib/Schema/{TableName}.pm に各テーブルのリレーション定義とかメソッドとかを自分で書く。