homeホームHTMLに役立つヒントマニュアルに書いてないきのぼず > MAC perlで動かす

MAC perlで動かす

 このページはOS 9以前で動かすときの話です。OS XではFreeBSDベースのシステムになっていますので、通常のUNIX perlが動きます(最初からインストールされている。バージョンは5.6.0)ので、このページにあるような改造は必要ありません。ただし、デフォルトではOS XはCGIの機能がOFFになっていますので、CGIを使えるように設定を変更する必要があります。やり方は「HTMLに役立つヒント」の「Mac OS XDarwin Tips」を見てください。


■■目次■■
 ●MACの改行コードにする ●改行無視を直す ●R7.2の不具合

●ファイルをMACの改行コードにする R6.x/R7.x ▲このページのトップへ  ▲▲目次ページへ

 これはけっこう簡単。「.cgi」「.pl」ファイルを全部「EUC/CR」にする。CRはMACの改行コード。基本的にはこれだけで動きます。


●改行無視を直す R6.x/R7.x ▲このページのトップへ  ▲▲目次ページへ

 改行コードを直しただけではMACperlのバグ(?)のせいで改行が無視されてしまう。そこで、以下のように赤い部分を書き換えてやる。

●オリジナル R6.11の場合 ▲このページのトップへ  ▲▲目次ページへ
sub PlainArticleToHtml
{
local( *Article ) = @_;
$Article =~ s/^\n*//o;
$Article =~ s/\n*$//o;
$Article =~ s/\n/<br>\n/go;
$Article =~ s/<br>\n<br>\n(<br>\n)*/<\/p>\n\n<p>/go;
$Article = "<p>$Article</p>";
}

●改造後

sub PlainArticleToHtml
{
if ( $PC ==1 ) { # MACだったら
$pcreturn = "\r";
} else {
$pcreturn = "\n";
}

local( *Article ) = @_;
$Article =~ s/^$pcreturn*//o;
$Article =~ s/$pcreturn*$//o;
$Article =~ s/$pcreturn/<br>\n/go;
$Article =~ s/<br>$pcreturn<br>$pcreturn(<br>$pcreturn)*/<\/p>$pcreturn$pcreturn<p>/go;

$Article = "<p>$Article</p>";
}


●オリジナル R7.2の場合 ▲このページのトップへ  ▲▲目次ページへ

sub plainArticleToHtml
{
local( *Article ) = @_;
$Article =~ s/^\n*//o;
$Article =~ s/\n*$//o;
$Article =~ s/\n/$HTML_BR/go;
$Article =~ s/$HTML_BR($HTML_BR)+/<\/p>\n\n<p>/go;
$Article = "<p>$Article</p>";
}

●改造後

sub plainArticleToHtml
{
if ( $PC ==1 ) { # MACだったら
$pcreturn = "\r";
} else {
$pcreturn = "\n";
}

local( *Article ) = @_;
$Article =~ s/^$pcreturn*//o;
$Article =~ s/$pcreturn*$//o;
$Article =~ s/$pcreturn/$HTML_BR/go;
$Article =~ s/$HTML_BR($HTML_BR)+/<\/p>$pcreturn$pcreturn<p>/go;

$Article = "<p>$Article</p>";
}


●R7.2の不具合 R7.x ▲このページのトップへ  ▲▲目次ページへ
 現時点では、R7.2では次のように変更してください。この変更をしないと、kinoboardsがないと怒られたり、アカウントの登録・ログインができません。この改造方法はなひさんに教わりました<(_ _)>

■■オリジナル
sub getPath
{
    local( $DbDir, $File ) = @_;
    if ( $MACPERL )
    {
	":$DbDir:$File";
    }
    else
    {
	"$DbDir/$File";
    }
}

■■改造後
sub getPath
{
    local( $dir, $file ) = @_;
    if ( $MACPERL )
    {
        if ( $dir eq '.' )
        {
 ":$file";
        }
        else
        {
 ":$dir:$file";
        }
    }
    else
    {
        "$dir/$file";
    }
}

 以上でMAC向けの改造は終わりです。

▲このページのトップへ  ▲▲目次ページへ