我正在尝试使用以下代码创建目录:
# 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很新,所以如果答案显而易见,我道歉。
答案 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'
。然而,这是毫无意义的,因为它已经存在。