6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

スゲい簡単なPerl入門 - 6thDay /usr/bin/perl perl ruby の一行の謎目

Last updated at Posted at 2013-04-11

Perlのコードをかくとき、だいたいいつもこんなものを記述してませんか?

hoge.pl
# !/usr/bin/perl -w

これ**" #! "** は**『シェバング』** といい **「シェルなどインタプリタを起動するためのもの」**です
また この行全体『シェバング行』 と言います。
語源は "Shell Bang", "Sharp Bang"などがあるようです。
ちなみに、"Bang"は俗語で"!: イクスクラメーションマーク"の意味をしています。

./hoge.pl

でもhoge.plには、シェバング行が書かれているので、
実際にはこういう命令になっています。

/usr/bin/perl -w hoge.pl

よくシェバング行は「2行目以下のスクリプトに対して適応する」とく記述がされますが、
つまりは、そのシェバングが書かれたファイルのスクリプトの実行コマンドであると考えて良いかと思います。

シェバングに付けるパラメーターはこんな感じ。まぁそれぞれの言語の実行コマンドをものと同様ですね。

- w : アラートを出す
- d : デバッグモードにする
- c : 文法チェック
- v : バージョンの表示、スクリプトの実行はされない

ここらまで見ていて代替分かったかと思いますが、シェバング行とはつまり、コマンドをファイル内に書き込んでいる という意味合いを持っています。
なので、シェバングに書いてある内容はコマンドラインでも当然再現出来るわけです。

ref) http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0

余談:
通常コンピューターはマシン語のみを解釈し、実行します。
ファイルを丸々マシン語になおすことをコンパイルと呼び、C言語などで行われている方式です。
Perl, Puby, shなどは、インタプリタ言語、逐次翻訳していきます。
これがシェバングに関係しているかなって思ったりもしましたが、そうでもないかもしれませんね。(;´Д`)

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?