コード'if(-e "filename")'は、そのコードを含むスクリプトが実行されるディレクトリに、filenameという名前のファイルが存在するかどうかをテストします。
名前チェックは何をしていますか?Perl?OS?POSIX-osをBashしますか?
'if(-e "cat string")'はLinuxでcatコマンドを実行しますか?
「../file」が親ディレクトリ内のファイルにアクセスするような不要なファイルアクセスを回避できるようにするために知りたいのですが。
チェックコードを共有するには:
if($folder =~ m/$([\\]?\.[\\]?\.|[\\]?\\|[\\]?\/|[\\]?\?|[\\]?*|[\\]?:|[\\]?\||[\\]?\"|[\\]?\<|[\\]?\>)^|$([\\]?\.[\\]?\.|[\\]?\\|[\\]?\/|[\\]?\?|[\\]?*|[\\]?:|[\\]?\||[\\]?\"|[\\]?\<|[\\]?\>)\/|\/([\\]?\.[\\]?\.|[\\]?\\|[\\]?\/|[\\]?\?|[\\]?*|[\\]?:|[\\]?\||[\\]?\"|[\\]?\<|[\\]?\>)\/|\/([\\]?\.[\\]?\.|[\\]?\\|[\\]?\/|[\\]?\?|[\\]?*|[\\]?:|[\\]?\||[\\]?\"|[\\]?\<|[\\]?\>)^|\$'[^']*'/)
{
#error
}
更新された正規表現:
if($folder =~ m/(\/|\\)|$([\\]?\.[\\]?\.^|$[\\]?(\*|\?)^|\$'[^']*'/)
{
#error
}
説明:$folderはすでに純粋なファイル名である必要があります。WindowsまたはPOSIXパスセパレーターが含まれている場合、または(エスケープされた)親ディレクトリのバックリンクである場合、または(エスケープされた)ワイルドカードである場合(最初に一致するファイルと一致し、少なくともMac OS Xでtrueを返すため)、またはCANSIエスケープが含まれている場合どこでもシーケンス、エラーを通知します。それ以外のものは、合法でない場合や日陰の場合でも、単に「ファイルが存在しません」を返す必要があるため、「if(-e $ folder)」に指定できます。