Perlの話
FreeStyleWikiを使いたかった
個人的なwikiをAWS(アマゾンのクラウド)に構築したかった。
だけど単純にfswikiのソースを設置しただけでは動かなかったので調査した話。
@INCとは
昔見た時はこの@INCってやつが何者かわからなかったのだけど、今ならわかる。これは動作しているPerlのインタープリターが見ているライブラリのパスが入った配列だ。
これでPerlが普段見ている範囲がわかる
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
#!/usr/bin/perl foreach (@INC) { print "_$\n"; }
@INCにライブラリのパスを追加したい
@INCにライブラリのパスを追加するにはいろいろ方法があるようだ
Perlでモジュールにパスを通す方法 - Qiita
Perlにもコンパイル時処理と実行時処理があり、特に、mod_perlを使用する場合スクリプトのコンパイル時に@INCを追加しなければ意味がないようだ。
そして、その処理はBEGIN節に書いてやる。なんかawkみたいだな。unshiftは@INCに文字列を追加。
BEGIN { unshift @INC, "/path/to/MyClass"; } use MyClass;
httpd.confが持っている環境変数を参照したい
fswikiは環境変数を参照しているわけだが、これをどこから取ってくるか悩んだ。
答えはこの辺にあった(ありがとうございました)
mod_perl 2.0 での2種類のハンドラ modperl と perl-script - daily dayflower
Practical mod_perl: 4.2.10. PerlSetEnv and PerlPassEnv
ねんがんのFreeStyleWikiを設置したぞ
・文字コードが一昔前のEUC-JPだったので、ここ:http://pelican.ddo.jp/fukurou/mediawiki/index.php/FSwiki%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%ABなどを参考にさせていただきソースを修正し環境自動構築用のスクリプトを作成した。
構築用のスクリプトはこちら(続きを読むで表示)
・一応Ubuntu/Debianで構築、Centos7にも対応した
・fswikiのソース自体は私のリポジトリから取得している(文字コードの変更などの対応)