#!/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

最近の投稿

最近のコメント

タグ

アーカイブ

その他