Arrays 如何在Perl中使用for循环创建一个包含8个头/列和20行的哈希数组
我是Perl的初学者,正在学习使用数组和散列。根据我所做的研究,我创建了一个数组>,其中包含一个哈希列的键和值。我不知道如何水平放置标题,并在8个标题下的每一个标题下创建行。再次感谢您的帮助Arrays 如何在Perl中使用for循环创建一个包含8个头/列和20行的哈希数组,arrays,perl,hash,Arrays,Perl,Hash,我是Perl的初学者,正在学习使用数组和散列。根据我所做的研究,我创建了一个数组>,其中包含一个哈希列的键和值。我不知道如何水平放置标题,并在8个标题下的每一个标题下创建行。再次感谢您的帮助 #!/usr/bin/perl # use strict; use warnings; # use 5.010; use Data::Dumper; my %Name = ( Component => 2.2 ); foreach my $name (keys %Name) { p
#!/usr/bin/perl
# use strict;
use warnings;
# use 5.010;
use Data::Dumper;
my %Name = (
Component => 2.2
);
foreach my $name (keys %Name) {
printf "%-8s %s\n", $name, $Name{$name};
}
但这就是我试图在控制台中打印的内容:头(8)和最后一个头是空的
Type Name Rev Id ZZZ ID IP Group Date Released AA Category Project IDs
xxxxxComponent xyz_abc_1234LDO_c7rp1avrusevrmdtop xxxx_2_5 99ccccc1 ABC- RIP-xxxxx 2015-05-03 6:59:09 xxxx
xxxxxComponent xyz_abc_1234LDO_c7rp1avrusevrmdtop xxxx_2_5 99ccccc1 ABC RIP xxxxx 2015-05-03 6:59:09 xxxx
xxxxxComponent xyz_abc_1234LDO_c7rp1avrusevrmdtop xxxx_2_5 99ccccc1 ABC RIP xxxxx 2015-05-03 6:59:09 xxxx
首先,您需要构建一个记录数组,其中数组中的每个项都是散列引用。然后你可以循环通过这些来打印出来 下面是一个简单的例子:
use strict;
use warnings;
my @records =
( { "Type" => "Type A",
"Name" => "Name A",
"Group" => 1 },
{ "Type" => "Type B",
"Name" => "Name B",
"Group" => 2 },
{ "Type" => "Type C",
"Name" => "Name C",
"Group" => 2 },
);
printf "%-8s %-8s %-2s\n",
"Type",
"Name",
"Group";
for my $record (@records) {
printf "%-8s %-8s %-2s\n",
$record->{Type},
$record->{Name},
$record->{Group}
}
其中打印:
Type Name Group
Type A Name A 1
Type B Name B 2
Type C Name C 2
Re“我创建了一个数组>,其中包含一个哈希列的键和值。”您使用一个元素创建了一个哈希。就这样。您希望如何打印您实际上没有的数据?首先解决这个问题。您的程序使用一个名为
组件的键定义一个散列。但是,现在您可以打印此%Name
散列的整行,并且没有一个键等于2.2
。所有的数据都来自哪里?%Name
是否包含此数据?如何将此数据放入%Name
?我们无法帮助您更好地理解数据和程序。谢谢Kevin,您的格式对我理解数组、键、值、哈希和for循环非常有帮助。我想用这段代码展示一下控制台中的输出:我试着用8个列名和20个不同的行来执行这段代码。我对对齐有一些问题。我试过调整“%-8s%-8s%-2s%-8s%-8s%-8s%-8s%-8s%8s\n”有更好的方法吗?例如,使用散列引用读取格式化的txt文件,并在控制台中以对齐方式显示txt文件,或者使用模块?我对安装任何Perl模块都不太熟悉。我是否可以在一个在线IDE中执行它来检查结果?我看到你在询问有关表的问题。使用Text::Table::Tiny的建议很好。所以我想这就是您试图避免安装的模块?您能解释一下您在对齐方面遇到了什么“问题”吗?是的,我没有成功安装Perl模块。我从cpan下载了Text::Table::Tiny,并尝试在cmd中安装。我解压缩了tar.gz文件并运行了Makefile.PL,但它给了我一条消息,告诉作者lib、bin、t文件夹是空的。所以在多次不成功的迭代之后,我决定使用上面的方法。但是我的第一个,三列看起来是对齐的,但是从第四列到第八列看起来不是对齐的。我发现这是因为这些数字-%8s%-8s%-2s。在编写第四列到第八列的程序时,如何确定这些数字?