首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl新手...chomp有问题

perl新手...chomp有问题
EN

Stack Overflow用户
提问于 2011-11-07 11:53:06
回答 1查看 461关注 0票数 1

我正在尝试学习perl编程,并使用它来读取竞赛中的一个文件;

代码语言:javascript
复制
#!/usr/local/bin/perl
use warnings;

open(FILE, <~/source/test.txt>);
@array = <FILE>;
$number = shift @array;

while($number--) {
    chomp($key = shift @array);
    chomp($message = shift @array);

    print "Key: $key";
    print "Message: $message";
}
print "\n";
close(FILE);

该文件包含一个数字,N,然后有2*N行,这是有多少个密钥/消息对。

但是当我执行这个程序时,它只打印出最后一条“消息”,而不打印其他内容。它不打印任何其他内容。如果我移除了这些大块,它就能正常工作,但是有了这些大块,它就会把所有东西都切掉…你知道为什么吗?

//EDIT:删除-w

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-07 12:22:44

您正在读取unix机器上的DOS/Win文本文件。使用chomp,您删除了"CRLF“的"LF”,但保留了"CR",导致所有行都显示在另一行之上。

代码语言:javascript
复制
#!/usr/local/bin/perl -w
use strict;   # Do use this!
use warnings;

open(my $fh, '<', "$ENV{HOME}/source/test.txt") or die $!;
my @array = <$fh>;
s/\s+\z// for @array;  # Universal chomp

my $number = shift(@array);
while ($number--) {
   my $key     = shift(@array);
   my $message = shift(@array);

   print "Key: $key\n";
   print "Message: $message\n";
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8032549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档