perlに関するpalmoのブックマーク (20)

  • Test::Class - naoyaのはてなダイアリー

    最近 Perl でテストを書くときに Test::Class を使ってます。(もしかして常識?) これまでは *.t で Test::More をそのまま使ってたけど、テストが大きくなってくるとコードが分かりにくくなったり、自分であれこれしなきゃいけないことが多くてめんどくさい。 Test::Class は xUnit スタイルで Perl のテストを書けるフレームワークです。xUnitPerl 実装といえば Test::Unit もあるんですが、テスト用の関数も Test::Unit の流儀に従う必要があってちょっと嫌。Test::Class は Test::More と Test::Harness とか、普段使い慣れてる Perl らしいテストスタイルを使いつつ xUnit できるという点が良いです。 使い方ですが、 Test::Class を継承したテストクラスを作り テスト用

    Test::Class - naoyaのはてなダイアリー
  • Perlメモ

    複数のプロセスでロック状態が異常であると判断し,そのうちの 1つがロックを解除したことにより,別のプロセスがロックしたにもか かわらず,先ほどロック状態が異常であると判断したプロセスによってこの正常なロッ クを解除されてしまう可能性があります. この方法の問題点は,異常なロック状態を解除する操作が正常なロック状態をも 解除できてしまうことにあります.逆に言えば,異常なロック状態を解除する操作に よって正常なロック状態を解除できなければ問題ないわけです.そのためにはどうす ればよいのか? 答えはロック状態が常に変化していけば よいということです.そして,これを実現するのに都合がよいのが rename による方法になります. 最初のスクリプトで説明しますと,ロックファイルが lockfile という 名前のときがロックが解除されている状態で,lockfile987654321 のよう に後ろに

    Perlメモ
    palmo
    palmo 2006/06/25
    Perl のカテゴリ別 tips。とても便利。
  • 一般ユーザ環境におけるCPANモジュールの使い方 - iandeth.

    先週公開した、じゃらんWebサービスを使ったサンプルサイト「シンプル宿検索」にて、perlのソースコードも一緒に公開してみたのですが、さっそく興味を持ってくれた方から問い合わせを頂きました。 cgiを実行させようとしたら以下のエラーが出てしまいました: Can't locate Template.pm in @INC (中略) at search.cgi line 5 ... Template.pm モジュールがインストールされてないよ!って怒られています。あー、コード公開する際は必要なCPANモジュールも一緒に添付しといてあげたほうが親切なのかな?いやでもそれ面倒くさいし無理あるなあ・・・。 Webでキーワード "CPAN" を検索すると出てくるCPANの使い方系ページの多くは、そのサーバの root 権限を持っている前提で、サーバの共通ライブラリ下にCPANモジュールを追加する方法を紹

  • 404 Blog Not Found:perl - ('ぁ' .. 'ん') は動きません

    2006年06月08日17:30 カテゴリLightweight Languages perl - ('ぁ' .. 'ん') は動きません PerlのRange Operator, ..は便利なものですが、限界もあります。 my @alpha_small = ('a' .. 'z'); は期待通りに動いても、 my @hiragana = ('ぁ' .. 'ん'); はそうはならないのです。 ただし、簡単な解決策もあります。 my @hiragana = map { chr } (ord('ぁ') .. ord('ん')); Perl 5.8.1 以降は tr/ぁ-ん/ァ-ン/も、qr/[α-ω]/も使えるのに、範囲演算子はそうでないというのはバグに見えないこともないですが、私自身はこれでもいいと思います。というのも範囲演算子の場合、$a .. $bという変数も受け入れなければならないから

    404 Blog Not Found:perl - ('ぁ' .. 'ん') は動きません
  • 型グロブとシンボリックリファレンスでメソッド定義するときの注意点 - Unknown::Programming

    型グロブとシンボリックリファレンスを使ってメソッドを動的に定義するというケースって結構あります。 例えばアクセサメソッドを提供するmk_accessorというのを作りたいとします。 package Hoge; use strict; sub mk_accessor { my $class = shift; my $accessor = shift; no strict 'refs'; *{"${class}::$accessor"} = sub { my $self = shift; $self->{$accessor} = shift if @_; return $self->{$accessor}; }; } sub new { my $class = shift; return bless {} , ref $class || $class; } Hoge->mk_accessor(

    型グロブとシンボリックリファレンスでメソッド定義するときの注意点 - Unknown::Programming
  • Rubyの変数のお勉強 - Unknown::Programming

    さてさて、三日坊主どころか始めてすらいない状態が続いてましたね。 そろそろやれよと。勉強しますと自分で言い出したんだからやりましょう。 と、言うわけで勉強第一回としてRubyの変数について勉強します。 と、言いたいところだけどまず「ruby」なのか「Ruby」なのかどっちで書くのが良いのだろう? Perlの場合は「Perl」が一般的だ。公式HPでは「Ruby」になってるのでとりあえず「Ruby」でいきます。 さぁ、勉強開始といきますか。 新しい言語を勉強するのって楽しいですね。 基的なスタンスとして「Perlで言うとこういうこと」みたいな僕的解釈を入れつつ勉強してみようと思ってます。 よし! そろそろやるぞ! まずは変数の勉強でもするか! さぁ、Rubyにはどんな変数があるかな? プログラミング言語 Ruby リファレンスマニュアル ローカル変数 インスタンス変数 クラス変数 グローバル

    palmo
    palmo 2006/05/31
    Perlと比較しつつRubyの学習。面白そうです。がんばってください!
  • 多次元配列であれこれ 続き - hibomaの日記

    2次元の配列でビットマップをまねて、左右対称に反転/上下対称に反転 を再現する操作 の続きをやります。 今度は2次元の配列(行列?平面?)を「90度回転」する操作をしてみようと思います。画像を90度回転する ってよくやるよね。写真の縦横の向きを変えたりとか。その操作の再現。 っとその前に前日のコードのリファクタリングからやります。 my @A = qw(a1 a2 a3 a4); my @B = qw(b1 b2 b3 b4); my @C = qw(c1 c2 c3 c4); my @D = qw(d1 d2 d3 d4); my $XY = [ \(@A , @B , @C , @D) ]; 配列は全部無名配列にしてリファレンスとしてぶっ込みました。入れ子になったこの配列をこれからごにょごにょします。 配列に対する操作は sub y_reverse { my $ref = shift;

    多次元配列であれこれ 続き - hibomaの日記
    palmo
    palmo 2006/05/26
    二次元配列の回転。面白い。
  • privateでfinalなメソッドの定義 - Unknown::Programming

    my $_PRIVATE_METHOD = sub { my $self = shift; print 'hoge'; }; sub public_method { my $self = shift; $self->$_PRIVATE_METHOD(); } 外部からアクセスされたくない オーバーライドされたくない そんな場合のみ使用するのもありかと思います。 Perlっぽく行くならmyじゃなくてourで宣言しといて抜け道を用意するのもありですな。 あとで$_PRIVATE_METHODの単体テストやりたいとかになった場合にできるし。 ・・・実際はあまりこんな使い方はしないけど。

    privateでfinalなメソッドの定義 - Unknown::Programming
    palmo
    palmo 2006/05/25
    レキシカルなクロージャによるprivateでfinalなメソッド
  • PHPがどうにも好きになれない理由 - Unknown::Programming

    仕事PerlPHPも使うんだけど、どうにもPHPが好きになれない。 いったいなんでだろうか。先にPerlから入ったもんだから後から入ったPHPに対して不満があるのかな? ま、とにかく両方やっててPHPが微妙だなぁと思う部分を列挙してみよう。 ただPHPに関してそれほど詳しくないので間違っている部分もあるかもしれません。 あ、ちなみにここでいうPHPってのはPHP4(PHP4.4.1)のことです。 変数のtypeミス(strict 'vars') これが一番痛い。 まさしくPerlでstrictを使わずに実装してるような、そう、まるで先祖帰りしてるような感覚になってしまうので当につらい。 変数のスコープ 変数のスコープが関数単位でしか発生しないのが痛い。 これによりif条件の場合のみとかループ中でしか使わない変数とかを定義できない。 つまり、変数の存在範囲を細かく設定できないのだ。 配

    PHPがどうにも好きになれない理由 - Unknown::Programming
  • 多次元配列 ->「ビットマップ」? - hibomaの日記

    唐突ですが my $A = ['a1' , 'a2' , 'a3' , 'a4']; my $B = ['b1' , 'b2' , 'b3' , 'b4']; my $C = ['c1' , 'c2' , 'c3' , 'c4']; my $D = ['d1' , 'd2' , 'd3' , 'd4']; my @XY = ($A , $B , $C , $D ); #もしくはこっちの方が書き方キレイかな? # #my @A = qw(a1 a2 a3 a4); #my @B = qw(b1 b2 b3 b4); #my @C = qw(c1 c2 c3 c4); #my @D = qw(d1 d2 d3 d4); # #my @XY = \(@A , @B , @C , @D); 入れ子になったこんな配列があります。この配列はイメージとして # 1 2 3 4 # #A a1 a2 a3

    多次元配列 ->「ビットマップ」? - hibomaの日記
    palmo
    palmo 2006/05/25
    二次元配列とreverseによる線対称反転。日経ソフトウェア7月号の青木淳さんの「変形」に関する記事を読んだ後だったので、タイムリー感。
  • iandeth. - Perl/CGI辞典 - 土井 毅さん 著 - にて use strict が推奨されていない件について

    iandeth. Perl, Flash ActionScript, MySQL, Movable Type, システム開発 - そんなテーマのサイトdeth. p.32 [参考] 他のプログラミング言語では、変数宣言は宣言に含まれることが多いですが、Perlには変数宣言という概念がありません。Perlは変数が最初に評価された時点で領域を確保します。Perlと他のプログラミング言語で大きく異なるのがこの変数宣言機能の有無であり、見通しの悪い複雑なスクリプトを書いてしまう主因でもあります。 最初のイントロダクションの章でそんな風に書かれています。これを読んだプログラミング初心者の人達はきっと「えぇ?そうなの?Perl使いにくそうだなあ」と思ってしまいますよね、きっと。そしてさらには・・・ p.104 strict プラグマは、Perlスクリプトでの記法を厳密にするためのプラグマです。 (中略

  • Perl OOP におけるクラスの実装方法 : NDO::Weblog

    Perl OOP におけるクラスの実装方法 [ Perl ] Perl で OOP するにあたってはコンストラクタの書き方やアクセサの書き方に色んな方法があります。素で書くと package Dog; use strict; use warnings; # コンストラクタ sub new { my $class = shift; my $self = {}; bless $self, $class; return $self; } # アクセサ sub name { my $self = shift; @_ ? $self->{name} = shift : $this->{name}; } 1; あたりが定番だと思います。インスタンスフィールドをハッシュで実装して、アクセサは getter と setter を兼ねるメソッドとして定義。コンストラクタにおける初期化処理を $self->i

    palmo
    palmo 2006/05/21
    アクセサいろいろ
  • naoya.dyndns.org is offline

    naoya.dyndns.org is currently offline. Please try again later. Questions about our services? Learn more at Dyn.com.

    palmo
    palmo 2006/05/21
    僕はラクダ本から始めました(^_^;)
  • naoyaのはてなダイアリー - Perl の話をまとめた

    use strict がどうのこうのという話があって、そういえば昔自分もそんなこと書いたなあと思っていろいろ自分の書いた Perl の話を見返してて、せっかくだから拙作のまとめでも作っておくかと思いました。とりあえず文章量がそれなりにあって、まとまりのあるものだけを見繕ってみます。 今見ると、当時の理解が不十分で微妙なところもあったりしますが、そのあたりはご愛嬌。 いま読んでもまだ陳腐化はしてなさそうな話 お薦めの Perl をいくつか紹介 : NDO::Weblog Perlおすすめの書籍や情報。今ならここにPerl救命病棟とWEB+DB PRESS総集編を入れるかな。 Perlプログラマのレベル10 - Perlプログラミング救命病棟より - naoyaのはてなダイアリー Perlプログラマのレベル10。なんか他言語にも飛び火した。 Perl の変数に関するちょっとした誤解と、動的な

    naoyaのはてなダイアリー - Perl の話をまとめた
  • アクセサの作り方のまとめ - Unknown::Programming

    アクセサ(2) AUTOLOAD でアクセサ - ぱるも日記 アクセサの作成方法はいろいろあるけど自作するならAUTOLOADとか使わずに、 package Hoge::Class; use strict; for my $method (qw/age name tel hoge/) { my $code = sub { my $self = shift; $self->{$method} = shift if @_; return $self->{$method}; }; no strict 'refs'; *{$method} = $code; } って感じでクロージャと型グロブで定義すればいいかと。 AUTOLOAD使うなら使うで、初回呼び出し時にメソッド定義してしまうのがセオリーなんで、 二度目以降はAUTOLOADが呼び出されなくなるから遅いという問題は解決するかと。 sub A

    アクセサの作り方のまとめ - Unknown::Programming
    palmo
    palmo 2006/05/20
    アクセサいろいろ
  • 404 Blog Not Found:perl - "Hello, world!"から始めたくない人は

    2006年05月18日14:00 カテゴリ書評/画評/品評Lightweight Languages "Hello, world!"から始めたくない人は - 書評 - Perl Cookbook この答えもまたPerlらしく、"More than One Book to Read"なのだが、すでに他のLightweight Languagesをある程度知っているという人ならこちらだろう。 Perl Cookbook (English) Christiansen / Torkington [邦訳: Perlクックブック] F's Garage:Perlを勉強する順番Perl の学習コストを大幅に軽減するスゴイ方法に書いてある、以下のから、まずはこれは読んでおけというオススメのがあったら教えてくださいってのと、読む順番がよくわからんので教えてください。 以前にも何度か紹介したのだが、単体で

    404 Blog Not Found:perl - "Hello, world!"から始めたくない人は
    palmo
    palmo 2006/05/18
    ラクダ本の代わりにクックブック
  • CPANの漁りかた

    Perlの学習コスト高いよね、て感じのエントリが目立つのでふと思い返してみると、ぼくは1年前は 救命病棟でいうところのレベル4くらいでした。変数に our をつけると何がどう違うのかわかなかったりしたのを覚えてます。 その後1年、今はレベル8弱ってとこでしょうか。バグレポートはなるべく出すようにしていますが、車輪になりそうで、モジュールはまだ上げてません。 この1年どうやってレベルを上げてきたかなといえば、CPANあさり、これに尽きます。で、これから Perlやるぞって人にもしかして参考になるかもしれないので、ぼくがやってきた自己流の漁りかたを書いておきます。 1. まずはPerlStyleを読み直す miyagawa さんが以前 WEB+DB PRESS で連載していた Perl Style というのを、総集編マガジンで今も入手可能です。これはロギングとか OR マッピングなどの基的題

    CPANの漁りかた
  • perl - Yet Another Way to Add Singleton Methods : 404 Blog Not Found

    2006年05月06日22:30 カテゴリLightweight Languages perl - Yet Another Way to Add Singleton Methods もちろん! Advanced Perl Programming, 2nd Ed. Simon Cozens [邦訳:実用Perlプログラミング第2版] naoyaグループ - naoyaの日記 - Perl で Singleton Methodということで Class::SingletonMethod みたいにクラス名を汚染しちゃうような方法以外で Singleton Method (特異メソッド) を実現する方法はないかなあ。賢明で懸命なヒョウ(持ってない人は上から買ってちょんまげ)の読者は、これを思いつくと思うのだけど。 package Object::SingletonMethod; use 5.008

    perl - Yet Another Way to Add Singleton Methods : 404 Blog Not Found
    palmo
    palmo 2006/05/07
    AUTOLOADによる特異メソッド
  • antipop - Perl の学習コストを大幅に軽減するスゴイ方法

    にわかに Perl の学習コストについて優れた Perler のみなさんがあれこれ述べておられるので、大変勉強になります。 Unknown::Programming - 新人教育 SQLAlchemy Database Engines 日記。 (TokuLog) - Perl は学習コストが高すぎる naoyaグループ - naoyaの日記 - Perl の学習コスト SQLAlchemy Database Engines 日記。 (TokuLog) - Perlの学習コストとライブラリ naoyaグループ - naoyaの日記 - アンテナ張りまくらないとの件 subtechグループ - Bulknews::Subtech - Perl、アンテナの話 Charsbar::Note - Perlの学習コスト 上記にリンクしたエントリをまとめると、オールドファッションな書き方であれば Per

    palmo
    palmo 2006/05/06
    Perl学習コストまとめ。参考になる。
  • 新人教育 - Unknown::Programming

    明日からちょっと遅めのゴールデンウィークということでなんか更新しとくか。 まっさらな新人にPerl教えるのって当にきついですね。 専門学校レベルのC言語しかやったことないとかいう人は配列やfor文を凄く好む。 ハッシュやforeach使えよと。 はたまた学校でPerlやってましたとか言う人もstrictってなんですか?ってな状態だし。 というかね、専門学校で教えられてるPerlのレベルがね、10年くらい時が止まってるんじゃねーのか、と思うくらいレベルが低いのがなんとかならんかなと。(ということはPerlでOOPとかstrictとかCPANとかを教えてくれるような専門学校があったら凄い生徒集まるんじゃない!?いやいや、世の中はPHP主流になりつつあるらしいぞ) いや、まとにかく勉強しないといけない項目を箇条書きでざーっと上げてみようか。 foreach文 ハッシュ 配列操作関数push,s

    新人教育 - Unknown::Programming
    palmo
    palmo 2006/05/05
    Perl学習チェックリスト。Perl学習日記中なので助かります。
  • 1