by Mark Jason Dominus Order Higher-OrderPerl online from Powell's Books Download fulltext here There are three versions available. You have your choice of structure or presentation, but not both. License reminder Higher-OrderPerl is copyright ©2005 by Elsevier Inc. Unauthorized reproduction or distribution is absolutely forbidden. You may download the book for your personal use, but you may not
2008年07月05日01:30 カテゴリLightweight Languagesperl - tie()って何をtieするの? 私はタイをまとうのがだいっきらいですが、Perl 5の中で一番好きな関数がtie()だったりします。 tie関数とは - 燈明日記 すると、裏で処理が動き、オブジェクトをコンストラクトしたり、とある処理結果が参照できたり、代入したものに対応したものを格納出来たりする。 というわけで、tie()について語っておくことにしましょう。 tie()とはなにか? ずばり、「オブジェクトではない、perlの組み込みデータタイプを裏でオブジェクト化する仕組み」のことです。それがなぜtieと呼ばれるかと言えば、変数を指定されたクラスに結びつけるから、です。 論より証拠、実際に見てみましょう。 use strict; use warnings; { package MySca

2008年07月02日23:00 カテゴリLightweight Languagesperl - デフォルト値のperlらしい指定法Perl Cookbook (English) Christiansen / Torkington [邦訳:Perlクックブック] これでもよいのだけど、さらに恰好つけるとよりperlらしくなるので。 デフォルト値の扱い。 - サンプルコードによるPerl 入門Scalarによるデフォルト値 sub num{ my $num = shift; # .... } ここは sub num{ my $num = shift || -1; # .... } の方がわかりやすい。0または''を入力値、すなわち非デフォルト値として扱いたい場合のみ、 sub num{ my $num = shift; $num = -1 if not defined $num;

2008年06月30日04:00 カテゴリLightweight LanguagesTipsperl - use Carp; # warn() と die() だけじゃなくて 以下のエラー処理の方法にちょっと口を挟みたくなったので。 エラー処理を行う。 - サンプルコードによるPerl 入門 warn() vs. die() まず、warn()の使い方。エラーに対して使ってはいけません。warnはその名の通り、あくまでもエラーではなく警告です。エラーの際にはdie()を使わなければなりません。 警告とエラーの違いですが、警告は「続けて処理してもいいけど、これはあなたの意図ではないかもしれません」という場合、エラーは「このままでは処理を続けられません」という場合です。 たとえばperlの場合、抜けた引数はundefなので、数値としては0、文字列としては''として解釈されます。それらをデフ

2008年06月03日06:00 カテゴリLightweight Languagesperl - 勝手に添削 -Perl入門#1@ITPro さすがに出典が日経Linux 2003年7月号だけあって、少しトウがたってはいるけど、現在でもわずかな修正で使える記事。さすが川合さんといったところか。 第1回 Perlの文法の基本:ITpro というわけで、この記事の「現代化」Patchを。 全般 use strict;だけではなくuse warnings;も加えましょう。 さらに,調べても分からないことがあれば,メーリング・リストやユーザー・グループ*2に質問してみてもよいでしょう。blogに書くのもアリです。あと私は使っていないけどIRCとか。 ビルトイン関数は()でくくらない方が視認性が上がります。 before: chomp($sLine); after: chomp $sLine;

2008年05月10日15:00 カテゴリLightweight Languagesperl - There's more than one way to die いよいよ来週はYAPC::Asia::2008ですが、Hotel DANは本日から開業。我が家では本日から20日までが「YAPC旬間」です。 というわけで、その間は少なくとも一つはperlがらみのentryにしていく所存です。 で、第一回はいきなりdieの話題です。 開発日誌 pp-perl:Perlのエラー処理プログラムを停止して、メッセージ(LIST)をSTRERRに出力します。 間違っていませんが正しいとは言えません。 die = throw die()とは何か? まずは、以下のコードをご覧下さい。 [Run via codepad] eval { my $zero = 0; my $dead = 1 / $zero;


2008年04月09日01:00 カテゴリLightweight Languagesperl - Encode 入門 すでにOSCONでもYAPCでも、あちこちそちこちでこの基本方針に関しては話したのですが、ここ 404Blog Not Found でも改めて。Perl で utf8 化けしたときにどうしたらいいか - TokuLog 改め だまってコードを書けよハゲ 入り口で decode して、内部ではすべて flagged utf8 で扱い、出口で encode する。これがすべてです!とにかくこの基本方針をまもっていれば幸せになれます。ここでは、EUC-JPでエンコードされたファイル中の「小飼弾」「こがいだん」「コガイダン」「Kogai Dan」を正規表現で書き換えて標準出力にEUC-JPで出力するプログラムを例にとって説明します。 decode() then encode(

2008年03月27日03:00 カテゴリArtLightweight Languages 「同じコード」の同じって何さ - TAPのススメ 問題は、この「同じコード」の定義。 「誰が書いても同じコード」は大事なことなのか - ひがやすをblog でも、「誰が書いても同じコード」にするってのは、そもそも無理だと思うんだよね。そうやって、わざわざドキュメントをたくさん書かせても、めためたなコードを書くやつはいて、総合テストするときに、現場は燃え上がるもの。ある程度の規模以上のプロジェクトなら、どこでもそんな感じじゃないかと思います。同じ「書き方」をしなければならないのか? 結果が「同じ」ならいいのか? もし後者だとしたら、実は 重要なのは、「誰でもメンテナンスできるコード」にすること。そのために、コーディング規約は、きちんと決めてみんなで守る、それ以上は、がちがちに縛る必要はない。 すら必

はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です -はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。はてなグループに投稿された日記データのエクスポートについて -はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記はてなグループ日記のエクスポートデータは2020年2月28
2008年01月10日10:15 カテゴリLightweight Languagesperl - myとourとscopeと うーん、微妙に違います。 local と my -IT戦記 our 名前をソース上のスコープに限定. local 値をスタック上のスコープに限定. my 名前と値の両方をソース上のスコープに限定 なら、理解しやすいと思います>< 以下のコードを見てみましょう。何と表示されるでしょうか。 { package Foo; our $bar = 'baz'; } our $bar = 'drink'; warn $bar; warn $Foo::bar; 「ソースに限定する」あるいは「ファイルに限定する」のだとしたら、この挙動はありえないはずです。 ここで、Perlのスコープに関するルールを覚えておきましょう。すっごく簡単です。 {}は、問答無用でスコープを作る = b

2007年12月25日17:30 カテゴリLightweight Languagesperl - no underscore; # so $_ is forbiddenPerl Cookbook (English) Christiansen / Torkington [邦訳:Perlクックブック] そんなあなたのために、underscore.pm whileでファイルハンドルをループする時の暗黙の$_について - Unknown::Programming whileでの暗黙の$_はローカル化されないのです。コレ超重要。 /lang/perl/underscore/ - CodeRepos::Share - Trac @CPAN (Coming Soon!) これの仕組みはPerl Cookbookのp. 543に出てきますが、こちらのバージョンは少し機能強化してあります。croakの

はじめに ローカル上のファイルをサーバー側にアップロードするCGIを作成する方法を紹介します。Perlの標準モジュールであるCGI.pmを使用すれば、簡単にこの機能が実現可能です。 このスクリプトの作動環境は次の通りです。Windows2000 SP4、Apache 1.3.31、ActivePerl 5.8.4build 810。そしてUNIX環境でも確認しています。FreeBSD、Apache1.3.31、Perl5.6.1。CGI.pmはバージョン2.47以上を想定しています。 尚、CGI.pmは標準モジュールなので新しく用意する必要はありません。すぐに利用出来ます。以下に簡単な使用例を取り上げてみます。HTMLのフォーム部分の作成 さて最初はHTMLのフォームを作成します。これを仮にupload.htmlとします。 <?xml version="1.0" encoding="S
2007年10月30日20:00 カテゴリLightweight Languagesperl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン 久々の勝手に添削。今回はこちら。 40行で作るPerl用テンプレートエンジン 正規表現がらみなので、Perl以外でも有用。 添削箇所は、こちら。 40行で作るPerl用テンプレートエンジン sub convert { return unless defined(my $str = shift); $str =~ s{&}{&}gso; $str =~ s{<}{<}gso; $str =~ s{>}{>}gso; $str =~ s{\"}{"}gso; $str; } これの最初のsubstitutionが&ではなくて&ではないかというのはさておき、こういった場合、何度も正規表現をかけ

2007年10月17日17:00 カテゴリLightweight Languages Regexp - Regexp::Commonを引くAPI Mastering Regular Expression Jeffrey Friedl [邦訳: 詳説 正規表現] そういうことを防ぐにはどうしたらよいか、と考えて作りました。 秋元@サイボウズラボ・プログラマー・ブログ:phpspotの人は正規表現について語らないほうがいいのでは この人、以前にも正規表現のいいかげんな記事を書いていろいろ突っ込まれている。まずは実例から。 Server Source 何をしているかというと、Regexp::CommonをJSONPで引いているのです。このRegexp::Commonは、実際に使用され配布されている正規表現集としては最も実績のあるものの一つですが、そのままではPerlでしか使えないのでこうしてみ

フォームデコードなどの機能を持つ、CGI作成者のためのPerlモジュール。CGIモジュールはHTMLやフォームの生成、フォームデータのパース、Cookieの取得と出力などの機能を持つモジュールです。 いささか重厚長大のきらいはありますが、CGI::Liteモジュールと異なりCGIモジュールは多くの環境でデフォルトインストールされていることなど、CGIモジュールを選ぶべき理由も多くあります。CGIモジュールには多くのドキュメントが付属しています。 この内いくつかは、Perldoc.jpで和訳した文書を見ることができます。 http://perldoc.jp/docs/modules/ IBMのサイトには「便利なCGIスクリプト作成のためのヒント~CGI.pmモジュールを綿密に検討する」という文書があります。 いささか古いのですが、CGIモジュールを使ったファイルアップローダを検討するのに
1ファイルを FTP で置き、実行属性を付けるだけで導入完了Perl 5.004 以上であればよく、外部ライブラリは不要、どこでも動作可能 画像・添付ファイル・1行コメントなど必要十分な機能を装備 プラグイン追加以外、設定変更・テーマ編集が全てブラウザ操作のみで可能 FTPで置くだけで、本体ファイル修正不要のプラグイン追加 「プラグインマネージャー」というプラグインを導入することで、 プラグイン追加もブラウザで行うことも可能 ページ凍結・新規ページ作成の禁止など、 個人テキストサイト構築ツールとしての機能が充実*1 スクリプトは修正BSDライセンスで公開され、自由に修正・再配布・こっそり利用が可能 インストールはこちらです。 当サイトに対して、PCからブラウザでアクセスする分には問題ないのですが スマートフォンからアクセスすると、URL のうち EUC-JP を含むファイル名パラメータが
2007年05月10日19:00 カテゴリLightweight Languagesperl - use utf8; 添削というより、ちょうどutf8 pragmaを説明するのにいい例題なので。 はこべにっき# - Web::Scraper便利! my $left = decode_utf8('『'); my $right = decode_utf8('』'); スクリプトがUTF-8で書かれている場合は、わざわざdecode_utf8('リテラル');とするより、最初にuse utf8;としておくのが吉。 この点を明らかにするために、以下のcode snippetを示す。 #!/usr/local/bin/perl use strict; use warnings; use Encode (); use Devel::Peek; { use utf8; my $name = '小飼弾'

2007年03月11日03:30 カテゴリLightweight Languagesperl - Inside-out Object ところが、そのないはずの隠蔽化を強制する仕組みがすでに発見されているのです。Perl Best Practices Damian Conway [邦訳:Perlベストプラクティス] ビンゴ中西のほげほげ Kansai.pm第8回ミーティングに行ってきました@荷造り中そして、Perlのオブジェクト指向には 隠蔽化を強制する仕組みはない いつか書こうと思っていたけど、ちょうどいい機会なので。 ここでは例として、name,uriという二つのインスタンス変数を持つオブジェクトを実装してみます。 InsideOut.pm { package InsideOut; use strict; use warnings; my %objects; sub new { my

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く