サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
digit.que.ne.jp
次のように、エラー表示などに使うことができます。これは実行時にファイル名を引数として受け取り、そのファイルがあるか調べる簡単なスクリプトです。 my $file = shift(@ARGV); if (not $file) { &print_error("ファイル名が指定されませんでした。"); exit 1; } print (-f $file) ? "ファイルは存在します。" : "ファイルは存在しません。"; sub print_error { my $error = shift; my ($package, $filename, $line) = caller; print "$error at $package of $filename line $line.\n"; } 引数を指定せずに実行すると、print_errorが呼ばれて、次のようなエラー表示をします。 > perl
奥一穂氏による軽量なWebアプリケーション(開発)フレームワーク。 公式サイト ダウンロード PerlだけでもSledge、Catalystなど多くの万能フレームワークがあるのに、なぜNanoAなのか、といったあたりは「Kazuho@Cybozu Labs: 開発しているウェブアプリケーションフレームワーク NanoA について話してきました」のスライドを見るのがよいと思います。奥一穂氏は「CGI::Applicationラブ」な人として知られていますが、実際「CGI::Applicationで十分だ」という人に、モダンでさらに手軽なフレームワークとしてよいのではないかと思います。
WalRack (Walrus File Rack CGI)は、Web上にファイルの一時預かりスペースを作るためのCGIです。 WalRackは、Webページ上から設置者のWebファイルスペースにファイルをアップロードするためのCGIです。 WalRackには以下のような機能があります。 ファイルのアップロード、ダウンロード、削除が可能。 利用全般/アップロード/削除をパスワードで制限。 日本語のファイル名にも対応 ファイル名の半角カナ→全角、全角英数字→半角、禁止文字→削除or全角への自動変換。 特定の拡張子に対しては'.txt'、'.bin'を付加。 WalRackは、CGI_Liteのサンプルスクリプトを発展させた例として作成されています。 ドキュメント部分を除けば300行のスクリプト部分に、上記の機能を収めてあります。独自のファイル管理CGIを作成する時に、参考になるかも知れません
Strawberry Perlの強みがここ。普通にStrawberry Perlをインストールしただけで、make(dmake)、gccなどのバイナリやその他もろもろが以下のディレクトリに入り、すぐにCPANモジュールを使える。 C:\strawberry\c\ このおかげで、コンパイルが必要なXSモジュールもかなりの確度でインストールできる。以下のようにCPANモジュールのシェルを起動し、モジュールのインストールを行う。 C:\> perl -MCPAN -e shell cpan> install WWW::Mechanize cpan> exit C:\> Strawberry PerlではActivePerlと同様に、PPMも使用できる。以下のようにPPMのシェルを起動し、モジュールのインストールを行う。 C:\> ppm PPM interactive shell (0.01_0
以下がこのデータベースを作成するための際のSQLです。このSQLをUTF8で保存し、mysqlのデータベース作成権限のあるユーザ(管理者など)で実行します。 /* データベースとユーザを作成 */ DROP DATABASE IF EXISTS blog; CREATE DATABASE blog CHARACTER SET utf8; GRANT ALL ON blog.* TO blog_user IDENTIFIED BY 'blog_pass'; /* テーブルを作成 */ use blog; DROP TABLE IF EXISTS blog_site; CREATE TABLE blog_site ( site_id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, url TEXT, description TEXT, dat
サイトの更新情報、RSSをパースする簡易的な方法です。 このサブルーチンはWalWikiのWikiAntennaで使用しているものと、ほぼ同じものです。 エラーハンドリングもxmlnsの確認もencodingによる文字コードの判定もしていませんが、WalWikiのWikiAntennaで使用実績は積んでいて、それなりに有効であるという点は 納得してもらえるかな、と思います。 かなり簡易というかいい加減な手法なのは承知ですが、intersiteメーリングリストなどでRSSの良し悪しを論じるにも、まずはRSSを手軽に使えなきゃというのが前提だと思うので、私のできる範囲での情報公開から。 余談ですけど、私自身はニュース系サイトだけでもasahi.com、ASCII24、Biztech、CNetJapan、CNetITTrend、HotWiredNews、PCWeb、InternetWatch、L
CGIモジュールには、HTMLフォームのタグを生成するためのメソッドも用意されています。 これらを使うと、実際にHTMLタグを書くことなく、HTMLフォームを作成することができます。 例えば、次のスクリプトを実行すると、テキストエリアを一つ持つフォームを含むHTMLが出力されます。 #!perl my $CGI = CGI->new; print $CGI->start_html('Form test'); print $CGI->start_form; print $CGI->textfield('-name' => 'text'); print $CGI->submit, $CGI->reset; print $CGI->end_form; print $CGI->end_html; CGIモジュールを使ってHTMLフォームを生成には、いくつか便利な点があります。 例えば、URLには現
exeファイルは、以下のようにすれば実行できます。 feed2growl Perlスクリプトは、以下のようにすれば実行できます。Perlスクリプトの実行時には、モジュールを追加インストールする必要があるかもしれません。 perl feed2growl.pl 上記のように実行すると、カレントディレクトリのconfig.ymlを設定ファイルとして読み込みます。他のファイルを読み込む時は、-cオプションで指定します。 feed2growl -c myconfig.yml Windowsのタスクに登録する時は、コマンドプロンプトのような画面が出ないexeファイルを使うと良いと思います。タスクスケジューラを使い、実行ディレクトリにfeed2growl.exeがあるディレクトリ、実行コマンドを上記のようにすればよいでしょう。 スクリプトを変更し、exeファイルを作り直すには、以下のようにします。ただし
配列に格納されているCSVデータから配列を取り出す方法。 要は、大崎氏のPerlメモで公開されている「値に改行コードを含むCSV形式を扱う」で、これをファイルハンドルではなく配列に対して行なっているだけです。 CSVファイルを丸ごと読み込む/書き出すのが目的であれば、Perlモジュール/File::Slurp::CSVもどうぞ。 ファイルから既に読み込んであるなど、CSVデータを1行1データの配列で渡された時の処理。これからファイルから読み込む、というときには、大崎氏の「値に改行コードを含むCSV形式を扱う」の方がメモリにやさしく順次処理できるのでずっと良い選択です。 while (@lines) { my $line = shift(@lines); $line .= shift(@lines) while ($line =~ tr/"// % 2 and (@lines)); $lin
Pure Perlの簡易的なYAML実装、YAML::Tinyモジュールに関するメモです。 なお、将来的にはYAMLモジュール自体をPure Perl化する動きもあるようです。Perlメモ/YAML/PyYAMLのPerl移植プロジェクト(2006.08)をご覧下さい。 YAML::TinyはPure Perlモジュールです。CPANインストールでもまず問題は起きないと思います。 C:\> perl -MCPAN -e shell cpan> install YAML::Tiny CPAN環境を整えていない場合や、CGIなどに同梱して配布する場合は、次のようにするだけで動作します。 YAML::Tinyから、tar+gzファイルをダウンロードします。 展開するとlib/YAMLというフォルダが含まれていますので、このYAMLフォルダを、Perlのモジュール検索パス(@INC)に含まれている
MIME::KbParser3のアレンジ。 新しいMIME::Toolsでのファイル名がURLエスケープされてしまう場合の対応をしている他、出力ファイル名の漢字コードをメソッドで指定できるようにしています。 サーバー上のメールを片っ端からNet::POP3で受信し、MIME::Parser::JParserで解析して保存していくスクリプト。 use Net::POP3; use MIME::Parser::JParser; use Jcode; my $server = 'mail.server.name'; my $account = 'account'; my $password = 'password'; my $login_method = 'login'; # login/apop my $fetch_method = 'get'; # get/top my $store_eml
$obj->can('METHOD'); 'METHOD'はメソッド名で、以下のようにスカラ変数でも良い。 $method = 'METHOD'; $obj->can($method); 返り値はメソッドが存在するときはそのメソッドへのリファレンス、存在しないときはundef。 $method = 'METHOD'; $obj->$method(); canの返り値はメソッドのリファレンスなので、次のようなこともできる。 $method = 'METHOD'; $ref_method = $obj->can($method); # リファレンスを単に実行 &$ref_method(); # オブジェクトの持つリファレンスを実行 $obj->$ref_method(); "()"は省略してもよさそうだが、実際にはPerl 5.6、Perl 5.8では問題ないものPerl 5.005ではSyn
This is an unofficial translation of the GNU Affero General Public License into Japanese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU AGPL--only the original English text of the GNU AGPL does that. However, we hope that this translation will help japanese speakers understand the GNU AGPL better. (訳: 以下はGNU A
MediaWikiにはダンプ取得のページがあり、例えばWikipediaではWikipedia:データベースダウンロードページから全データダンプをXMLファイル(の圧縮ファイル)形式で提供しています。 何らかの研究目的などで、Wikipediaのコンテンツを処理をしたいと思えば、クロールするのではなくこれを利用することが推奨されています(現実問題としても、そうしないと現実的な時間でデータ取得が終わらないでしょう)。しかし、たとえば全テキストが含まれたjawiki-latest-pages-meta-history.xmlなどは、展開後のサイズで200GBを超え、ちょっと中身を確認するにも、XMLとしてオンメモリで解析するにも、大きすぎるデータです。 MediaWiki::DumpFile::Splitは、このダンプファイルをリビジョンごとのダンプファイルに分割し、指定ディレクトリ以下に下記
Firefoxではスクリプトタグ方式で読込めましたが、IEではext-all-debug.jsまたはext-core-debug.jsの1554行目、以下の部分でエラーになりました。 defer.onreadystatechange = function(){ if(this.readyState == “complete”){ fireDocReady(); } }; scriptタグの生成処理中、IEがXMLHTTP通信している最中にie-deferred-loaderの動きを変更しようとしているのが良くないのかもしれないと仮説を立てて、以下のようなアプローチをしてみました。 基本は「XMLHttpRequest?で読込み後に評価する方法」。 XMLHttpRequest?の通信状態の(完了への)変化時には、即評価するのではなく内容を変数にセットする。 それと非同期に変数を監視している
Gunghoでもっともカスタムメイドの機会が多い部品は、プロバイダとハンドラです。「何を取得したいか」「取得してどうするのか」という用途に密接にかかわる部品だからです。ここではサンプルとして、データベースをストレージとした、RSS(フィード)クローラを作ってみることにします。 Gunghoの概要や情報源についてはPerlメモ/Gunghoを参照してください。 このフィードクローラは、次のような動作をします。 データベースに、フィード情報を保持するfeedテーブルとエントリ情報、コンテンツを保持するentryテーブルがあります。 フィードの取得 フィードテーブルから、未取得、または最終取得から1時間経過したフィードのURLを読み出します。 読み出したフィードを取得します。 取得したフィードから、エントリ情報を抽出します。新しいエントリURLがあれば、entryテーブルに追加します。 エントリ
Perl関連のメモの一覧。 基本的には日本語での解説を(他のサイトなどで)見つけることができず、英文ヘルプを読み解いたり、自分で試してみた内容のメモで、次のような情報が多くなっています。 WindowsやPocketPC上でのPerlの問題、疑問点の解決 CGIなどに関するよくある質問への回答 ここにない内容については、PerlLinkの各サイトをあたってみてください。 一般的な問題や疑問への回答は、ほとんどが見つかるでしょう。
以下で、現時点での最新0.96版のPPDファイルと、PPMコマンドでのインストール方法が公開されています。 http://namazu.asablo.jp/blog/2007/06/28/1611341 私が使用しているWindows+ActivePerl 5.8の環境では、ここに書かれているとおり以下を実行することでMeCab?モジュールをインストールできました。 ppm install http://www.akaneiro.jp/PPMPackages/800/MeCab.ppd サンプルスクリプトを参考に、次のようなスクリプトを作成しました。 use MeCab; print $MeCab::VERSION, "\n\n"; my $sentence = "太郎 はこの本を二郎を見た女性に渡した。"; my $tagger = new MeCab::Tagger(join " ",
FILEHANDLE に対応したファイルまたはパイプをクローズします。標準入出力が正常にバッファのフラッシュを行なって、ファイル記述子のクローズしたときにのみ「真」を返します。引数が省略された場合、現在選択されているファイルハンドルをクローズします。 クローズしてすぐにまた、同じファイルハンドルに対してオープンを行なう場合には、open が自動的に close を行ないますので、close FILEHANDLE する必要はありません (open を参照してください)。ただし、明示的にクローズを行なったときにのみ入力ファイルの行番号 ($.) のリセットが行なわれ、open によって行なわれる暗黙の closeでは行なわれません。 ファイルハンドルがパイプつきオープンなら、 close はその他のシステムコールが失敗したりプログラムが非ゼロのステータスで終了した場合にも偽を返します (プログ
HTMLメールで、さらに本文内に表示する画像を添付したMIMEデータを簡単に作成することができます。MIME::LiteのドキュメントのSend an HTML document... with images included!の項に、サンプルコードがあります。以下2点がポイントのようです。 画像をattachする際、Idを指定する。 HTML(本文)内にimgタグのsrcには、"cid:(画像添付時に指定したId)"を指定する。 以下は、ActivePerlに同梱されてくる画像を埋め込んだメールデータを作成し、標準出力に出力する例です。 From、Toは適切なアドレスに変更してください。 use MIME::Lite; use Jcode; my $subject = "PerlScriptロゴ"; my $data = <<EOF; <body> PerlScriptロゴ<br />
通常の手順で、Plaggerモジュールをインストールします。 cpan> install Plagger 関連モジュールについて、インストールの要否を聞かれますが、基本的にデフォルトのまま進めます。Plaggerが使えるようになって、個別のプラグインに興味が出てきてから、それが必要とするモジュールが不足していれば追加インストールすればよいでしょう。 上記でインストールができるかというと、実は微妙です。非常に多くのモジュールに依存しており、環境によってはインストールがスムーズに行かないモジュールも含まれています。ケースが多く解決も難しいことがしばしばであるため、この場合は各自のPerl力で力任せに解決するか、不運と思って様子見することになりそうです。 以前にはバッドノウハウとしか言えない手順がいろいろとありましたが、id:Charsbarさんが関連モジュールをまとめたPPMリポジトリを用意し
本文書はnews.perlfoundation.orgに掲載された、「Grant approved: Port PyYAML to Perl」の和訳です。 原文は、Brian Ingerson(Kwikiや最初のYAML.pmモジュールの作者であるIngy)がPerl Foundationに、PyYAMLのPerl移植プロジェクトへの交付金を申請して、認められた際の申請内容のようです。エントリ自体は2006年8月のものですが、直前のCall for proposalsに対する応募だとすれば、2006年7月時点での文章だと思われます。この時点までのYAMLと各言語のYAMLサポートの歴史と現状などがコンパクトにまとまっています。 なお、これ以降の話として、文中では「(まだ存在すらしない)libyaml」としてKirill SimonovによるYAMLツールのC言語実装が触れられていますが、Y
use Time::Piece; my $time = localtime; print $time->date . " " . $time->time . "\n"; $time += 3600; # 1時間後 print $time->date . " " . $time->time . "\n"; Time::Pieceは、localtime関数とgmtime関数を、それぞれスカラコンテキストではTime::Pieceオブジェクトを返すものに変更(overload)します。ただし、リストコンテキストではTime::Pieceモジュール読込後も、通常通り秒、分、時、日、月、...の配列を返します。 通常(Time::Pieceモジュールを読み込んでいない時)は、次のようにlocaltime関数を呼ぶと $_には"Thu Nov 1 01:46:31 2007"のような文字列が入ります。
ActivePerl+PPMによるモジュールインストール方法。 Windows、Linux等にActiveState社が提供しているPerl環境「ActivePerl」では、モジュールを「PPM」というツールでインストールできます。 このPPMについてのメモを載せていきます。 PPMに何か問題があれば、CPANも試してみてください。 CPANでは、PPMではインストールできないモジュール、より新しいモジュールをインストールできることが多々あります。 CPANについては、Perlモジュール/インストール(CPAN)にまとめてあります。 コマンドラインから、下のコマンドを叩くだけです。 ppm install パッケージ名 多くのパッケージ名には、「::」または「-」が含まれますが、これはどちらを使用しても構いません。 例えば、「CGI-Lite」と「CGI::Lite」では、どちらの書式でも
Gunghoのドキュメントは、Gunghoに同梱されています。CPANでも読むことができ、日本語ドキュメントも少なからずついています。 Daisuke Maki / Gungho - search.cpan.org Googleグループには、小さいながらgungho-crawlerグループがあります。 gungho-crawler | Google グループ この他にShibuya.pm Technical Talk #8で牧大輔氏が行ったセッションの資料が公開されています。15ページのGunghoの構造はGungho::Manual::Basics.jaを見る際、あわせて開いておくとよいでしょう。 Gungho, Swarmage, PoCo::MDBA » SlideShare Gungho, Swarmage, POE::Component::MDBA によるデータ収集/格納/呼び出
いくつか、分かっていることとわかっていないことがあります。 以下に分かっている範囲でのポイントを挙げます。 Timeout for inactivity during Makefile.PL? [0]では0(デフォルト)にする ここでTimeoutを指定してしまうと、完了またはタイムアウトの通知にalarm関数を使います。 alarm関数はActivePerlでは実装されていないため、エラーになります。 makeは、perl -V:makeが返すものを使う makefile.plはperl -V:makeが返すmakeプログラムにあったmakefileを作るようです。 perl -V:makeがnmakeを返す場合、dmakeを使うとエラーが発生します。 これ以外の設定は、実施者の任意で構いません。 私が意識して行った設定は以下のものです。 Select as many URLs as y
次のページ
このページを最初にブックマークしてみませんか?
『Digitian's Home Top』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く