我尝试打开文件夹中的文件列表.最后我想在其中插入一个
HTML-Snippet.到目前为止,我可以打开文件夹并读取数组中的列表.没关系.但是当我尝试使用变量作为文件名打开文件时,我每次都会收到一条错误消息(“权限被拒绝”).无论我使用$_还是将列表项的值放在变量中的其他变体.我在这里找到了类似的问题,但到目前为止还没有找到解决方案.这是我的代码:
use strict; use warnings; my ($line); opendir (FOLDER,"path/to/folder/./") or die "$!"; my @folderlist = readdir(FOLDER); my @sorted_folderlist = sort @folderlist; close(FOLDER); foreach (@sorted_folderlist) { my $filename = $_; open (READ,">","path/to/folder/$filename") or die "$!"; # do something close (READ); }
Pjoern
这是我改变的代码,以回答1:
my $dh; opendir $dh,"dir/./" or die ... my @folderlist = grep { -f "dir/$_" } readdir $dh; close $dh; my @sorted_folderlist = sort @folderlist; foreach my $filename (@sorted_folderlist) { open my $fh,"<","dir/$filename" or die ... open my $writeto,"new/$filename" or die ... print $writeto "$fh"; close $fh; close $writeto; }
解决方法
您的代码中有几个问题.
第一个导致错误的可能是readdir()将返回.和..也,但这些是目录.所以你试着写到目录/ ..
其次,您的错误消息包含$!,这很好,但您不输出文件名.然后你会看到你的错误.
此外,您现在应该使用词法文件句柄.
use strict; use warnings; opendir my $dh,"dir" or die $!; # read all files,not directories my @folderlist = grep { -f "dir/$_" } readdir $dh; close $dh; my @sorted_folderlist = sort @folderlist; foreach my $filename (@sorted_folderlist) { open my $fh,"dir/$filename" or die "Could not write to dir/$filename: $!"; print $fh "foo...\n"; close $fh; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。