何をかけばよい?
#!/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を実行するのか調べる
- PLENV_VERSION環境変数があり、バージョンが設定されているか?
- カレントディレクトリまたは上位ディレクトリに .perl-versionファイルがあるか(plenv local バージョン実行で作られるファイル)
- ~/.perl-versionファイルがあるか?
- ~/.plenv/version があるか(plenv global バージョンの設定)
- systemのPerl
1〜4でバージョンが見つかれば、.plenv内にインストールされているperlから該当のバージョンを探して実行する形になる
という流れとのこと。。
初めてのPerlだと書籍としては、 #!/usr/bin/perl で統一されているが
1.4.2 このプログラムの中身はどうなっているのでしょうか? に #!/usr/bin/env perl の記載がありますね