モジュールを再利用可能にするためのツールたち Perl 4の時代まではいざ知らず、いまどきPerlのモジュールやアプリケーションを再配布しようと思ったら、CPANモジュールと同じ形式にしておくのがベタープラクティスです。たとえ一般には公開しない社外秘のモジュールであっても、Makefile.PLやBuild.PLを用意して、テストも書いて、できればREADMEやChangesなどの更新履歴もつけておけば、別のプロジェクトを立ち上げたときにコピー&ペーストする必要もなくなりますし、業務の引き継ぎなども簡単になります。 とはいえ、モジュールを書くたびにMakefile.PLなどを一から書きおこすのは面倒な話。メタ情報の部分はモジュールごとに異なるとはいえ、それ以外の部分は(特にひな形の時点では)大差ないのがふつうですから、できれば省力化したいところです。 今回はそんなときに使われるひな形作成ツ
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回は藤吾郎さんで、テーマはXslateです。 はじめに PerlとWebアプリケーションとの相性の良さは周知のとおりです。そして、Web開発にはテンプレートエンジンが欠かせません。テンプレートエンジンは、プレゼンテーションとロジックを分離し、デザイナとプログラマの分業を可能にし、MVC(Model-View-Controller)のV(View)を担う重要な要素です。 今回は、そんなテンプレートエンジンンの一つであり、筆者が開発しているXslateを紹介します。Xslateは2010年4月に開発を始めた新しいモジュールですが、速度・安定性・機能ともに高い水準になってきました。また、牧大輔氏や松野徳大氏をはじめとしたShibuya.pmの面々に多くのアドバイスをいただき、既存のテンプレートエンジンを置き換えられるくらい実用的に
このサイトは Perl の公式ドキュメントを日本語翻訳したものを表示するサイトです。翻訳データは、perldocjp project からとってきたものです。 類似のものに perldoc.jp がありますが、それよりもみやすくなるようにがんばってみました。 ドキュメント一覧 概要(overview) perl - Perl の概要 perlrun - perl コマンドの実行とオプションについて チュートリアル perldebtut - デバッグのチュートリアル perlopentut - Perl でいろんなものを開くためのチュートリアル perlpacktut - pack と unpack のチュートリアル perlreftut - Mark によるリファレンスに関するとても短いチュートリアル perlretut - Perl の正規表現のチュートリアル perlt
私は以前、Jonathan Rockway氏の"何故、私はPerlを続けるのか"を紹介したことがありました。このエッセイの原題は勿論"Why I stick with Perl"です。ところが、最近Jeffrey Kegler氏がよく似た題名で"Why I stuck with Perl"を書いております。題名の違いは、現在形か過去形の違いだけですが、視点は全然違います。前者はモジュールの再利用の視点からCPANを見ており、後者は総合テスト環境(つまり、cpantestersのこと)の視点からCPANを論じています。 他言語の人が分かっていないのは、CPANをただのモジュール格納庫としてしか見ていないことです。cpantestersのことを全然分かっていないのです。テストするのみならず、モジュール作者がテスターにコンタクトすれば、もっと詳細なデータや、それどころかもうパッチすら用意している
【重要発表】 シックス・アパートは2月1日に、新しい体制に生まれ変わります! http://www.sixapart.jp/news/2011/01/21-1700.html 早い話が身売りである。WordPressなどの競合を排して独自に日本市場を切り開く体力も技術的優位もないのがはっきりしたということだろう。 日本におけるSixapartと僕らの愛すべきMovableTypeの命運が絶たれたことを記念して少しばかり回想をしよう。 00年代の前半。MovableType2.2が「ブログ」という聞き慣れない言葉とともに日本にそれとなく入ってきたとき、当時駆け出しだった私はもちろん、日本のWeb業界でMovableTypeに度肝を抜かれなかったものはいなかったと思う。 垢抜けたインターフェース 洗練されたCSSベースのデザインテーマ トラックバック、RSSといった後にWeb2.0と称される斬
マクラ - JavaScriptのテストについて テストのないコードはコードではなく、テストを書かないプログラマはプログラマではなく、テスティングフレームワークのない言語は言語と呼ぶに値しない。と以上のような偉そうなことを言う資格は全くないし狂信的でもない僕ですが、少なくともまともに動くコードであることを証明するために、人並みにはテストを書きます。 それでまあ、最近JavaScriptばかり書いてるのですが、JavaScriptのテスティングフレームワークって大体以下のようなものに分かれると思っています。 ブラウザ上で動かすことを前提としたもの(JsUnit, QUnitなど) RhinoやSpiderMonkeyなど、ブラウザから独立したJavaScriptエンジンで実行することを前提としたもの(JsUnit, QUnit-TAPなど) 2. に加え、env.js(http://www.
NAME HTML::Zoom - selector based streaming template engine SYNOPSIS use HTML::Zoom; my $template = <<HTML; <html> <head> <title>Hello people</title> </head> <body> <h1 id="greeting">Placeholder</h1> <div id="list"> <span> <p>Name: <span class="name">Bob</span></p> <p>Age: <span class="age">23</span></p> </span> <hr class="between" /> </div> </body> </html> HTML my $output = HTML::Zoom ->from_html(
NAME HTML::Query - jQuery-like selection queries for HTML::Element SYNOPSIS Creating an HTML::Query object using the Query() constructor subroutine: use HTML::Query 'Query'; # using named parameters $q = Query( text => $text ); # HTML text $q = Query( file => $file ); # HTML file $q = Query( tree => $tree ); # HTML::Element object $q = Query( query => $query ); # HTML::Query object $q = Query( tex
The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event. use strict; use warnings; package pQuery; our $VERSION = '0.24'; use pQuery::DOM; use Carp; use HTML::TreeBuilder(); use base 'Exporter'; our $document; *pQuery = \$document; our @EXPORT = qw(pQuery $pQuery PQUERY); my $my = {}; my $lwp_user_agent; my $quickExpr = qr/^([^<]*<(.
GitHub - punytan/practical: practical pragma use practical; は use strict; use warnings; use utf8; use feature qw(switch say state); と同じ。 ほとんどの人はこの4行は書いているはず(?) 類似のプラグマ common::sense strict 'refs' はオフ warnings のオプション覚えきれないよ! 下のコードで "Wide character in print at" がでない perl -Mcommon::sense -e 'print "いろは\n";' Modern::Perl use utf8 がない 将来、モジュールが追加される可能性がある
「使っちゃいけない標準モジュール」*1の反響を見ていると、baseが非奨励ということに驚かれた方が少なくありませんでした。そこで、baseについて補足します。 まずbase.pmのドキュメントの最初の文は以下のようになっています。 Unless you are using the fields pragma, consider this module discouraged in favor of the lighter-weight parent. (拙訳: fieldsプラグマを使用しているのでないかぎり、このモジュールは勧められない。かわりに軽量なparent.pmを使う方がよい。) fieldsプラグマは、ハッシュリファレンスのキーを固定したオブジェクトを作成するための機能ですが、あまり一般的ではないためここでは解説しません。特に理由がない限り、ここは素直に忠告に従った方がいいでし
gfxと申します。 Perlは後方互換性を重視しているので、標準モジュールはめったに取り除かれる事がありません。しかしそれでも、いくつかのモジュールが将来的に取り除かれる見込みです。そのようなモジュールは使用しないほうがいいでしょう。また、取り除かれはしないものの、様々な理由から使用すべきでないモジュールもいくつかあります。今日は、そういった使うべきでないモジュールを紹介します。なお、このエントリの対象バージョンは5.8から5.14を想定しています。 さて、まずは取り除かれるモジュールです。現在のところ、以下の三つのモジュールが5.14でコアから削除される予定です。 Class::ISA Pod::Plainer Switch Class::ISAはクラス階層を直列化するモジュールですが、5.10以降はmroに取って代わられました。5.10未満のバージョン用にはMRO::Compatが用意
Sub::Argsというものを作っていながら、 Smart::Argsを紹介します。 一言でいうとSmart::Argsの良さは型チェックができるとかそんなことではなく、 argumentsをhashと同じキー名の変数でうけとれることでしょう。 サンプルコード use strict; use warnings; package Your::Class; use Smart::Args; sub foo { args my $self, my $fh, my $bucket => {optional => 1}, my $ext => {optional => 1}, ; } package main; foo(fh => $fh, bucket => $bucket, ext => $ext); # or foo({fh => $fh, bucket => $bucket, ext =>
こんにちは。最近は PHP ばっかり書いている、永遠の Perl 初心者 hatyuki です。 とつぜん質問ですが、みなさんが最も多くみている Perl のエラーはなんですか? 自分の場合は、う〜ん。。。 Can't locate Hoge.pm in @INC (@INC contains: ~~~~ .). BEGIN failed--compilation aborted. かな?いつまでも進歩がないのが伺えますね! 皆さんご存知の通り、このエラーは "@INC" で指定されたディレクトリの中にモジュールが見つからなかった場合に発生するエラーです。つまり、モジュールをインストールし忘れているか、モジュールがどこに置いてあるのかを適切に設定していないか、の (およそ) どちらかですね。 さてさて、Casual Perler な皆さんは、このエラーを回避するためにどんな方法を使って @
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
DBIx::QueryLog とかつかわなくても Callbacks を駆使すれば結構いけるよ!っていう話になった。いいね。 use strict; use warnings; use DBI; my $dbh = DBI->connect('dbi:SQLite:','','', { RaiseError => 1, Callbacks => { ChildCallbacks => { execute => sub { my ($obj, @binds) = @_; my $stmt = $obj->{Database}->{Statement}; $stmt =~ s/\?/'$_'/ for @binds; print STDERR $stmt, "\n"; return; }, }, }, }); $dbh->do(q{create table job (func, time)})
Kawa.netxp [Perl] XML::FeedPP - RSS・RDF・Atomフィードの解析・生成・変換・結合 XML::FeedPP モジュールは、 RSS 2.0、RSS 1.0 (RDF)、Atom 0.3(および1.0)フィードの XML ファイルを解析・生成・変換・結合するための Perl モジュールです。 RSS ベースの1種類の共通 API で RSS・RDF・Atom の各フォーマットの処理に対応しているため、 手軽に扱えます。 フィードの読み出し・書き込みはもちろん、 RSSからRDFへ、RDFからAtomへといった各フォーマット間の相互変換も可能です。 他サイトからダウンロードした複数のファイルを結合して、 まとめて1つのファイルとして出力することもできます。 公開版アーカイブ: XML-FeedPP-0.43.tar.gz TARGZ CPAN ←通常パッケ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く