我如何循环第一行中的每个元素,然后移动到第二行,依此类推...... 下面的脚本有点工作,但我没有获得所需的输出。 有人可以帮助我。
的test.txt
ABC-13077 817266 55555
ABC-13092 816933
CAMC-13093 817361
script.pl
#!/usr/bin/perl -w
use strict;
my %hash = ();
my $file = "test.txt";
open (my $fh, "<", $file) or die "Can't open the file $file: ";
while (my $line =<$fh>)
{
chomp ($line);
my($key) = split(/\+s/, $line);
$hash{$key} = 1;
}
foreach my $key (keys %hash)
{
print "$key\n";
print "loop\n";
}
当前output.txt
ABC-13077 817266 55555
loop
ABC-13092 816933
loop
CAMC-13093 817361
所需的output.txt
ABC-13077
817266
55555
loop
ABC-13092
816933
loop
CAMC-13093
817361
答案 0 :(得分:1)
首先,您需要将/\+s/
更改为/\s+/
。
其次,您可以将数据存储到数组哈希(perldsc):
use warnings;
use strict;
my %hash = ();
while (my $line =<DATA>)
{
chomp ($line);
my ($key, @vals) = split(/\s+/, $line);
$hash{$key} = [@vals];
}
foreach my $key (sort keys %hash)
{
print "$key\n";
print "$_\n" for @{ $hash{$key} };
print "loop\n";
}
__DATA__
ABC-13077 817266 55555
ABC-13092 816933
CAMC-13093 817361
输出:
ABC-13077
817266
55555
loop
ABC-13092
816933
loop
CAMC-13093
817361
loop