Strawberry PerlをWindowsにインストールする



  1. Perl



  2. インストール

Strawberry Perl(ストロベリーパール)はWindowsPerlを利用するために作成されたPerlディストリビューションのひとつです。

Strawberry Perl for Windows

Strawberry Perlの良いところは、

  • Unix/Linux環境のPerlと近い感覚で使うことができる
  • gccなどの開発環境が準備されていて、CPANモジュールがインストール可能
  • 古いバージョンのPerlも公開されている

です。

PerlUnix生まれの言語なので、WindowsでもなるべくUnix環境に近い感覚で利用できると使いやすく感じます。

Strawberry Perlを使うと、ほとんどのCPANモジュールがインストールが可能です。

古いバージョンのPerlもそのまま残してくれているので、開発をしていて、古いPerlがダウンロードできなくなったという心配もありません。

WindowsPerlを利用する場合は、一番最初に試してみてほしいPerlです。

以下では、Windows 10を想定して、インストール方法を解説します。Windowsの古いバージョンでも、手順はほとんど同じです。

Strawberry Perlのダウンロード

Strawberry Perlをダウンロードして、インストールしてみましょう。2018年の最新のPerlは、Perl 5.28です。

以下のリンクからStrawberry Perl 5.28 64bit MSI installerをクリックして、Strawberry Perlをデスクトップにダウンロードしましょう。

MSI installerというのはWindowsのデフォルトのインストーラーという意味です。

末尾のバージョン番号が少し違うこともあるかもしれませんが、気にしないで大丈夫です。

ほとんどの場合は64bit版のWindowsで大丈夫だと思いますが、32bit版が必要な方は、32bitの方のStrawberry Perlをダウンロードしてください。

Strawberry Perlのインストール

ダウンロードしたStrawberry Perlをダブルクリックします。

インストーラーが起動します。空き容量の計算に少し時間がかかる場合がありますが、そのまま待ちましょう。

インストーラーが起動しますので「Next」を押して進みます。

途中で「I accept the terms in the License Agreement」というチェックボックスがでてくるので、チェックをいれて「Next」を押します。

さらに「Next」を押して進んでいって、最後に「Install」をクリックするとStrawberry Perlのインストールが始まります。

ここで「この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか?」というダイアログが表示されると思いますが、「はい」をクリックしましょう。

5分くらい時間がかかるので待ちましょう。

プログレスバーが満タンになると、Strawberry Perlのインストールが完了します。

「Finish」を押してダイアログを閉じましょう。Readmeが表示されますが、これも閉じて大丈夫です。

Perlがインストールされていることの確認

インストールが完了したら実際にStrawberry Perlがインストールできているか確認してみましょう。

コマンドプロンプトというツールをを実行してPerlのバージョンを表示してみます。

コマンドプロンプトは、「スタートメニュー」→「アプリの一覧」→「Windowsシステムツール」→「コマンドプロンプト」から実行できます。

黒い画面がでてくるので、以下の文字をキーボードからうち「Enter」を押してみてください。

perl -v

次のようにバージョン情報が表示されればインストールは成功しています。

This is perl 5, version 28, subversion 0 (v5.28.0) built for MSWin32-x64-multi-thread

これでStrawberry Perlのインストールは完了です。

WindowsPerlを実行するためにはコマンドプロンプトと呼ばれるものを利用します。perlコマンドを使ってPerlスクリプトを実行できるようになります。

コマンドプロンプトの使い方を知りたい方は「Perlを実行するためのコマンドプロンプト入門」という記事で解説しています。

FAQ

Strawberry Perlを正しく実行できません

Active PerlやStrawbery Perl 32bitなど別のPerlがインストールされていると、うまく動かない場合があります。別のPerlアプリのアンインストール画面からアンインストールして、もう一度Strawberry Perlをインストールしなおしてみてください。

その他のインストール方法

WindowsPerlを利用するその他の方法については、以下を参考にしてください。それぞれに長所があります。

msys2をWindowsにインストールしてPerlを使う



  1. Perl



  2. インストール

msys2をWindowsにインストールしてPerlを使う方法を解説します。

msys2(エムシスツー)は、Windows上でLinux風のシェル環境を提供するツールです。PerlUnix生まれですので、Unix/Linux風の環境で開発をしたいという要望があります。

msys2なら、ls、cat、tar、gitといったLinuxコマンドを利用することができますし、UTF-8も正しく表示できます。

POSIX互換レイヤーがありますので、Linuxでの起動を前提とした、Mojoliciousの開発サーバーも正しく動きます。

msys2のインストール 10分

msys2をダウンロードしてインストールしましょう。

msys2のダウンロード

msys2をインストールしましょう。64bit版Windowsの場合は64bit版のmsys2を、32bit版のWindowsの場合は32bit版のmsys2を利用しましょう。

現在(2018年)では、たいていのWindowsは64bit版かと思われますので、普通は64bit版で大丈夫なはず。以下の解説は64bit版を前提に行います。

一番上にあるのが、最新版です。クリックして、msys2をデスクトップに、ダウンロードしましょう。

msys2のインストール

デスクトップにあるmsys2のアイコンをダブルクリックします。

次へを押していくと、インストールが始まります。3分くらいかかりますので、待ちましょう。

完了を押すとmsys2が起動しますが、いったん右上のバツを押して終了させましょう。

msys2の二回目以降の起動

msys2を一度閉じると、次は、どこから起動したらいいんだろうと迷いますね。

Windowsのスタート−メニューのアプリケーションの一覧からmの目次を探すと「MSYS2 64bit」のディレクトリがあります。

その中に

がありますが、「MSYS2 MSYS」を起動しましょう。msys2には、3種類の起動スクリプトがありますが、Perlを正しく動かす場合は、Linuxの再現性が最も高い「MSYS2 MSYS」を選択します。

これを間違うと正しくPerlの環境が整えられないので、注意してください。

他の二つは、Windowsネイティブアプリを開発する場合に利用するようです。

デスクトップにショートカットを作成しておくと起動が便利です。その場合は「右クリック」「その他」「ファイルの場所を開く」から「MSYS2 MSYS」を「右クリック」「コピー」して、デスクトップで「貼り付け」です。

Perl環境構築 20分

msys2でPerlを利用できるようにします。PerlPerlで必要となる開発環境の一覧をまとめてインストールしましょう。

pacmanはmsys2のパッケージマネージャーです。

pacman -S perl perl-CPAN msys2-devel make libcrypt-devel

インストールするか聞かれるので「Enter」を押して進めましょう。何を聞かれても「Enter」で大丈夫。

以下がインストールされます。これが、Perlを正しく動かすために必要な最小限の環境です。

ここで一度右上のバツを押して、ターミナルを閉じて、「MSYS2 MSYS」再起動してください。これがないとPATHの設定が正しくされず、cpanコマンドが正しく動きません。

Perlがインストールされているか確認しましょう。

perl -v

以下のように表示されれば、インストールされています。

This is perl 5, version 28, subversion 0 (v5.28.0) built for x86_64-msys-thread-multi
Perlスクリプトを実行

msys2のユーザーディレクトリは以下の場所になっています。ユーザーディレクトリの下にPerlスクリプトを配置しましょう。

C:\msys64\home\ユーザー名

カレントディレクトリを移動。

cd C:\msys64\home\ユーザー名

ここに「test.pl」というファイルを作成。以下を記述しましょう。

print "Hello, World!\n";

Perlスクリプトを実行してみましょう。

perl test.pl

以下のように表示されれば、Perlはうまくインストールされて、プログラムが実行できています。

Hello, World!
CPANモジュールのインストール

Perlの環境が正しく構築されているかを確認するために、ピュアPerlで動くMojoliciousとXSで書かれているJSON::XSをインストールしてみましょう。

初回はcpanを自動設定するか聞かれるので「Enter」で進めましょう。

cpan Mojolicious
cpan JSON::XS

このインストールが確認できると作業は終了です。お疲れさまでした。

お願い

msys2は定期的にアップデートされて、パッケージ名やアップデートコマンドが変わったりするので、この手順でうまくいかない場合は、コメント欄かTwitterにてお知らせください。

雅なPerl入門 - 雅ちゃんが大学生クロウにPerlを学ぶ物語

雅(みやび)なPerl入門は、雅ちゃんが大学生クロウにPerlを学ぶ物語形式で、Perlを学べる入門書。

Perlを教えてくださいっ!」
ある日突然、twitterのダイレクトメッセージにメッセージが飛び込んできた。それは女の子からのものだった。どうせまたスパムだろう。最初はそう思っていたのでメッセージを無視し続けていたのだ。しかし、その後もメッセージは送られ続けてきた。


そんな俺がPerlを教えることになるとは。ただ、俺は面倒見は良い方だから、こういう話は断れない性格なのだ。決して女の子にPerlを教えたいがためではないのだ。
「ところで名前はなんていうの?」
「雅といいます!」
そんなこんなで俺はPerlを教えることになったのだ。
「やれやれだ」


(第一章プロローグより)

会話形式で、進んでいくので、Perlを学びながら楽しく読み進めていくことができます。

第二章。

第三章。

「表紙のかわいらしさ」とは裏腹に、内容はガチ。Perlの基本的なことがらをもれなく学ぶことができる。

目次

  1. プロローグ
  2. Perlを知ろう
  3. Perlの開発環境を整えよう
  4. スカラー
  5. 配列とリスト
  6. ハッシュ
  7. サブルーチン
  8. コンテキスト
  9. 正規表現
  10. リファレンス
  11. CPAN
  12. パッケージ
  13. モジュール
  14. オブジェクト指向
  15. テスト
  16. ファイル入出力
  17. 文字エンコーディング
  18. CPANモジュールガイド
  19. Perl6入門

初めてPerlを学ぶ学生の方や社会人1年目でPerlを使うことになったエンジニアの方にお勧め。

ページ数は226ページで、基本を学ぶには十分なボリューム。

価格は1500円 + 送料。

購入方法

注:雅なPerl入門は同人誌です。一般の書店やオンラインストアでは現在は販売されていません。

購入方法

作者の雅なラクダさんに、Twitterのメッセージあるいはダイレクトメッセージで以下のようにお伝えください。

「雅なPerl入門」購入希望

購入方法の手続きを教えてもらうことができます。

Perl 5.28リリース - Unicode 10.0サポート、文字列連結の高速化、ref関数、keys関数、forループの高速化

20180626074702

Perl 5.28が2018年6月22日にリリースされました。Perl 5.28でうれしい機能をピックアップして紹介。

Unicode 10.0サポート

Unicode 10.0がサポートされました。56種類の新しい絵文字が使えるようです。

文字列連結の高速化

複数の文字列連結が、高速化されました。内部的にmulticoncatという一つのオペコードで処理するようになったからです。

以下のようなコードが高速化されます。

    $s .= "a=$a b=$b\n"


たとえば、x86_64のシステムでは、以下の文字列連結のコードが4倍高速化されます。

    my $s;
    my $a = "ab\x{100}cde";
    my $b = "fghij";
    my $c = "\x{101}klmn";

    for my $i (1..10_000_000) {
        $s = "\x{100}wxyz";
        $s .= "foo=$a bar=$b baz=$c";
    }

さらに加えて定数文字列を含むsprintfもmulticoncatを使って、最適化されています。

ref関数の高速化

真偽値コンテキストではref関数がかなり速くなりました。真偽値コンテキストでは、一時的な文字列を作成しなくなったからです。

keys関数の高速化

keys関数は、スカラコンテキストでより最適化されました。

forループの高速化

forループとそれに類似した構文は、ほとんどのケースで、より効率的になりました。

perl -iによる置換が安全に

perl -iによるファイル内容の置換は、編集中はバックアップがとられるようになり、安全になりました。

Cent OS 5でインストールできないバグを修正

Perl 5.26はCent OS 5にインストールできませんでしたが、Perl 5.28では、インストールできるようになっています。僕の環境でも試して、インストールできることを確認!

実験的なサブルーチンシグネチャにおける属性の位置が変更

実験的なサブルーチンシグネチャにおける属性の位置が変更されました。

変更前 sub foo ($foo, $bar) : attr;
変更後 sub foo : attr ($foo, $bar)

互換性のない変更

PerlはC89が必須に

PerlコンパイルにはC89がコンパイルできるコンパイラが必須になりました。C99やC11ではないので、見間違わないでね。

${^ENCODING}への値の設定は不正になりました

もし過去に、${^ENCODING}を設定している方がいればご注意。

sortプラグマによるsortアルゴリズムが指定できなくなりました

sortプラグマによるsortアルゴリズムが指定できなくなりました。常に、Perlデフォルトのsortアルゴリズムが使用されます。

Perl 5.28リリース雑感

今回のリリースは、小さなパフォーマンス改善が中心となるリリースに感じます。文字列のパフォーマンス改善は、すべてのPerlユーザーのメリットになるので、とてもうれしい。

最近のPerlでは、真偽値コンテキストのリファクタリングがされていて、文字列を返さなくって良い場所では、1が返されるようになって、これが高速化につながっている。

まだまだ息の長いCent OS 5にも最新のPerlがインストールできるようになって「一度書けば、Perlどこでも動くよ」って感じですね。

read関数 - ファイルからバイト数を指定して読み込み



  1. Perl




  2. 関数



  3. here

read関数を使用すると、ファイルからバイト数を指定して読み込むことができます。

read $fh, $buffer, $byte_size;

第一引数は、ファイルハンドル、第二引数は、読み込んだデータを格納するスカラ変数、第三引数は、バイトサイズを指定します。

read関数を実行すると、第二引数で指定したスカラ変数に、指定したバイトサイズのデータが読み込まれます。

read関数に関する詳しい解説は公式ドキュメントをご覧ください。

read関数のサンプル

read関数のサンプルプログラムです。read関数を使ってファイルから8バイト読み込んでいます。

use strict;
use warnings;

# 読み込むファイルを開く
my $file = 'data.txt';
open my $fh, '<', $file
  or die "Can't open file $file: $!";

# read関数
my $buffer;
my $byte_size = 8;
read $fh, $buffer, $byte_size;

# 読み込んだデータを出力
print $buffer;



  1. Perl




  2. 関数



  3. here

sysread関数 - ファイルからバイト数を指定して読み込み(バッファリングなし)



  1. Perl




  2. 関数



  3. here

sysread関数を使用すると、ファイルからバイト数を指定して読み込むことができます。

sysread $fh, $buffer, $byte_size;

第一引数は、ファイルハンドル、第二引数は、読み込んだデータを格納するスカラ変数、第三引数は、バイトサイズを指定します。

sysread関数を実行すると、第二引数で指定したスカラ変数に、指定したバイトサイズのデータが読み込まれます。sysread関数はsyswrite関数と対になっています。

read関数との違いは、sysread関数においてはバッファリングがされないという点です。

sysread関数に関する詳しい解説は公式ドキュメントをご覧ください。

sysread関数のサンプル

sysread関数のサンプルプログラムです。sysread関数を使ってファイルから8バイト読み込んでいます。

use strict;
use warnings;

# 読み込むファイルを開く
my $file = 'data.txt';
open my $fh, '<', $file
  or die "Can't open file $file: $!";

# sysread関数
my $buffer;
my $byte_size = 8;
sysread $fh, $buffer, $byte_size;

# 読み込んだデータを出力
print $buffer;



  1. Perl




  2. 関数



  3. here

syswrite関数 - ファイルにバイト数を指定して書き込み(バッファリングなし)



  1. Perl




  2. 関数



  3. here

syswrite関数を使用すると、ファイルにバイト数を指定して書き込むことができます。

syswrite $fh, $buffer, $byte_size;

第一引数は、ファイルハンドル、第二引数は、書き込むデータであるスカラ変数、第三引数は、バイトサイズを指定します。

syswrite関数を実行すると、第一引数で指定したファイルハンドルに、指定したバイトサイズのデータが書き込まれます。

syswrite関数は、バッファリングを行わず、即座に書き込みを行います。syswrite関数はsysread関数と対になっています。

syswrite関数に関する詳しい解説は、公式ドキュメントを参考にしてください。

syswrite関数のサンプル

syswrite関数のサンプルプログラムです。syswrite関数を使って、文字列の長さ分書き込んでいます。

use strict;
use warnings;

# 書き込むファイルを開く
my $file = 'data.txt';
open my $fh, '>', $file
  or die "Can't open file $file: $!";

# syswrite関数
my $buffer = 'AGTC';
my $byte_size = length $buffer;
syswrite $fh, $buffer, $byte_size;



  1. Perl




  2. 関数



  3. here