我想从一个输入文件中按顺序得到水果和信息(从第1行阅读并继续)。下面的代码以任意随机顺序打印水果和信息,每次运行脚本都会生成不同的顺序,而不是从第1行读取。有什么建议吗?
我有一个输入文件,如下所示
apple
text1
text2
grape
text3
text4
jackfruit
text5
这是我必须调用每个水果和信息的代码
use strict;
use warnings;
my %hash;
open FILE, "config.txt" or die $!;
my $key;
while (my $line = <FILE>) {
chomp($line);
if ($line !~ /^\s/) {
$key = $line;
#$hash{$key} = [];
} else {
$line =~ s/\s//g;
push (@{ $hash{$key} }, $line);
}
}
close FILE;
my %final;
foreach my $fruit (keys %hash){
foreach my $info (values @{$hash{$fruit}}){
print "Fruit: $fruit\n";
print "Info for $fruit = $info\n";
}
}
2条答案
按热度按时间mrphzbgm1#
给你一个来自哈希的键的数组,但是没有排序。你可以用命令
sort
排序它整条线都是
使用
perldoc -f sort
获得排序函数的帮助。nnsrf1az2#
如果你想按照文件中的顺序来保存数据,可以使用一个数组,数组中的每个元素都可以是一个散列来组织数据:
输出保持文件中的顺序:
但是,如果您希望按照文件的顺序保存它们,并且只输出它们,则不需要数据结构:
如果您希望输出略有不同,其中每行都需要知道水果,请将该名称存储在
while
循环中的一个持久性变量中: