環境変数を取得・設定する %ENV



  1. Perl




  2. 特殊変数



  3. here

環境変数は特殊変数「%ENV」を使うことで、取得・設定することができます。

%ENV

この環境変数ハッシュで、環境変数名がキーになっています。

たとえば、環境変数「REMOTE_ADDR」の場合は以下のようにして値を参照できます。

my $remote_addre = $ENV{REMOTE_ADDR};

環境変数を設定したい場合は以下のようにします。

$ENV{MYAPP_MAX_CLIENT} = 10;
環境変数とは

環境変数とは、OSが持つ変数のようなものです。環境変数は、OSがプロセスを起動したときに、プロセス空間のメモリ上にコピーされます。OSの環境変数は、プロセスからは、変更できません。

環境変数は、自由に設定変更できますが、そのプロセスでのみで有効です。あるプロセスが、子プロセスを起動したときは、OSが、プロセスを起動したときのように、環境変数がコピーされます。



  1. Perl




  2. 特殊変数



  3. here

プログラム名を取得する $0



  1. Perl




  2. 特殊変数



  3. here

プログラム名を取得するには特殊変数「$0」を使用します。

$0;

プログラムを起動したときの名前を取得できます。つまり、絶対パスでプログラムを指定すれば、絶対パス名が、カレントディレクトリから、相対パスで指定した場合は、相対パス名で、プログラム名を取得できます。

プログラムが存在するディレクトリ名を取得したい場合は、FindBinモジュールを使用するのが便利です。



  1. Perl




  2. 特殊変数



  3. here

モジュールの検索パス @INC



  1. Perl




  2. 特殊変数



  3. here

モジュールの検索パスの一覧は特殊変数「@INC」に代入されています。

@INC

モジュールの検索パスとは、Perlが、モジュールを読み込むために、検索するディレクトリのことです。@INC に、含まれないディレクトリに置かれたモジュールは、読み込むことができません。

モジュールの検索パスを追加する

libモジュールを使うことで、コンパイル時に、@INC に、検索パスを追加できます。

use lib './lib';

@INC の先頭に直接、モジュールの検索パスを追加する

unshift @INC, './lib2';

unshift関数で、直接先頭に追加します。このやり方より、libモジュールを用いるほうがよいです。libモジュールを使う利点は、コンパイル時に、検索パスが追加されることと、可読性が高まること、アーキテクチャに応じたパスも追加されることです。



  1. Perl




  2. 特殊変数



  3. here

morboをWindowsで動かすツール - winmorbo

Mojolicious開発サーバー「morbo」をWindowsでうまく動作させるツールwinmorboをリリースしました。

winmorbo

Windowsでは、Mojolicious開発サーバーmorboはうまく動きません。なぜなら、ワーカープロセスは親TERMシグナルをうまく受信できないからです。

このため、Windows上では、Web開発は、とても面倒なものになります。

Windowsでmorboをうまく動作させるため、Mojo::Server::Morboを簡単な方法でハックしました。

winmorboのインストール方法

winmorbo.batのダウンロード

まず、Mojoliciousプロジェクトディレクトリにwinmorb.batをダウンロードします。

winmorbo - Github

GitHubでwinmorbo.batをクリックし、Rawボタンをクリックしてwinmorbo.batをダウンロードします。

winmorbo.batを実行

Mojoliciousアプリケーションを実行するには以下のコマンドを実行します。

Windowsバッチファイルなので、.bat拡張子は指定する必要はありません。

このサンプルでは、Mojoliciousアプリケーションはapp.plです。

    winmorbo app.pl

ウィンドウが開いて次の画面がでれば成功です。

    C:\Users\kimot\labo>cmd /C perl -x -S winmorbo app.pl
    Server available at http://127.0.0.1:3000

これでファイルを変更するたびに、自動的にmorboサーバーが再起動するようになります。

よくある質問

"Can't opendir(templates)"エラーが表示されます

これは、Windowsのユーザーディレクトリに「Templates」ディレクトリがあるためです。

Mojoliciousもは「templates」ディレクトリも使用します。

この問題を解決するには、ひとつディレクトリを作成します(例:labo)。

    cd C:\Users\kimot
    mkdir labo
    cd labo

そして、laboディレクトリの中にapp.plを作成しましょう。

readline関数 - 1行読み込み

readline関数を使用すると、1行読み込みを行うことができます。

readline ファイルハンドル

readline関数は、行入力演算子と機能がまったく同じです。Perlでは、慣習的に、行入力演算子を使うことが、ほとんどなので、行入力演算子を使うほうがよいでしょう。

行入力演算子については以下の記事を参考にしてください。

無限大(Inf)、無限小(-Inf)、非数(NaN)を得るには

Perlで無限大(Inf)、無限小(-Inf)、非数(NaN)の数値表現を得るには以下のようにします。

無限大 Inf

正の方向でオーバーフローする浮動小数点演算を行うと無限大(Inf)を得ることができます。

9**9**9
無限小 -Inf

負の方向でオーバーフローする浮動小数点演算を行うと無限大(Inf)を得ることができます。

-9**9**9
非数 NaN

無限大を無限大で除算すると非数(NaN)を得ることができます。

9**9**9 / 9**9**9


(参考)特殊浮動小数点数: 無限 (Inf) と非数 (NaN)

2018年のPerl入学式の紹介

2018年度のPerl入学式始動! ということで、スケジュールを紹介しますね。

ちなみに、4月21日のPerl入学式には、僕もサポーターで参加します。

勉強会こわいなという方も、Perl入学式は、初心者に親切な勉強会なので、勇気をふるって参加してみてはいかがでしょうか。春に始まる第一回が開催されますよ!

Perl入学式 in東京 第1回

2018年4月21日(土)

時間 13:00 - 19:00
定員 30人 (現在7名参加, 0名補欠)
会場 株式会社ガイアックス KSS五反田ビル 6階セミナールーム
住所 東京都品川区西五反田1-21-8 KSS五反田ビル6階
申し込みはこちら!

Perl入学式 in大阪 第1回

2018年5月12日(土)

時間 13:00 - 17:30
定員 20人 (現在9名参加, 0名補欠)
会場 ニュー共栄ビル 地下会議室
住所 大阪府大阪市北区芝田2丁目5−6
申し込みはこちら!

Perl入学式 in沖縄 第1回

第1回は5月19日(土)

YAPC::Okinawaで盛り上がった沖縄でも #Perl入学式 をやって行きます!! 第1回は5月19日(土)に琉球大学工学部です!
プログラミングを始めてみたい皆さんからPerlを新しく学びたい皆さんまで奮ってご参加ください!
申し込みはこちら