如何从hash-perl打印文本文件的所有行

时间:2015-06-18 13:28:41

标签: perl

我正在阅读一个文本文件,里面有多行。我被分配了一个任务来使用哈希打印行。

use strict;
use warnings;

my %hash = ();
my $key;

open (my $fh , "<","test.txt") or die "can not open the file $!\n";

while (my $line =<$fh>)
{
    chomp ($line);
    my($key, $number) = split("\n", $line)
    $hash{$key} = [ $count, $number ];
} 

以下是我尝试过的内容:

代码:

id  date   name  orderID
========================
1   1502   John    ?
2   1502   Jane    ?

我无法理解哈希中的关键是什么。有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:3)

你有

while (my $line =<$fh>)

通过$fh读取单个记录。 Perl中的默认输入记录分隔符是"\n",这意味着您将逐行读取文件。根据定义,单行具有单行终止符。

chomp ($line);

然后从"\n"中的字符串中删除此单$line

因此,

my($key, $number) = split("\n", $line);

$line复制到$key,并$number未定义,因为"\n"中没有$line。即使你没有chomp编辑该行,$number也不会包含任何有用的内容,因为根据定义,行终止符将位于行的末尾,并且在它之后将没有任何内容它标志着该行的结束。

如果文件包含以下内容:

key1
value1
key2
value2

然后你可以一次阅读这些。