回答:
file-test演算子を使用して、指定されたパスに何かが存在するかどうかを-e
テストします。
print "$base_path exists!\n" if -e $base_path;
ただし、このテストは意図したよりも広範囲にわたる可能性があります。上記のコードは、そのパスにプレーンファイルが存在する場合に出力を生成しますが、ディレクトリ、名前付きパイプ、シンボリックリンク、またはよりエキゾチックな可能性に対しても起動します。詳細については、ドキュメントを参照してください。
.TGZ
あなたの質問の拡張子を考えると、代替ではなくプレーンファイルを期待しているようです。-f
ファイルテスト演算子はパスがプレーンファイルにつながるかどうかを尋ねます。
print "$base_path is a plain file!\n" if -f $base_path;
perlfuncのドキュメントは、実際に遭遇する多くの状況をカバーするPerlのファイルテスト演算子の長いリストをカバーしています。
-r
ファイルは有効なuid / gidで読み取り可能です。-w
ファイルは有効なuid / gidによって書き込み可能です。-x
ファイルは有効なuid / gidによって実行可能です。-o
ファイルは有効なuidによって所有されています。-R
ファイルは実際のuid / gidで読み取り可能です。-W
ファイルは実際のuid / gidで書き込み可能です。-X
ファイルは実際のuid / gidで実行可能です。-O
ファイルは実際のuidが所有しています。-e
ファイルが存在しています。-z
ファイルのサイズがゼロです(空です)。-s
ファイルのサイズがゼロ以外です(サイズをバイトで返します)。-f
ファイルはプレーンファイルです。-d
ファイルはディレクトリです。-l
ファイルはシンボリックリンクです(シンボリックリンクがファイルシステムでサポートされていない場合はfalse)。-p
ファイルは名前付きパイプ(FIFO)、またはファイルハンドルはパイプです。-S
ファイルはソケットです。-b
ファイルはブロックスペシャルファイルです。-c
ファイルはキャラクタースペシャルファイルです。-t
ファイルハンドルがttyに対して開かれています。-u
ファイルにsetuidビットが設定されています。-g
ファイルにsetgidビットが設定されています。-k
ファイルにスティッキービットが設定されています。-T
ファイルはASCIIまたはUTF-8テキストファイルです(ヒューリスティックな推測)。-B
ファイルは「バイナリ」ファイルです(の反対-T
)。-M
スクリプトの開始時間からファイルの変更時間を引いた日数。-A
アクセス時間も同じです。-C
iノードの変更時間も同じ(UNIX、他のプラットフォームでは異なる場合があります)
-e
相対パスで機能しますが、あなたの質問を誤解したかもしれません。あなたは持っていますディレクトリの名前をmyMock.TGZ
、あなたはそのディレクトリには、特定の名前のファイルが含まれているかどうかを知りたいですか?例を含むように質問を編集して、より良い回答を提供できるようにしてください!
存在するバリアントが必要な場合があります... perldoc -f "-f"
-X FILEHANDLE
-X EXPR
-X DIRHANDLE
-X A file test, where X is one of the letters listed below. This unary operator takes one argument,
either a filename, a filehandle, or a dirhandle, and tests the associated file to see if something is
true about it. If the argument is omitted, tests $_, except for "-t", which tests STDIN. Unless
otherwise documented, it returns 1 for true and '' for false, or the undefined value if the file
doesn’t exist. Despite the funny names, precedence is the same as any other named unary operator.
The operator may be any of:
-r File is readable by effective uid/gid.
-w File is writable by effective uid/gid.
-x File is executable by effective uid/gid.
-o File is owned by effective uid.
-R File is readable by real uid/gid.
-W File is writable by real uid/gid.
-X File is executable by real uid/gid.
-O File is owned by real uid.
-e File exists.
-z File has zero size (is empty).
-s File has nonzero size (returns size in bytes).
-f File is a plain file.
-d File is a directory.
-l File is a symbolic link.
-p File is a named pipe (FIFO), or Filehandle is a pipe.
-S File is a socket.
-b File is a block special file.
-c File is a character special file.
-t Filehandle is opened to a tty.
-u File has setuid bit set.
-g File has setgid bit set.
-k File has sticky bit set.
-T File is an ASCII text file (heuristic guess).
-B File is a "binary" file (opposite of -T).
-M Script start time minus file modification time, in days.
使用する:
if (-f $filePath)
{
# code
}
-e
ファイルがディレクトリであってもtrueを返します。-f
実際のファイルの場合にのみtrueを返します
#!/usr/bin/perl -w
$fileToLocate = '/whatever/path/for/file/you/are/searching/MyFile.txt';
if (-e $fileToLocate) {
print "File is present";
}
if(-e $base_path){print "Something";}
トリックを行います