免费注册 查看新帖 |

Chinaunix

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

循环读入文件和数组读入文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-26 10:12 |只看该作者 |倒序浏览
while(<handle>){print $_;}

while(defined($a=<handle>)){print $a;}

@a=<handle>;print "@a\n";

这3个读取文本的操作有什么差别呢?

论坛徽章:
0
2 [报告]
发表于 2006-04-26 10:21 |只看该作者
前2者没什么区别。第3者是将文件读入一个数组,等于是全部读入内存,如果文件很大,会影响系统效率。

论坛徽章:
0
3 [报告]
发表于 2006-04-26 10:29 |只看该作者
我也发现了,再加一个
foreach $as(<handle>)
{print "$a";}

这样就可以避免占内存了

论坛徽章:
0
4 [报告]
发表于 2006-04-26 10:32 |只看该作者
附加一个问题,对于文本中的东西,我需要全文倒叙和每行倒叙
每行倒叙可以用foreach做
全文倒叙怎么办?用数组很占内存的.

论坛徽章:
0
5 [报告]
发表于 2011-04-14 16:28 |只看该作者
挖坟一下。今天做了一个。结果失败了。

#!/usr/bin/perl

use warnings;
use strict;

my $host_data_path="/usr/local/src/vhosts/host_data_file";

open(HOST_DATA,$host_data_path) || die("cannot open host_data_file");


while(<HOST_DATA>){
    #print $_; 可以输出每行来
    my @a=$_;
    print my $a[1];=====失败了
    #print length $_;====能输出每行的长度
    print "\n";
}



close HOST_DATA;

论坛徽章:
0
6 [报告]
发表于 2011-04-14 16:31 |只看该作者
改用split。终于读取来了。


my @r=split /\s+/,$_;

print $r[1],"=====",@r[0];

论坛徽章:
0
7 [报告]
发表于 2011-04-14 16:47 |只看该作者
perl -e 'print reverse <>;' file

论坛徽章:
0
8 [报告]
发表于 2011-04-14 23:55 |只看该作者
学习下,花仙子赞

论坛徽章:
0
9 [报告]
发表于 2011-04-15 03:42 |只看该作者
恩,我一般习惯第一种,这样可以对每一行文本更方便进行处理

论坛徽章:
0
10 [报告]
发表于 2011-04-15 05:36 |只看该作者
  1. print while <>;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP