## とほほのperl入門（まめ知識）

トップ > とほほのperl入門 > まめ知識

#### ■ Perl5では"..."の中に@を使えない

perl4.Xからperl5.Xにバージョンがアップして、一部互換性が損なわれた部分があります。最もよく目にするのは、$mailto = "foo@xxx.yyy.zzz"; のように、"..." の中に文字としての @ を記述することができなくなったことです。"\@" とするか、'@' で記述するようにします。

#### ■ perlで日本語を扱うには

シフトJISでperlスクリプトを記述する場合、「表示」が「侮ヲ」のように文字化けすることがあります。これは、漢字コードの2バイト目がバックスラッシュ( \ )のコードと重複する文字を用いた時に発生します。"表\示" のように、文字化けする個所の前後にバックスラッシュ( \ )を余分に挿入することで回避できます。

perlで漢字コードの変換を行うには、jcode というライブラリを用いると便利です。漢字コードを変換するには次のように使用します。

    require "jcode.pl";
    $xx = "漢字";
    &jcode'convert(*xx, "euc");

2バイト文字を扱う際は、一度EUCに変換してから処理すると、1バイト目も2バイト目も0x80-0xffの間なので楽です。シフトJISの場合は、1バイト目は0x80〜0xffの間ですが、2バイト目は通常のASCIIコードと重複する値になるのでで、注意が必要です。例えば、$xx = "テスト"; $xx =~ s/e/E/g; なんてことをやると、$xx の値は "ウスト" になってしまいます。

#### ■ 時間が9時間ずれる場合

海外のサーバーを利用している時など、perlが処理している時刻が9時間ずれてしまうことがあります。その時は、$ENV{'TZ'} = "JST-9"; のように、タイムゾーンを設定してやることで、回避できることがあります。

#### ■ サポートされていないかもしれない関数

flock()などの関数はOSによってサポートされていたりいなかったりします。サポートされていない関数を呼び出すと、通常その場でプログラムが終了してしまいますが、evalを用いることで回避することができます。詳しくは eval を参照してください。

#### ■ flock()の間違った使い方

flock()を用いてファイルをロックする場合、よく次のようなコーディングをしていまいますが、これは2つの誤りを含んでいます。詳しくは flock()を参照してください。

    open(OUT, "> datafile.txt");
    flock(OUT, 2);
    print OUT "....";
    flock(OUT, 8);
    close(OUT);

#### ■ 簡単なHTTPクライアントを実現するには？

→ socket()

#### ■ IPアドレスをホスト名に変換するには？

→ gethostbyaddr()

Copyright (C) 1997-2002 杜甫々
初版：1997年2月3日、最終更新：2002年2月24日
http://www.tohoho-web.com/wwwperl4.htm