【Ruby3.x】FNM_SHORTNAME定数の使い方
FNM_SHORTNAME定数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
FNM_SHORTNAME定数は、Rubyにおけるファイル名のパターンマッチング(ワイルドカードを用いたファイル名の一致判定)の挙動を制御するためのフラグの一つを表す定数です。
この定数は、主にFile.fnmatchメソッドやDir.globメソッドといった、ファイル名のパターンマッチング機能を実行する際にオプションとして指定されます。FNM_SHORTNAME定数を指定することによって、パターン中のワイルドカード文字(*や?)がパス区切り文字(例えば、Unix系のシステムではスラッシュ/、Windowsではバックスラッシュ\)にマッチしないように振る舞いが制御されます。
具体的には、*(アスタリスク)は通常、パス区切り文字を含まない任意の文字列にマッチします。例えば、パターンが*.logであれば、app.logにはマッチしますが、data/app.log全体にはマッチしません。FNM_SHORTNAME定数は、このようなワイルドカードの標準的な解釈、つまり「ワイルドカードはパス区切り文字を越えてマッチしない」という挙動を明示的に指定するためのものです。これにより、*や?といったワイルドカードが意図せずにディレクトリ階層をまたいでマッチしてしまうことを防ぎ、より厳密で安全なファイル名のパターンマッチングを実現できます。
特に**(二重アスタリスク)は特別なワイルドカードで、FNM_SHORTNAME定数の影響を受けずにパス区切り文字を含む複数のディレクトリレベルにマッチする場合がありますが、*や?に関しては、この定数によって振る舞いが明確に制限されます。この定数は、システム内で特定のディレクトリ階層内のファイルのみを対象としたい場合や、意図しないファイルが選択されるのを防ぎたい場合に有用です。
構文(syntax)
1File::FNM_SHORTNAME
引数(parameters)
引数なし
引数はありません
戻り値(return)
Integer
FNM_SHORTNAME は、ファイル名マッチングの際に短いファイル名を優先するかどうかを示す定数です。この定数は整数値で表されます。