Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用perl检查Linux中是否存在目录_Linux_Perl_Directory - Fatal编程技术网

使用perl检查Linux中是否存在目录

使用perl检查Linux中是否存在目录,linux,perl,directory,Linux,Perl,Directory,我使用perl在linux中编程。我正在创建一个程序,用户可以在其中输入目录和文件名。然后程序将检查给定的目录是否存在,并在该目录中搜索给定的文件名。但我的问题是验证输入的目录是否有效。必须指定目录的路径是绝对路径还是相对路径。如果它是绝对值,您可以使用-e检查它是否存在,并使用-d检查给定的输入是否为目录 if ( -e $dir and -d $dir) { print "\nyour folder exists"; } 如果路径是相对的,则必须创建绝对路径。为此,您必须将drvi


我使用perl在linux中编程。我正在创建一个程序,用户可以在其中输入目录和文件名。然后程序将检查给定的目录是否存在,并在该目录中搜索给定的文件名。但我的问题是验证输入的目录是否有效。

必须指定目录的路径是绝对路径还是相对路径。如果它是绝对值,您可以使用
-e
检查它是否存在,并使用
-d
检查给定的输入是否为目录

if ( -e $dir and -d $dir) {
    print "\nyour folder exists";
}
如果路径是相对的,则必须创建绝对路径。为此,您必须将drvives用作
$base
(您需要为每个驱动器执行此操作),然后使用
rel2abs
为给定的相对路径查找绝对路径。如果文件夹存在,
$abs\u path
将包含绝对路径,否则其值将为未定义。下面是使用驱动器
c:\
上的相对路径搜索文件夹的示例:

$base = 'c:\';
$abs_path = File::Spec->rel2abs( $relative_path ) ;
$abs_path = File::Spec->rel2abs( $relative_path, $base ) ;
if ( defined $abs_path ) {
    print "\n folder exists ";
}

有关更多选项,请参见

查看文件测试操作符和Hi Hakon,是的,我也尝试过,但我得到的是,每次输入有效和无效目录时,它总是返回true。好的,请将代码作为内联文本而不是图像链接发布。很抱歉,这里是第一次:(而且,我不知道如何复制和粘贴。)Linux@hakon现在,我添加了一个带有文件测试操作符
子目录{
my$direc=$\u0];
if的函数(-e$direc和-d$direc){
print“是一个目录\n”
}否则{
`}
}
对于目录,用户输入一个相对路径。示例:/data/edbcp/tmpwks。然后用户必须输入文件名。示例:sample.pl。之后,我必须附加目录和文件名,然后验证该文件名是否存在于该目录中。Edid您的注释并将有效链接放在“此处”这些文件夹是相对于特定文件夹的?或者它们可以位于硬盘上的任何位置?这些文件夹可以位于Linux硬盘上的任何位置。我只在某个文件夹中运行perl文件。现在,我添加了一个带有文件测试操作符的函数
子目录{
我的$direc=$\u0];
如果(-e$direc和-d$direc){
print”是一个目录\n;
}否则{
打印“不是目录!\n”
`code>
}