なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Perlの話

FreeStyleWikiを使いたかった

個人的なwikiAWS(アマゾンのクラウド)に構築したかった。
だけど単純にfswikiのソースを設置しただけでは動かなかったので調査した話。

FreeStyleWiki自体はこちら
FrontPage - FreeStyleWiki

あれですよ、PHPが個人的に使いたくない(てか読めない)のでPerl使ってるこっちにしたのだ

@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

つまりPerlSetEnvをhttpd.confに設定すると、CGI側で$ENV{***}で環境変数として参照できる。

ねんがんの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のソース自体は私のリポジトリから取得している(文字コードの変更などの対応)