Home > perl Archive
perl Archive
【Movable Type】5.0 → 5.02 へのアップグレード
- 2010年8月 2日 12:01
- Movable Type | MySQL | perl
- Tweet
今まで面倒で放置していたのだが、Movable Type を 5.0 から 5.02 にアップグレードしてみた。
Movable Type 5.0 から 5.0x へのアップグレード
http://www.movabletype.jp/documentation/mt5/upgrade/mt5.html
- Comments: 0
- TrackBacks: 0
【Perl】my と our と local と……
当たり前のことなのだけど、改めて纏めてみる。レキシカルスコープとパッケージの範囲って全然違うんだなあ。
our と my
#!/usr/bin/perl use strict; use feature qw! say !; package AAA; our $our_var = 123; my $my_var = 567; package DDD; say '$our_var : ' . ( $our_var // "undefined" ); say '$AAA::our_var : ' . ( $AAA::our_var // "undefined" ); say '$DDD::our_var : ' . ( $DDD::our_var // "undefined" ); say '$my_var : ' . ( $my_var // "undefined" ); say '$AAA::my_var : ' . ( $AAA::my_var // "undefined" ); say '$DDD::my_var : ' . ( $DDD::my_var // "undefined" );
$our_var : 123 $AAA::our_var : 123 $DDD::our_var : undefined $my_var : 567 $AAA::my_var : undefined $DDD::my_var : undefined
ourもmyもレキシカルスコープ全体で有効になる。この例の場合、その範囲はスクリプト全体となる。- レキシカルスコープ内では例えパッケージが違っていても参照できる(10, 13 行目)。
ourは変数をパッケージの名前空間に紐付けする。つまり、グローバル変数を作る。myにそのような効果はないのでパッケージ名を付けても参照できない(14 行目)。
- Comments: 0
- TrackBacks: 0
【Perl】use 5.12.0 !!
小ネタ。5.10.0 以降いくつかの予約語が追加されたが、互換性のために標準では有効になっていない。
#!/usr/bin/perl use utf8; use strict; use warnings; binmode STDOUT => ":utf8"; # say は使えない say "Hello, World!"; # でも Defined-or 演算子はエラーにならない my $t = undef // "未定義です!";
実行例
$ perl testSay.pl
String found where operator expected at testSay.pl line 8, near "say "Hello, World!""
(Do you need to predeclare say?)
syntax error at testSay.pl line 8, near "say "Hello, World!""
Execution of testSay.pl aborted due to compilation errors.
- Comments: 0
- TrackBacks: 0
【Perl】文字化けしないメールの送り方
Gmail の SMTP サーバを使ってメールを送るのに四苦八苦したメモ。次のサイトを参考にして書いてみた。
Gmail の SMTP を利用して Perl からメール送信(添付ファイル付) - memo.mzt
http://d.hatena.ne.jp/mzt/20080219/p1Encode モジュールでの MIME Encode
http://www.ksknet.net/perl/encodemime_enco.html
ただ送るだけなら割と簡単なのだが、文字化けを防いだり、第三、第四水準といった最新の文字セットを含めようとすると結構複雑。この本が大変参考になった。
プログラマのための文字コード技術入門
http://www.amazon.co.jp/dp/477414164X/
- Comments: 0
- TrackBacks: 0
【Perl】Date::Manip モジュールで日付文字列を解析する(関数型インターフェイス編)
さまざまな形式の日付文字列を解析するには、DateTime::Manip モジュールが使いやすい。これは口語で時間・時刻を表す様々な文字列を、いとも簡単に解析してくれる優れもの。英語に限られるのが残念ではあるが、簡単なスクリプトを書くときには重宝する。
ただ、このモジュールは Ver.6 以降、従来の関数型インターフェイスとは別にオブジェクト指向型インターフェイスがサポートされて、使い方ががらりと変わってしまった。今回は古くから使われている関数型インターフェイスについて書いてみる。
Date::Manip - search.cpan.org
http://search.cpan.org/~sbeck/Date-Manip-6.11/lib/Date/Manip.pod
- Comments: 0
- TrackBacks: 0
【Perl, Python】日本の祝日の一覧を取得する
とかく日本は祝日の多い国である。しかも祝日となる日付は毎年異なり、その法則も他国のように単純なものではない。
2007 年(平成 19 年)からは国民の祝日が合計 15 日となった。これは先進国では最多であり、「ワーカホリック」ともいわれる日本の意外な一面でもある。
http://ja.wikipedia.org/wiki/国民の祝日
Perl の場合
Perl で祝日判定を行うならば Calendar::Japanese::Holiday モジュールが使いやすい。
Calendar::Japanese::Holiday - search.cpan.org
http://search.cpan.org/~kztomita/Calendar-Japanese-Holiday-0.03/lib/Calendar/Japanese/Holiday.pmPerl 祝日名の取得 - とみぞーノート
http://wiki.bit-hive.com/tomizoo/pg/Perl%20%BD%CB%C6%FC%CC%BE%A4%CE%BC%E8%C6%C0
インストールは次のコマンドを打つだけだ。
Windows(ActivePerl)の場合
C:\> ppm install Calendar::Japanese::Holiday
Linux、Mac OS X 等の場合
$ cpan -i Calendar::Japanese::Holiday
- Comments: 0
- TrackBacks: 0
C::P::FormValidator::Simple のバグ
久々に環境を再構築してたところ Catalyst アプリへ全くアクセスできなくて焦った。
$ ./myapp_server.pl
〜中略〜
[info] MyApp powered by Catalyst 5.80024
You can connect to your server at http://xerxes-linux:3000
[info] *** Request 1 (0.062/s) [30044] [Thu Jun 17 18:50:08 2010] ***
[debug] "GET" request for "/" from "192.168.30.60"
[debug] Path is "/"
[error] Caught exception in engine "Can't use string ("MyApp") as a HASH ref while "strict refs" in use at /usr/local/lib/perl5/site_perl/5.12.1/Catalyst/Plugin/FormValidator/Simple.pm line 36."
何これ……? エラーメッセージを色々切り分けてググったり、果ては Apache や mod_perl の問題かと思ってコンパイルしまくったけど全然関係なかった。
Bug #58363 for Catalyst-Plugin-FormValidator-Simple: typo at line 36
https://rt.cpan.org/Public/Bug/Display.html?id=58363
C::P::FormValidator::SImple の 36 行目を、
旧
$c->maybe::next::method(@_);
新
$c = $c->maybe::next::method(@_);
このように書き換えるだけで万事 ok。こんなことに時間を費やしたのかorz
- Comments: 0
- TrackBacks: 0
【Perl】いつの間にか Plagger が動かなくなっていた件
ニュースサイトの Atom / RSS を取得して加工する Plagger スクリプトがいつの間にか動かなくなっていた。備忘録として解決策を載せておく。
その 1. euc-jp に未対応?
エラーメッセージを見てみると次のように表示される。
failed: Parsing content failed: Couldn't open encmap euc-jp.enc: No such file or directory at /opt/local/lib/perl5/site_perl/5.12.0/darwin-multi-2level/XML/Parser.pm line 187 at /opt/local/lib/perl5/site_perl/5.12.0/Plagger/Plugin/Aggregator/Simple.pm line 77
ググってみると、XML::Parser::Encodings::euc-jp.enc というファイルがないことが原因のようだ。
- Comments: 0
- TrackBacks: 0
【Perl】HTML / XML の 整形には tidy“p”?
- 2010年6月 6日 20:47
- Movable Type | Web | perl
- Tweet
HTML や XML の整形ツールとして有名なものに HTML Tidy(以下、単に tidy と呼ぶ) がある。このツールは既に 10 年以上の歴史を持つが、最近では更新頻度がだいぶ落ちてた。tidy を Perl 上から使うには HTML::Tidy というモジュールを使うのだが、tidy の最新版がうちの環境(Mac OS X 10.6 + Perl 5.10.1)ではうまく動かず、えらい苦労させられた。
こうした中、HTML::Tidy の作者は一向に更新されぬ tidy に業を煮やしたのか、自ら互換プロダクトを開発することにしたらしい。それが tidyp だ。
- Comments: 0
- TrackBacks: 0
【MovableType】AWStats を使って人気記事ランキングを作る
- 2010年5月21日 19:58
- Movable Type | perl
- Tweet
MT で人気記事ランキングを作るとすると MT-MostVisited プラグインを使うのが一般的だ。
MTで人気記事ランキングを作る - #BLOG
http://www.masahiko.info/blog/archives/000100.html
このプラグインは Apache のログから直接統計データを得て作成するものだが、次のような欠点がある。
- ログファイルが大容量になると時間がかかりすぎる。
- URL に
entry_idを使うことを想定しているので、(このブログのように)URL をカスタマイズしているとうまくデータを拾えない。
これを解決するために MostVisitedAlternative プラグインというのを自作してみた。このサイトの左に見えているランキングがそれだ。
- Comments: 0
- TrackBacks: 0
Home > perl Archive
- Feeds
- CC Licence
-
このブログはクリエイティブ・コモンズでライセンスされています。
- Ferret アクセス解析
- W3C Validation
