星になれたなら

つみあげログです

「初めてのPerl」1章 Perl 入門 を読む

1章 Perl 入門

この章でわかること

  • この本は誰が読むべきか
  • この本を読み終えた人が次にやるといい教材はなにか
  • Perl の特徴はなにか
  • Perl で Hello, World できる

読んでいく

オーディオコメンタリー方式で、言いたいこと、補足があるぶぶんだけ書いていきます。

  • Perl とは Perl 5 のこと
    • Perl 5 と 6 はベースは同じですがそれぞれ独自路線を進んでいます
    • とくに Perl 6 は Raku と呼ばれています
    • Raku の機能が Port されることもあるようです
  • 想定読者
    • 自分で使うシンプルなプログラムを書くのに十分な Perl 5 の基礎を学びたい人向け
      • リファレンスではない
        • perldoc や metacpan などを見ていくことになるでしょう
    • 少なくともプログラミングについて多少なりとも理解している
      • ターミナルの使い方
      • ファイルの編集
      • プログラムの実行方法
      • 変数
      • サブルーチン
      • ……
    • 演習問題がついている
      • 手を動かしながら学べます、良問とは言えないものもありますが
  • 次に読むべき本
  • Perl は簡潔な構文を備える
    • デフォルト値、ショートカット、糖衣構文など
    • 学習量は必要になるものの、短い記述で多くのことができるようになっています。

Perl プログラムは、不慣れな人には、回線ノイズのように見えることがあります。しかし、経験を積んだ Perl プログラマには、壮大な交響曲の楽譜に見えるのです。

p.6

だんだんこわくなってきたぞ。

#!/usr/bin/env perl

@lines = `perldoc -u -f atan2`;
foreach(@lines) {
    s/\w<([^>]+)>/\U$1/g; # 処理対象の値(この場合 @lines から切り出された各行)が省略されている
    print;                # 処理対象の値(この場合 ↑ の処理結果)が省略されている
}

本で紹介されている実例はこれです。 こうした暗黙の値を利用するケースですが、サブルーチンの返り値を暗黙的に書く、とかがあります。

交響曲に見えるかは謎ですが、慣れたらサクっと書けそうな点は好感が持てます。

  • Perl のサポートポリシー
  • CPAN
    • Comprehensive Perl Archive Network
    • Perl のソース、サンプル、ドキュメント、モジュールが手に入る
    • さまざまなミラーサイトがある
      • 通信経路の短縮や冗長性の観点で、地理的に近いミラーを使ってみたほうがいい……んでしょうか?
        • WIDE や JAIST など日本のミラーもあるようです
    • Perl モジュールを検索するときは metacpan が便利
  • Perl ファイルの拡張子
    • Perl の側から拡張子をつけることを要請していない
      • つけないほうがよい、とも言っています
        • なので、executable なファイルが Perl のファイルだった、ということがありますね
        • shebang を書けるので shell によしなにしてもらったり、あるいは好きなコマンドに渡して実行できます
    • 典型的なのは .pl .t あたり
  • 特定の Perl バージョンからしかない機能を使うとき
    • say (Perl v5.10 or higher)を使いたい場合
      • use v5.10; or use 5.010;
        • feature プラグマの Implicit Loading のことのようです
          • 特定の Perl バージョンから使える機能すべてを有効化する構文
          • use feature を使えば一部の機能だけを有効化することもできる
          • 古い Perl インタプリタで実行しようとするとエラーを送出してくれる
        • バージョンの表記方法
          • 歴史的経緯がある部分のように思います、特に Semantic Versioning の世界観に慣れているとビビりますね
          • v を使うもの
          • 使わないもの(その場合マイナーバージョンは3桁の数字)がある

生まれた疑問点

ここでは特になかったです。

おわりに

引き写し的にゆっくり勉強してみたわけですが、 これは効率が悪いように見えて、細部の疑問が浮き彫りになっていいですね。

たとえば use feature qw/state/; は書いたことがあったのですが、あれらと use v5.10; が関係するのは知りませんでした。

それでも、これは教科書をもう一度編纂して出版するような営みです。

願わくは、こうした大仰な手を取らずとも、細部の疑問に対して反応できたらよいのですけれど。