Pugs で Perl 6 入門 (2)

前回の記事ではPerl 6の処理系Pugsのインストールまでを行いました。今回はPugsを実行して簡単なPerlプログラムを動かしてみましょう。

Pugsの実行モード

Pugsには次の3つの実行モードがあります(名称は筆者が適当に名付けてみました):

  • プログラム実行モード(ファイルを読み込んでプログラムを実行):コマンドは pugs programfile
  • 対話モード:コマンドは引数を付けずに pugs
  • ワンライナー実行モード(1行だけのプログラムを実行):コマンドは pugs -e "program"

「プログラム実行モード」はインタプリタ処理系が普通にプログラムを実行するモードです。「対話モード」は「この関数をちょっと試してみたいんだけど」という感じで試しに数行のプログラムを打ち込んで実行するのに適したモードです。「ワンライナー実行モード」は1行だけの簡単なプログラムをコマンドラインから実行するのに適したモードです。

この入門記事では,主に通常のプログラム実行モードでプログラムを書いていきます。また,短いコードの挙動を確認するために,たまに対話モードを用います。

ワンライナー実行モードはこれ以降出てきませんので,せっかくなので最初のプログラムはワンライナーで実行してみましょう。

pugs -e "say 'Hello, Perl 6!';"

Hello, Perl 6! と表示されればOKです*1Perl 6の世界へようこそ!

Pugsの対話モードでの実行

はじめにPugsを対話モードの使い方を説明しておきます。対話モードの起動は単に pugs と打てばOKです。次のような起動画面が表示されます。

C:\Documents and Settings\kenzi>pugs -v
   ______
 /\   __ \
 \ \  \/\ \ __  __  ______  ______     (P)erl6
  \ \   __//\ \/\ \/\  __ \/\  ___\    (U)ser's
   \ \  \/ \ \ \_\ \ \ \/\ \ \___  \   (G)olfing
    \ \__\  \ \____/\ \____ \/\_____\  (S)ystem
     \/__/   \/___/  \/___/\ \/____/
                       /\____/               Version: 6.2.13
                       \/___/    Copyright 2005-2006, The Pugs Contributors
--------------------------------------------------------------------
 Web: http://pugscode.org/           Email: perl6-compiler@perl.org

Welcome to Pugs -- Perl6 User's Golfing System
Type :h for help.

Loading Prelude... done.
pugs> 

Perlの式 (expression) を入力すれば,その式の評価値が表示されます。試しに次のような式を入力してみましょう。意味は深く考えなくても大丈夫です。とりあえず入力してみてPerl 6の書き方に体を慣らしてみてください。

pugs> 3 + 4
7
pugs> 3 / 1.5
2/1
pugs> "abc" ~ "def"
"abcdef"
pugs> reverse 'xyz'
"zyx"
pugs> (1..10).reverse
(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
pugs> my @a; for 2..50 -> $x { push @a, $x if $x % all(@a) != 0; } @a;
(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47)

なお,Fedora Coreのように端末がUTF-8対応であれば,

pugs> "端末がUTF-8対応ならOK".reverse
"KOらな応対8-FTUが末端"

というように日本語を直接扱うこともできます。Windows XPなどでは動きませんが。

終了は :q と打ち込んでください。

pugs> :q
Leaving pugs.

Pugsでプログラムを実行

次にPerl 6で書かれたスクリプト(ファイル)をPugsで実行してみましょう。以下のソースコードを入力して,pugs helloperl6.p6 と打ってプログラムを実行してください。

helloperl6.p6
#! pugs

say 'Hello, Perl 6!';

ワンライナーのときと同様に Hello, Perl 6! と表示されれば成功です。Perl 6の世界へようこそ。

なお,say 関数はいわゆる print line 関数で,受け取った引数を標準出力に出力し,最後に改行文字 (\n) も出力する関数です。詳しくは後ほど。

最初の #! pugs の説明をしておきます。ファイル先頭の #! から始まる行は shebang 行と呼ばれていて,ここにはそのファイルを処理するプログラムのパスを記述します。これはシェルが読むためのものなので,Windowsでは関係ありませんが,Windowsでも上記のように #! pugs などと書いておくとそれらしくなります(趣味の問題なので書かなくても構いません)。Unix系のOSでは,chmod +x すれば ./helloperl6.p6 という感じで実行すればシェルが shebang 行を読んでそこに書かれてあるプログラムを実行してくれます。上記の記述では pugs helloperl6.p6 が実行されますが,おそらく pugs というプログラムがないと怒られるでしょう。その場合は #! /usr/bin/env pugs と書くか,もし pugs を /usr/bin/pugs にインストールしていれば #! /usr/bin/pugs と直接書けばOKです。筆者にはこの記事の読者の皆様がどのOSを使っていてどこにpugsをインストールしたのかは分かりませんので単に #! pugs とだけ書いておきますので,必要であれば適宜皆様が書き換えて使ってください。

今回はここまで。

*1:zsh などシェルによっては !' がシェルに認識されて展開されてしまいます。その場合は \!' と書いてください。