加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

arrays – perl打开文件,文件名中包含变量

发布时间:2020-12-15 23:34:52 所属栏目:大数据 来源:网络整理
导读:我尝试打开文件夹中的文件列表.最后我想在其中插入一个 HTML-Snippet.到目前为止,我可以打开文件夹并读取数组中的列表.没关系.但是当我尝试使用变量作为文件名打开文件时,我每次都会收到一条错误消息(“权限被拒绝”).无论我使用$_还是将列表项的值放在变量
我尝试打开文件夹中的文件列表.最后我想在其中插入一个 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()将返回.和..也,但这些是目录.所以你试着写到目录/ ..

其次,您的错误消息包含$!,这很好,但您不输出文件名.然后你会看到你的错误.

第三,你调用一个你打开的文件句柄来写READ.

此外,您现在应该使用词法文件句柄.

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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读