第13章 ディレクトリの操作 ディレクトリ演算子
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
第12章で作成したファイルは、一般的にプログラムと同じ場所にあった。しかし、最近のオペレーティングシステムでは、ファイルをディレクトリにまとめることができる。Perlでは、オペレーティング・システム間でかなり移植性の高い方法で、これらのディレクトリを直接操作することができる。
Perlは、どのシステム上で動作しても同じように動作するよう、懸命に努力している。にもかかわらず、この章ではPerlがUnixの歴史を好んでいることを確かに示している。Windowsを使っているなら、Win32 。これらのモジュールはWin32 APIへのフックを提供している。
現在の作業ディレクトリ
あなたのプログラミングは作業ディレクトリで実行される。これは、あなたのプログラムが実行するすべてのデフォルト・ディレクトリである。
Cwd モジュール(スタンダード・ライブラリーの一部)を使えば、そのディレクトリが何であるかを知ることができる。show_my_cwdと呼ぶこのプログラミングを試してみよう:
use v5.10; use Cwd; say "The current working directory is ", getcwd();
これは、Unixシェルでpwdを実行したり、Windowsコマンドシェルでcd(引数なし)を実行した場合と同じディレクトリになるはずだ。この本でPerlを練習している間は、ほとんどの場合、プログラムを格納しているのと同じディレクトリで作業しているはずだ。
相対パス(ファイルシステムツリーの先頭からの完全なパスを示さないパス)を使ってファイルを開くと、Perlはその相対パスをカレントディレクトリから解釈する。現在の作業ディレクトリが/home/fredだとする。ファイルを読み取るためにこのコードを実行すると、Perlは/home/fred/相対パス/path.txtを探す:
# relative to the current working directory open my $fh, '<:utf8', 'relative/path.txt'
シェルやターミナル・プログラムを使っていない場合、プログラミングを実行するものは、現在の作業ディレクトリについて異なる考えを持っているかもしれない。エディターからプログラムを実行できる場合、そのアプリケーションの現在の作業ディレクトリは、あなたがファイルを保存したディレクトリとは異なるかもしれない。cronのようなものでプログラミングをスケジューリングしても、おそらく同じことができるだろう。
現在の作業ディレクトリは、必ずしもプログラムを格納しているディレクトリとは限らない。これらのコマンドはどちらもカレント・ディレクトリにあるmy_programを探す:
$./show_my_cwd$perl show_my_cwd
しかし、プログラムのフルパスを与えれば、別のディレクトリからそのプログラムを実行することができる:
$/home/fred/show_my_cwd$perl /home/fred/show_my_cwd
シェルがプログラムを発見するために検索するディレクトリの1つにプログラミングを置けば、好きなディレクトリからパスヒントなしでプログラムを実行できる:
$ show_my_cwd注
File::Specモジュール(標準ライブラリーの一部)を使えば、相対パスと絶対パスを変換できる。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access