カテゴリ: perl

自分の為のPerlメモ Perlの正規表現アレコレ。忘れそうだから。 1: URLを正規表現で引っかける URLを正規表現で書くと
/http:¥/¥/www¥.hackmylife¥.jp¥//
見たいに凄く読みづらくなる。 そんなときはmオプションで正規表現の//を変更できる。
m|http://www¥.hackmylife¥.jp/|
とか、
m#http://www¥.hackmylife¥.jp/#
とか
m?http://www¥.hackmylife¥.jp/?
アラ便利 でも"."はエスケープしないといけないのが嫌。 そんなときは¥Q,¥Eで囲むといい。
m|¥Qhttp://www.hackmylife.jp/¥E|
こりゃ便利 2: マッチ式を複数行に マッチ式に()が多いと読みづらい。そんなときは複数行で書ける/xオプション
$str =〜 /((\d+)([A-Za-z]*))
はこうも書ける
$str =〜 /   (     (       \d+     )     (       [A-Za-z]*     )   )/x
まぁ、便利。 あんまり見たこと無いけど、Perlでは普通なのかしら? 3: 式を評価(eval的な・・) 正規表現の中でPerlの式を評価するのはeオプション
my $str = "hallo world"
$str =〜 s/\w+/ucfirst($&)/eg
print $str
 ↓ Hallo World
おお、便利。 ucfirstは単語の先頭文字を大文字に変換。 まとめ: 正規表現修飾子 正規表現で使える修飾子
修飾子意味
/g繰り返しパターンマッチを行う
globalのg
/e置換後の文字をPerl式として扱う
evaluateのe
/i大文字、小文字の違いを無視
ignoreのi
/o変数を含んだ正規表現を使う場合、その変数が変化しないなら、前回の処理内容を再利用(高速化する)
compile onceのo
/s文字列を1行として扱う
single lineのs
メタ文字.が改行にもマッチする
/m文字列を複数行として扱う
multiple lineのm
メタ文字^や$が行単位で扱われる
/x空白や改行、コメントを無視する
スペースは\を付ける必要がある
extendのx
このエントリーをはてなブックマークに追加

perlのフレームワークでといえばCatalystですが、もう一つ有名な国産フレームワークSledgeをMacで使えるようにしてみたいと思います。 Sledgeはライブドアで開発されたWebフレームワークです。作者はmiyagawaさん。 特徴は、
  • MVCフレームワーク
  • 容易に拡張可能なプラグインアーキテクチャ
  • MySQLやPostgreSQL等を利用したセッション管理
  • フックによる拡張機能
  • <ページコンポーネントやアクション単位での認証/li>
  • CPANモジュールを利用することによる高い信頼性
  • ライブドアのサービスを含む多くの商用サイトでの実績
となっています。機能は追々見てゆくとして、まずはインストール。

Apache + mod_perlを動くようにする

SledgeはApaceh上で動きます。cgiかmod_perlが使える状態にしなければなりません。 MacOSX 10.4にはデフォルトでApacheが入っているかチェック。
$ which httpd
/usr/sbin/httpd
おお、すばらしぃ。問題はバージョン。mod_perlとApache2.x系は昔から相性が悪いとひょうばんなので、できれば1.3系で穏便に行きたいところ。
$ httpd -v
Server version: Apache/1.3.33 (Darwin)
Server built: Jan 13 2006 08:49:59
なんだ、全然問題無いじゃん。あとはmod_perlの導入。 これまた、MacOSX 10.4にはmod_perlがデフォで入っているので、httpd.confで有効にしてあげれば良い。
$ sudo vi /etc/httpd/httpd.conf
239行目 #LoadModule perl_module libexec/httpd/libperl.so のコメントを外す LoadModule perl_module libexec/httpd/libperl.so
283行目 #AddModule mod_perl.c もコメントを外す AddModule mod_perl.c
最後の方に下記を追加
<IfModule mod_alias.c>
  Alias /perl/ /Library/WebServer/Documents/app/
  Alias /cgi-perl/ /Library/WebServer/Documents/app/
</IfModule>
<IfModule mod_perl.c> <Location /perl> SetHandler perl-script PerlHandler Apache::Registry Options ExecCG PerlSendHeader On </Location> <Location /cgi-perl> SetHandler perl-script PerlModule Apache PerlHandler Apache::PerlRun Options ExecCGI PerlSendHeader On </Location> <Files */nph-*> PerlSendHeader Off </Files> </IfModule>
IfModuleのmod_aliasはデフォルトで定義されているので、そこに混ぜても良いでしょう。 httpd.confの文法をチェックします。
$ sudo /usr/sbin/apachectl configtest
Syntax OK
問題なければhttpdの再起動
$ sudo /usr/sbin/apachectl restart
/usr/sbin/apachectl restart: httpd restarted
設定変えるだけでOKでした。

Sledgeのインストール

SourceforgeのSledgeのページからダウンロードしておきます。 最新版はv1.11です。 次にCPANから必要なモジュールをインストールしておきます。
$ sudo perl -MCPAN -e 'install Bundle::Sledge'
結構モジュール数が多いので時間かかります。 終わったら、Sledgeのインストール。 Sledgeを解答したディレクトリに移り、make installします。
$ perl Makefile.PL
$ make
$ make test
$ sudo make install
CPANからインストールしたモジュールが足りないと、make testでエラーになる場合がありますので、 適宣手動でインストールします。 なにがインストールされるかは、eg/prereq-modulesに書いてあります。 参考にさせて頂いたサイト http://www.thinkit.co.jp/free/tech/9/1/1.html
このエントリーをはてなブックマークに追加

WindowsでCatalyst使いたい! って話が来たので、ためしてみた。 やっぱり面倒。 CPANを使うために必要なものとしては ・Perl ・C/C++ Complier ・Make ・tar, gzip などがあげられます。 何はともあれWindowsでPerlを使えるようにするために、 ActivePerlを導入します。

Active Perlのインストール

Active Perl http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.819-MSWin32-x86-267479.msi インストーラ形式で、パスまで設定してくれます。

Visual Studio C++ Express Editionsのインストール

C/C++ ComplierとMake(nmake)はVisual C++を含むVisual Studio C++ Express Editionsが無償配布されるようになりましたので、これを使うと良いでしょう。 http://www.microsoft.com/japan/msdn/vstudio/express/visualc/ インストールが終ったらパスを通します。 必要なのは"nmake"と"cl.exe"です。 "Visual Studioインストールdir¥VC¥bin"に入っています。 が・・・ コレだけだと"mspdb80.dll"が見つからないといわれるので、 "Visual Studioインストールdir¥Common7¥IDE"にもパスを通しておきましょう。 ほんとはインストール時にかってにやって欲しいんだけどなぁ・・・ まぁ、いいや。 デフォルトでインストールした場合、
C:¥Program Files¥Microsoft Visual Studio 8¥VC¥bin;
C:¥Program Files¥Microsoft Visual Studio 8¥Common7¥IDE;
インストールされているはずです。 パスにスペースが入っていると、CPANのモジュールをインストールする際に、エラーが出ることがあるそうなので、 "dir /x"で省略形を調べて省略形パスを使うと良いでしょう。
ex) 
E:¥PROGRA‾1¥MICROS‾2¥VC¥bin;
E:¥¥PROGRA‾1¥MICROS‾2¥Common7¥IDE;
(環境によって違うので、上記は参考です)

tar, gzipのインストール

tar, gzipですが下のリンクから"texinstXXX.zip"ダウンロードして、パスを通してください。 http://www.ring.gr.jp/pub/text/TeX/ptex-win32/current/ あとはコマンドプロンプトから、
C:¥>perl -MCPAN -e "install Test::Pod"
C:¥>perl -MCPAN -e "install Test::Pod::Coverage"
C:¥>perl -MCPAN -e "install Task::Catalyst"
を順に実行するだけ。 ActivePerlを使った場合はCPANの初期化処理がいらないかも知れません。(今やってみたら聞かれなかった) が・・・Catalystは入ったケド、
C:¥>catalyst Sample
To use the Catalyst development tools including catalyst.pl and the
generated script/myapp_create.pl you need Catalyst::Helper, which is
part of the Catalyst-Devel distribution. Please install this via a
vendor package or by running one of -
  perl -MCPAN -e 'install Catalyst::Devel'
  perl -MCPANPLUS -e 'install Catalyst::Devel'
BEGIN failed--compilation aborted at C:¥Perl¥bin¥catalyst.bat line 34.
とか言われる。 ?? 一応これでCPANは使えるので、まそれはそれで役に立つと思うのでエントリします。 もうちょい調べて、出来たら追記します。
このエントリーをはてなブックマークに追加

僥倖と言うべきか、Perlのお仕事ができるかも? なので、勉強用にCatalystをMacに入れてみる。 CatalystってのはRailsのPerl版みたいなモノです。 手早く、簡単にWebアプリが作れてしまうフレームワークです。 PerlにはCPANっていう最強コミュニティがあるので、 インストールは簡単。 とりあえず、Perl5.8以上が動く環境を作って下さい。 Macは開発ツール入れていればPerl動くよね?updateは必要かもしれないけど。 Windowsで開発するのであれば、非常に面倒なので、 coLinux入れるとか、VMでLinux環境を使って作るのが楽だと思います。 はい。 では、CPANシェル使って、インストール。 なお、初回起動時には CPAN シェルの設定を手動/自動いずれで行うかどうか聞かれますが、自動設定を選択して構いません。 (昔やったんで良く覚えていません。。。) まずは、make test で Test::Pod モジュールを使っているので、warning が出ないようにする。(sudo でも rootで実行してもいい)
% sudo perl -MCPAN -e 'install Test::Pod'
% sudo perl -MCPAN -e 'install Test::Pod::Coverage'
終わったら、Catalyst本体をインストール。
% sudo perl -MCPAN -e 'install Task::Catalyst'
早速動作確認。
% catalyst.pl MyApp
% cd MyApp
% script/myapp_server.pl -r
何をやっているかと言うと、 "catalyst.pl MyApp"でMyAppというプロジェクトを作っています。 全部自動で作ってくれるので、終わったらMyAppフォルダへ移動。 "script /myapp_server.pl -r"で自動生成されたWebサーバを起動しましょう。 ApacheのようなWebサーバのインストールはいりません。 自動で生成してくれます。 此処まで出来たら、もうサンプルWebページが出来ているんで、アクセスしてみます http://localhost:3000/ こんな画面が出たら成功です。 はい、終わり 笑
このエントリーをはてなブックマークに追加

↑このページのトップヘ