免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10303 | 回复: 7
打印 上一主题 下一主题

如何同时打开多个文件句柄? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-15 10:52 |只看该作者 |倒序浏览
我需要同时写入多个文件(几十个或上百个),但是得根据不同的条件来判断应该将内容写入到哪个句柄,现在碰到的问题是如何将数据写入到指定的句柄中,即如何用变量与原来打开的句柄进行对应,谢谢
for(1..10){
  open $_ ">$_" or die;
}

for(1..10000){

  if(test1){写到句柄1,但问题是如何来指定刚才打开的句柄1,直接print $i "kkkk\n";是不行的(此时$i的值为1),请指点,谢谢
}

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-05-15 11:15 |只看该作者
用 hash。
  1. for(1..10){
  2.     open $handles{$_}, ">$_" or die;
  3. }

  4. for(1..10000){
  5.     if(test1){
  6.         print $handles{$i} "blablabla";
  7.     }
  8. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-05-15 11:28 |只看该作者
谢谢回复,我做了如下的测试,总是报错,是不是用这种句柄打印的时候与常规的有所不同啊?
#!/usr/bin/perl -w
use strict;
use warnings;
use FileHandle;

my %fh;

my @array = (1..10);

for(1..5){
        open $fh{$_},">$_.txt" or die;
}
for(1..5){

        print $fh{$_} "$_\n";
}

#perl -c a.pl
String found where operator expected at a.pl line 15, near "} "$_\n""
        (Missing operator before  "$_\n"?)
syntax error at a.pl line 15, near "} "$_\n""
a.pl had compilation errors.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2007-05-15 12:53 |只看该作者
那就用 $fh{$_}->print( "$_\n" );

论坛徽章:
0
5 [报告]
发表于 2007-05-15 12:59 |只看该作者
这回可以了,谢谢

论坛徽章:
0
6 [报告]
发表于 2007-05-15 14:01 |只看该作者
flw 能解释一下  $fh{$_}->print( "$_\n" ) 吗? 谢谢

论坛徽章:
0
7 [报告]
发表于 2007-05-15 17:02 |只看该作者
用到了FileHandle里的函数了

论坛徽章:
0
8 [报告]
发表于 2007-05-16 13:38 |只看该作者

  1. my %fh;
  2. for(1..5){
  3.         open $fh{$_},">$_.txt" or die;
  4. }
  5. for(1..5){
  6.         my $h = $fh{$_};
  7.         print $h "aaaa\n";
  8. }
复制代码

也可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP