使用Perl在目录中创建文件

5
我该如何使用Perl中的open()函数在已存在的目录中创建新文件并进行写入?
我尝试了以下代码:
my $existingdir = './mydirectory';

open my $fileHandle, ">>", "$existingdir/filetocreate.txt" or die "Can't open '$existingdir/filetocreate.txt'\n";

但这并不起作用。

4
不要使用“无法打开...”,而是使用“无法打开...:$!”,以了解错误的确切原因。可能是./mydirectory不存在,或者您没有写入权限。 - Himanshu
1
如果mydirectory存在于当前工作目录中并且您有在其中创建的权限,则可以正常工作。 - ikegami
1
是的,这段代码对我来说运行良好。另一件要检查的事情是:您确定Perl的当前工作目录是您想要的吗?请使用CWD进行检查:http://perldoc.perl.org/Cwd.html - dan1111
2个回答

13
my $existingdir = './mydirectory';
mkdir $existingdir unless -d $existingdir; # Check if dir exists. If not create it.
open my $fileHandle, ">>", "$existingdir/filetocreate.txt" or die "Can't open '$existingdir/filetocreate.txt'\n";
print $fileHandle "FooBar!\n";
close $fileHandle;

这个对你应该有效。


-1 楼主想要在“现有目录”中创建一个文件。这可能使脚本不会崩溃,但它并不能诊断和解决实际问题。 - dan1111
2
好的,我看到答案被接受了。虽然我认为我的观点依然成立,但既然你成功地读懂了提问者的真正问题,我会撤回我的反对票! - dan1111
2
最好使用File::Path中的mkpath而不是mkdir - ikegami

1
my $FILE;

open($FILE, ">>File.txt")||die("Cannot open file:".$!);

close($FILE);

您可以在File.txt的位置附加目录位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接