Mkdir perl错误:没有这样的文件

时间:2016-02-22 20:35:46

标签: perl

我正在尝试使用以下代码创建目录:

# reads in files from a corpus
    for my $corpusFile (glob("./Corpus/*.txt")) {

    # makes part of the name of the file the name for a directory
    my $file = substr ($corpusFile, 9, 6);
    my $outputFiles = "./Output/$file";
    mkdir $outputFiles unless -e $outputFiles or die "Cannot make file directory: $!";

然而,我收到错误: Cannot make file directory: No such file or directory at perl/corpus.pl

我真的不明白这个错误。当然目录不存在 - 我正在尝试创建它。

稍微解释一下我的文件结构:我有一个包含“output”文件夹和“perl”文件夹的大文件夹 - 我的perl代码位于名为“perl”的文件夹中,我正在尝试创建一个目录在“输出”。我对perl很新,所以如果答案显而易见,我道歉。

1 个答案:

答案 0 :(得分:4)

如果你看一下这个表达式:

mkdir $outputFiles 
    unless -e $outputFiles 
or die "Cannot make file directory: $!";

由Perl解析,答案很明显。您可以看到如何使用(-p打印括号)解析它:

perl -MO=Deparse,-p \ 
     -e 'mkdir "foo" unless -e "foo" or die "Cannot create foo: $!"

产生

(((-e 'foo') or die("Cannot create foo: $!")) or mkdir('foo'));
-e syntax OK

现在你应该能够看到这个问题,根据上面的表达式:

1)如果目录'foo'不存在,程序将会消息'Cannot create foo: No such file or directory'

2)如果目录'foo'确实存在,程序将调用mkdir 'foo'。然而,这是毫无意义的,因为它已经存在。