所以我试图用下面的代码做的是推一个字符串,让我们说“这个字符串”到散列中每个键的末尾。我完全不知道如何做到这一点。这是我的代码:
use warnings;
use strict;
use File::Find;
my @name;
my $filename;
my $line;
my @severity = ();
my @files;
my @info = ();
my $key;
my %hoa;
my $xmlfile;
my $comment;
my @comments;
open( OUTPUT, "> $ARGV[0]" );
my $dir = 'c:/programs/TEST/Test';
while ( defined( $input = glob( $dir . "\\*.txt" ) ) ) {
open( INPUT, "< $input" );
while (<INPUT>) {
chomp;
if (/File/) {
my @line = split /:/;
$key = $line[1];
push @{ $hoa{$key} }, "Filename\n";
}
if ( /XML/ ... /File/ ) {
$xmlfile = $1;
push @{ $hoa{$key} }, "XML file is $xmlfile\n";
}
if (/Important/) {
push @{ $hoa{$key} }, "Severity is $_\n";
}
if (/^\D/) {
next if /Important/;
push @{ $hoa{$key} }, "Given comment is $_\n";
}
push @{ $hoa{$key} }, "this string\n";
}
}
foreach my $k ( keys %hoa ) {
my @list = @{ $hoa{$k} };
foreach my $l (@list) {
print OUTPUT $l, "\n";
}
}
}
close INPUT;
close OUTPUT;
我有“这个字符串”的地方是我试图将该字符串推到数组末尾的地方。然而,最终发生的是它最终打印了三遍“这个字符串”,而不是像我想要的那样在每个键的末尾。当我试图把它放在 while() 循环之外时,它说 $key 的值没有被初始化。所以请,有什么帮助吗?如果您需要澄清我的问题,请告诉我。谢谢!