perl如何用一个数组储存多个文件句柄?

Database_PGCs 2010-04-29 03:19:25
最近工作需要要处理大量的文件,格式基本相同,处理的操作也相同。
想用一个文件句柄数组来存储文件句柄
比如:
my @filehandler = qw("A" "B");
my @file_directory = qw(D:/Cuijian/ID_conversion.pl D:/Cuijian/ID_conversion.pl);

my $i = 0;

for($i = 0; i$ < length(@filehandler); $i++)
{
open($filehandler[$i], "$file_directory[$i]")|| die "cannot open the file at $!"; # ask here
while($filehandler[$i])
{
print $_;
}
}

但是,有几个问题:
1. 这样打印的东西就是: 文件句柄数组中的内容: “A”“B”
2. 而且不能加上: use strict
3. 但是如果只定义一个变量如 : $filehandler = "A" 时,结果没有问题
请大家提出解决方案
...全文
462 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Database_PGCs 2010-05-06
  • 打赏
  • 举报
回复
print $line显示的是 MOUSE
Database_PGCs 2010-05-06
  • 打赏
  • 举报
回复
不知当时是怎么答得,几天发现还是不可以,即使用my @filehandler = ($A, $B);
my $M = "MOUSE"; my $H = HUMAN; my $M_P = MOUSE_PROCESSED; my $H_P = HUMAN_PROCESSED;
my @filehandler = ($M, $H);
my @path = qw(D:/Project-3-14-primordial germ cell/KEGG/PPI/BIOGRID/mouse.txt D:/Project-3-14-primordial germ cell/KEGG/PPI/BIOGRID/human.txt);
open ($filehandler[0], "$path[0]") || die "cannot open file at $!";
while ($line = <$filehandler[0]>)
{
chomp();
print $line;
}

结果是:MOUSE
Database_PGCs 2010-04-29
  • 打赏
  • 举报
回复
明白了,thanks
Aylazhang 2010-04-29
  • 打赏
  • 举报
回复
避免用光字做句柄。用本地变量。


my @filehandler = ($A, $B);
my @file_directory = qw(D:/Cuijian/ID_conversion.pl D:/Cuijian/ID_conversion.pl);

my $i = 0;

for($i = 0; i$ < length(@filehandler); $i++)
{
open($filehandler[$i], "$file_directory[$i]")|| die "cannot open the file at $!"; # ask here
while($filehandler[$i])
{
print $_;
}
}
Database_PGCs 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aylazhang 的回复:]

Perl code
my @file_directory = qw(D:/Cuijian/ID_conversion.pl D:/Cuijian/ID_conversion.pl);

for my $dir (@file_directory) {
open my $file , $dir || die "cannot open the file at $!"
while (<……
[/Quote]
这个应该行得通,不过,我的问题是如何存储多个文件句柄$file应该是一个数组,和$dir一样变化的
Aylazhang 2010-04-29
  • 打赏
  • 举报
回复
my @file_directory = qw(D:/Cuijian/ID_conversion.pl D:/Cuijian/ID_conversion.pl);

for my $dir (@file_directory) {
open my $file , $dir || die "cannot open the file at $!"
while (<$file>) {
}
close $file;
}

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧