#!/usr/bin/env perl

print "Hello, Perl\n";

最初なんであまり詰め込まず最低限の内容だけ

1行目は ./ファイル名 で実行した際に何で実行するかを識別するためのシェバンを書く あとは、print関数で文字列渡して出力
print 関数は改行を自動で出力しないので必要に応じて改行は記載する
文のおわりはセミコロンをつける

投稿日時: 2025-06-15 03:53:15

何をかけばよい?

#!/usr/bin/env perl

これを書きましょ

なんでシェバン?

スクリプトファイルを実行する際に、何で実行するかを伝えるためのものとして記載
#!とかくことから、ハッシュ・バングが shebangになったという噂

#!/usr/bin/perlでは?

昔は、 #!/usr/bin/perl と書くのが定番。今は#!/usr/bin/env perl

perl ファイル名 で実行した場合
perl コマンドを環境変数のPathの中から順に探していき、/usr/binディレクトリ内でperlを見つけて実行することになるが
./ファイル名 で実行すると何で実行すればよいかわからないので、ここでシェバンが登場
(chmod 755 ファイル名で実行権限をつけておくこと)

#!/usr/bin/perlなら /usr/binディレクトリのperlを実行
#!/user/bin/env perl だと
/usr/bin ディレクトリにあるenvコマンドで環境変数のPath内からperlコマンドを探すことになる
(perl ファイル名 と一緒)
#!/usr/bin/perl だと 環境が変わって存在しなかった時動かないので、#!/usr/bin/env perl で幅広く探して実行の方が汎用的という話

plenvがある時

perl ファイル名でも ./ファイル名でも(#!/usr/bin/env perl)なら
環境変数のPATHを見に行く。

その時、plenvをいれているとPATHの先頭の方に、~/.plenv/shims がある
そこに perl というファイルがある
要するに、同じ名前の別のプログラムおいて、実行すべきバージョン情報を探して、
それをplenvが管理しているとこから探して実行するつなぎの処理をしているって感じ

このファイルを実行することでどのバージョンのPerlを実行するのか調べる

  1. PLENV_VERSION環境変数があり、バージョンが設定されているか?
  2. カレントディレクトリまたは上位ディレクトリに .perl-versionファイルがあるか(plenv local バージョン実行で作られるファイル)
  3. ~/.perl-versionファイルがあるか?
  4. ~/.plenv/version があるか(plenv global バージョンの設定)
  5. systemのPerl

1〜4でバージョンが見つかれば、.plenv内にインストールされているperlから該当のバージョンを探して実行する形になる

という流れとのこと。。

初めてのPerlだと書籍としては、 #!/usr/bin/perl で統一されているが
1.4.2 このプログラムの中身はどうなっているのでしょうか? に #!/usr/bin/env perl の記載がありますね

投稿日時: 2025-06-14 09:29:14
更新日時: 2025-06-14 13:00:14

複数のバージョンのPerlを入れて使うためにplenvをインストール

macなのでHomebrewでインストール

$ brew update
$ brew install plenv
$ brew install perl-build

plenvとperl-buildの関係
生成AIさん!説明よろしく!

perl-buildは、plenvでPerlの新しいバージョンをインストールするときに使う「Perlビルド支援プラグイン」です。

具体的には、指定したPerlのバージョンのソースコードを自動でダウンロードし、ローカルマシン上でビルド・インストールする役割を担っています

plenv単体ではPerlのバージョン管理や切り替えはできますが、Perl本体のインストール機能は持っていません。perl-buildをプラグインとして追加することで、plenvコマンドから簡単にPerlの各バージョンをインストールできるようになります

なお、バージョンの切り替えには、shimsという仕組みを使っていて、 plenvのshimsが動作するよう、シェル起動時にplenvの初期化(plenv init)を実行する必要がある

bash使ってるので.bashrcに以下を追加

eval "$(plenv init -)"

ファイルの再読み込み

$ source ~/.bashrc

plenv使い方メモ

# plenvのバージョン
$ plenv -v
plenv 2.3.1

# インストール可能なPerlバージョン一覧(x.y.z の yが偶数が正規版、奇数が開発版)
$ plenv install -l
Available versions:
 5.41.13
 5.41.12
 (略)
 5.40.2
(略)

# Perlのインストール
$ plenv install バージョン
$ plenv install 5.40.2

# インストール済みPerlのバージョン一覧(*がついているのが現在選択中のPerl)
$ plenv versions
* system (set by /Users/ユーザー名/.plenv/version)
  5.40.2

# 使用するperlバージョンの切り替え
$ plenv global バージョン
$ plenv global 5.40.2

# 切り替わったか確認
$ plenv versions
  system
* 5.40.2 (set by /Users/ユーザー名/.plenv/version)

Perlのバージョンを確認してみる

$ perl -v

This is perl 5, version 40, subversion 2 (v5.40.2) built for darwin-2level
(略)

# ローカルで使用するPerlバージョン(.perl-versionファイルが作られる)
$ plenv local 5.40.2

$ cat .perl-version
5.40.2

# モジュールインストールのためcpanmをインストール
$ plenv install-cpanm
投稿日時: 2025-06-14 04:18:14

Perl5.8の頃以来にひさびさにさわってみたくなったので買ってみた
相対的にみて新しい情報が乗っているのはこの本くらいかなと
あとはネットを徘徊しながらAIに聞いてみましょ

Perlは、5.8の頃(2000年初頭)あたりに触り始め、その後 5.10あたりで離脱
いずれにしろ、仕事ではなく趣味で軽く触っていた程度。

初めてのPerlの第7版だというのに最初のページを読むと

『初めてのPerl』の第7版へようこそ。第7版では、Perl 5.24 とその最新機能に関する情報が追加されています。本書は、まだPerl 5.8 を使っている方にも活用していただけます

ん?いまだに5.8なのか・・・

投稿日時: 2025-06-04 11:28:04
更新日時: 2025-06-14 04:24:14

最近の投稿

最近のコメント

タグ

アーカイブ

その他