タグ

Perlとモジュールに関するbigbroのブックマーク (65)

  • CGI.pm - FSWikiLite

    use CGI qw/:standard/; 普通に利用するならこれでOKでしょう。 CGIからのパラメータの受け取り paramを使います。 param()の戻り値はスカラーコンテキストでは、最初の値がセットされます。よく使うのは、name の入力があれば、$nameに値をセットし、無ければデフォルトの文字をセット。 my $name = param('name') || '匿名さん'; とか、name が入力されていなければエラーを表示する。 my $name = param('name') or error('名前を入力してください!'); とかです。 戻り値がリストコンテキストの時は、値のリストを返します。これはチェックボックスなどに同じ名前を付けて置いて、処理を簡単にしたりするときに利用します。 例えばHTML側がこんな感じで、 問5 好きな果物は?(当てはまるもの全てにチェック

  • CGIpmTips - perlのCGI.pmはUTF8で使うとすごい大変。

    perlCGI.pmはUTF8で使うとすごい大変。 -nostickyや-utf8はIISのActivePerlでまともに動かない。 CGI.pmのescapeHTMLはuse utf8;を正しく変換できない。 なのでautoEscapeはuse utf8;でまともに動かない。 -no_xhtmlもmod_perlPerlEx?で動かない。$CGI::XXXのグローバル変数で動作を変えてる系は全滅。 とりあえずCGI.pmの便利機能はoffにして使うべき またはLinux上でCGIだけで使うとか、UTF-8をやめてEUCで書くとか(それはそれで問題が)。my $cgi = new CGI; はダメ my $cgi = CGI::->new();が正しい。self_url()やurl()が使えなくなる環境がある(Windowsなど)。 出力はxhtmlに固定 $cgi->autoEsca

  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

    ウェブリブログ:サービスは終了しました。
  • Perlで日付・時間を操作 - DateTime モジュールの使い方 (iandeth.)

    Perlには、日時の加・減算を扱うモジュールが標準でついてきません。僕の仕事場ではずっと、同僚が作ったオリジナルモジュールを皆で使いまわしていたのですが、今になって、世間的 (CPAN) にはどんなものがあるのか気になって調べてみました。※参考になったのは miyagawa 氏のメールマガジンの過去記事と、perl.com の The Many Dates and Times of Perl なるエントリでした。 今回は数ある日付関連モジュールの中から、Dave Rolsky氏の DateTime モジュールについて、その基的な使い方について簡単にまとめたので共有してみます。 同氏は上記 perl.com 記事の執筆者であり、この前の YAPC::Asia で DateTime project について講演してくれていた人です。気合の入ったモジュールを作ってくれた事に感謝。 目次 基

  • Perl でグラフを作ろう (GD::Graph) | Shinta's Site

    これらすべてが必要なわけではありません。OS によっては、すでにインストールされているものもあります。 インストール 必要なモジュールを入手したら、それらをインストールする必要があります。OSによって、入手しなければならないモジュールが異なります。ここでは、RedHat Linux 9 を利用して説明します。RedHat Linux 9 ではほとんどのライブラリがインストールされています。以下では、必要なモジュールのインストールのみ記述しています。また、Perl のバージョンが 5.6.0 以上でなければなりません。 インストールはスーパーユーザーで作業 GD Perl モジュールのインストール # gzip -dc GD-1.41.tar.gz | tar xf - # cd GD-1.41 # perl Makefile.PL ... Build JPEG support? [y] <

    bigbro
    bigbro 2010/06/14
    Solaris でperl モジュールコンパイル時のエラーに対処
  • Template-Toolkit のよくない点について - tokuhirom's blog

    TT はすばらしいテンプレートエンジンだが、いくつかの点ですぐれていない点がある。その中でもっとも気にくわない2つは以下のもの。 Speedtoo many plugins on cpanとくに速度の遅さは致命的で、キャッシュや、一部の XS 化などによる高速化がはかられてはいるものの、「ボトルネック」になりうるほど遅い。 プラグイン機構は便利だが、一方で、CPAN モジュールへのラッパーモジュールが大量に生成されている。 この2つの欠点は、Text-Xslate の TTerse syntax で解消されているので、こういった点が気にくわない人は、ためしてみるといいのではないかとおもう。 【追記】 なぜ、TT でプラグインが異常に発達するのかというと、関数を export するのがめんどくさいから。で、その欠点は Xslate では Text::Xslate->new(module =>

  • 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

  • Unicode::Normalize で遊ぶ - daily dayflower

    Unicode の規格では,文字の合字(リガチャ等)等を統一的に扱えるように,「正規化」という処理が仕様として定まっています。この正規化処理のうち「互換性分解」という処理を行うと副作用として半角カナを全角カナに変換できます(逆に全角カナ→半角カナはできません)。 #!/usr/bin/perl use strict; use utf8; use Encode; use Unicode::Normalize; my $src = 'ポンジュース'; my $dst = Unicode::Normalize::NFKC($src); print Encode::encode('utf8', "${src} => ${dst}\n"); # OUTPUT is: ポンジュース => ポンジュースUnicode の正規化についてはperl5.8のUnicodeサポート および http:/

    Unicode::Normalize で遊ぶ - daily dayflower
  • Lightly and Leniently - ぷちWiki - Perlでの全角半角変換

    Perlを使って英数字記号およびカタカナの全角/半角の変換を行う時のメモ。 というか、いまいちスッキリしなかったので、途中経過としての記録。 Jcode 一番スタンダードなのがJcodeを使う方法。 特に、Perl-5.6以前はJcode.pmもしくはjcode.plを使うのが定石で、現状でも古いコードを保守する際には非常に重宝する。 ただし、Jcodeは内部コードがeuc-jpであることが前提として作られているせいか、utf8でtr等を使用するとうまく変換されない。 従って、内部コードがutf8となったPerl5.8以降では、もはや主流からは外れていると行って良いと思う。 使用例: require 'jcode.pl'; jcode::tr(\$str, '0-9A-Za-z', '0-9A-Za-z'); tr Perl-5.8以上であれば、utf8の文字列は普通に全角で

  • 複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming

    ハッシュと配列の参照が入り交じったような複雑なデータ構造の、全value を均等に加工したかったので次の様にしてみました。 (中略) すでに似たモジュールがある気が激しくしています! ご存知でしたらぜひ教えてくださいませ。 [perl] 複雑なデータ構造のvalue を一気に書き換える方法 - harupiyoの日記 ということでData::Visitor::Callbackがズバリそれにあたるものじゃないかなーと。 use strict; use warnings; use Data::Dumper; use Data::Visitor::Callback; my $rh_testdata = { 'a' => 1, 'b' => { 'aa' => 1, 'ab' => [ 1, 2, 3, \ 'test', 5 ], 'ac' => 3, }, 'c' => 3, 'd' => 4

    複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming
  • daily dayflower - 半角←→全角変換,Unicode::Japanese に未公開機能が…

    2008-10-21 追記 いまだに(ありがたいことですが)検索で飛んできたりブクマされたりというのがちょいちょいあるので,最新動向を書いておきます。 id:tokuhirom さんが Lingua::JA::Regular::Unicode という Pure Perl Module をリリースなさいました(→ http://d.hatena.ne.jp/tokuhirom/20081018/1224300947)。 あなたが作っているアプリで文字列まわりを Unicode::Japanese インスタンスですべて持ちたいわけでなければ(そして,たいていのばあい,持つ必要はないのですが),この Lingua::JA::Regular::Unicode を使うのがベターです。依存性もなく,とても軽量ですので。 2008-10-21 追記おわり ウェブアプリを作っていると,ユーザが入力した半角

    daily dayflower - 半角←→全角変換,Unicode::Japanese に未公開機能が…
  • Data::Recursive::Encode を書いた話 - tokuhirom's blog

    Data::Visitor::Encode というモジュールがあって、複雑なデータ構造の中にはいっているデータを操作するには大変便利です。 私は mobirc という IRC2HTTP gateway を開発しているのですが、こちらはユーザの環境にインストールしてつかっていただくソフトウェアであるという関係上、XS に依存したくありません。 しかし、やたらと依存モジュールが多く、得に XS が必須であり、かつまたメモリを大く消費してしまうのが難点です。また、ソースコードが複雑で、なにかあったときに読む気がしないというのも難点です。これらの欠点は、質的には Data::Visitor の問題点であって、Data::Visitor::Encode の問題ではないのですが、依存している以上、どうしようもないことです。また、Data::Visitor は内部実装がコロコロかわることでも有名であり

  • 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

    bigbro
    bigbro 2010/05/14
    これは凄い。バリデータ関連で一番使いやすい
  • はてなブログ | 無料ブログを作成しよう

    キーボードを、持ち歩く。 久しぶりに、スマホ用のキーボードを使ってブログを書いている。 いくつかキーが壊れてしまっているので買い替えないといけないのだが、壊れるくらいには使い込んでいたんだなと思った。 当時は、今のようにPCを普段から持ち歩くことが少なかったので、出先でもブログ…

    はてなブログ | 無料ブログを作成しよう
  • Perl::Critic / UNIVERSAL::require - naoyaのはてなダイアリー

    このところ社内の技術勉強会で取り上げているテーマの Perl::Critic。このモジュールは、Damian Conway の Perl Best Pracitice に書かれているスタンダードな Perl のコーディングスタイルをチェックするためのものです。Perl::Critic をインストールすると perlcritic というコマンドがインストールされ、それを使うことで自分が書いた Perl のソースをチェックしたりできるという。 いろんなコーディングスタイルのルールとかは、Perl::Critic::Policy のサブクラスに記述されていて、pod で全部読めます。 この Perl::Critic なポリシーの中に Perl::Critic::Policy::BuiltinFunctions::ProhibitStringyEval というのがあります。これは eval には文

    Perl::Critic / UNIVERSAL::require - naoyaのはてなダイアリー
  • 正規表現ベースのHTML::FillInForm::Lite - Unknown::Programming

    HTML::FillInFormを正規表現ベースで再実装したHTML::FillInForm::LiteってのがCPANにリリースされてます。 なかなか爽快ですね。HTML::FillInFormHTML::Parserを利用しているので無駄な部分が多かったのがデメリットだったわけで。 ドキュメントには2倍近く高速になると書いてたので一応ベンチを取ってみました。 use Benchmark qw(cmpthese timethese :hireswallclock); use HTML::FillInForm; use HTML::FillInForm::Lite; my $str = q{ <form> <input type="text" name="text_data1" value="" > <input type="text" name="text_data2" value="

    正規表現ベースのHTML::FillInForm::Lite - Unknown::Programming
  • blog.scrapcode.net: DBIでデータベースの内容をハッシュ配列で取得する

    今時のPerl使いの方は、データベースアクセスにはClass::DBIを使っているのでしょうか? ボクは仕事柄Class::DBIを使えないサーバーで動かすCGIを作ることが多いので、今でもDBIを使っています。Class::DBIも勉強しなきゃなぁ…。 それはともかく、SELECT文の結果をハッシュ配列で取得する方法を書いてみます。 バージョン1.20より古いDBIでは、$dbhをデータベースハンドルオブジェクトとした場合my $sql = 'SELECT id, name FROM test WHERE age < ?'; my $rows = $dbh->selectall_hashref( $sql, undef, 20 );のようなプログラムで$rows = [ { id => 1, name => 'aaaa' }, { id => 2, name => 'bbbb' }, ]

    bigbro
    bigbro 2010/02/08
    selectall_hashref() の使い方
  • Template Toolkit の配列へのアクセス方法メモ

    Perl でデザインとビジネスロジック分割して開発効率と保守性を改善する MVC な Web アプリケーションを作るには欠かせないテンプレートエンジン。Perl な世界では、HTML::Template と Template-Toolkit が有名です。 前者は Pure Perl でかかれているので、レンタルサーバとかでもライブラリパスを通すだけで使えるので手軽で便利です。後者は XS で書かれていて遙かに高機能でしかも高速です(実際の動作速度はほぼ同じですが、遙かに高機能な Template Toolkit の内部動作が如何に高速かがわかるでしょう・・・)。 最近 Template Toolkit を使ってアプリを書くことが多いのですが、日語なドキュメントが極端にすくないです。より深きを知るためにオリジナルのドキュメントを読んでいて初めて知ったことが沢山ありました。 いままで、配列は

  • フォームの入力を確認するData::FormValidatorとFormValidator::Simple : blog.nomadscafe.jp

    フォームの入力を確認するData::FormValidatorとFormValidator::Simple フォームから送信されたデータのチェックをするモジュールはCPANに二つあります。Data::FormValidatorと加藤さんのFormValidator::Simpleがそれ。いままでガリガリと書いていた部分をこれを用いて楽ができないかと試し中。 メールアドレスとパスワードを入れるような以下の登録画面があって、 <form> メールアドレス:<input name="mail" type="text" id="mail" size="20" /><br /> パスワード:<input name="password" type="password" id="password" size="20" /><br /> もう一度パスワード:<input name="password_co

    bigbro
    bigbro 2010/02/04
    バリデータ。なんかどっちも使いにくい
  • CGI::AppでのDebugScreen : blog.nomadscafe.jp

    CGI::AppでのDebugScreen このエントリーは最初の投稿時と大きく書き換えました。 nekokakさんがつくられた「CGI::AppでのDebugScreen」はかなりハゲシクGJです。 ただ、prerunに引っ掛けるとその他のPluginで動かなくなるのがありそうなので、error_modeを使うinitにHookしてSIG{__DIE__}を差し込むというのはいかがですか? importとdebug_reportを書き換えた。 sub import { my $caller = caller; $caller->add_callback( 'init', sub{ my $self = shift; $caller::SIG{__DIE__} = sub{ $self->debug_report(@_); die @_; }; }); no strict 'refs';